if (check_file) {
rc = check_file(fd_src);
if (rc < 0)
- break;
+ goto out;
}
rsize = read(fd_src, buf, buf_size);
if (rsize < 0) {
rc = -errno;
- break;
+ goto out;
}
+
rpos += rsize;
bufoff = 0;
}
+
/* eof ? */
if (rsize == 0)
break;
bufoff += wsize;
}
- if (rc == 0) {
- rc = fsync(fd_dst);
- if (rc < 0)
- rc = -errno;
- }
+ rc = fsync(fd_dst);
+ if (rc < 0)
+ rc = -errno;
+out:
+ /* Try to avoid page cache pollution after migration. */
+ (void)posix_fadvise(fd_src, 0, 0, POSIX_FADV_DONTNEED);
+ (void)posix_fadvise(fd_dst, 0, 0, POSIX_FADV_DONTNEED);
free(buf);
return rc;
}
}
llapi_layout_comp_flags_set(m_layout, flags);
- rc = migrate_open_files(name, 0, NULL, m_layout, &fd, &fdv);
+ rc = migrate_open_files(name, MIGRATION_NONDIRECT, NULL, m_layout, &fd,
+ &fdv);
if (rc < 0)
goto out;