- if (last_sparse) {
- do_lseek(f,-1,SEEK_CUR);
-- return (write(f,&last_byte,1) == 1 ? 0 : -1);
-+ return (fadv_write(f,&last_byte,1) == 1 ? 0 : -1);
- }
- last_sparse = 0;
- return 0;
-@@ -61,7 +64,7 @@ static int write_sparse(int f,char *buf,
- if (l1 == len)
- return len;
-
-- ret = write(f, buf + l1, len - (l1+l2));
-+ ret = fadv_write(f, buf + l1, len - (l1+l2));
- if (ret == -1 || ret == 0)
- return ret;
- else if (ret != (int) (len - (l1+l2)))
-@@ -84,7 +87,7 @@ int flush_write_file(int f)
- char *bp = wf_writeBuf;
-
- while (wf_writeBufCnt > 0) {
-- if ((ret = write(f, bp, wf_writeBufCnt)) < 0) {
-+ if ((ret = fadv_write(f, bp, wf_writeBufCnt)) < 0) {
- if (errno == EINTR)
- continue;
- return ret;
-@@ -235,7 +238,7 @@ char *map_ptr(struct map_struct *map, OF
- map->p_len = window_size;
-
- while (read_size > 0) {
-- nread = read(map->fd, map->p + read_offset, read_size);
-+ nread = fadv_read(map->fd, map->p + read_offset, read_size);
- if (nread <= 0) {
- if (!map->status)
- map->status = nread ? errno : ENODATA;
---- old/generator.c
-+++ new/generator.c
-@@ -1614,18 +1614,18 @@ static void recv_generator(char *fname,
-
- if (inplace && make_backups > 0 && fnamecmp_type == FNAMECMP_FNAME) {
- if (!(backupptr = get_backup_name(fname))) {
-- close(fd);
-+ fadv_close(fd);
- goto cleanup;
- }
- if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS))) {
-- close(fd);
-+ fadv_close(fd);
- goto pretend_missing;
- }
- if (robust_unlink(backupptr) && errno != ENOENT) {
- rsyserr(FERROR, errno, "unlink %s",
- full_fname(backupptr));
- unmake_file(back_file);
-- close(fd);
-+ fadv_close(fd);
- goto cleanup;
- }
- if ((f_copy = do_open(backupptr,
-@@ -1633,7 +1633,7 @@ static void recv_generator(char *fname,
- rsyserr(FERROR, errno, "open %s",
- full_fname(backupptr));
- unmake_file(back_file);
-- close(fd);
-+ fadv_close(fd);
- goto cleanup;
- }
- fnamecmp_type = FNAMECMP_BACKUP;
-@@ -1695,7 +1695,7 @@ static void recv_generator(char *fname,
- generate_and_send_sums(fd, sx.st.st_size, f_out, f_copy);