sync_file_range doesn't work with some file systems in an expected way so just use fdatasync instead. Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp> --- usr/bs_rdwr.c | 2 +- usr/util.h | 21 --------------------- 2 files changed, 1 insertions(+), 22 deletions(-) diff --git a/usr/bs_rdwr.c b/usr/bs_rdwr.c index 4003996..1ee044a 100644 --- a/usr/bs_rdwr.c +++ b/usr/bs_rdwr.c @@ -50,7 +50,7 @@ static void bs_sync_sync_range(struct scsi_cmd *cmd, uint32_t length, { int ret; - ret = __sync_file_range(cmd->dev->fd, cmd->offset, length); + ret = fdatasync(cmd->dev->fd); if (ret) set_medium_error(result, key, asc); } diff --git a/usr/util.h b/usr/util.h index 9530d2a..d4e9406 100644 --- a/usr/util.h +++ b/usr/util.h @@ -100,27 +100,6 @@ do { \ extern unsigned long pagesize, pageshift; -#if defined (SYNC_FILE_RANGE_WAIT_BEFORE) && \ - (defined(__NR_sync_file_range) || defined(__NR_sync_file_range2)) -static inline int __sync_file_range(int fd, __off64_t offset, __off64_t bytes) -{ - int ret; -#if defined(__NR_sync_file_range) - long int n = __NR_sync_file_range; -#else - long int n = __NR_sync_file_range2; -#endif - unsigned int flags = SYNC_FILE_RANGE_WAIT_BEFORE | SYNC_FILE_RANGE_WRITE - | SYNC_FILE_RANGE_WAIT_AFTER; - ret = syscall(n, fd, offset, bytes, flags); - if (ret) - ret = fsync(fd); - return ret; -} -#else -#define __sync_file_range(fd, offset, bytes) fsync(fd) -#endif - #if defined(__NR_signalfd) && defined(USE_SIGNALFD) /* -- 1.7.2.5 -- To unsubscribe from this list: send the line "unsubscribe stgt" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html |