diff options
Diffstat (limited to 'fs/sync.c')
-rw-r--r-- | fs/sync.c | 13 |
1 files changed, 5 insertions, 8 deletions
@@ -295,10 +295,11 @@ SYSCALL_DEFINE1(fdatasync, unsigned int, fd) | |||
295 | */ | 295 | */ |
296 | int generic_write_sync(struct file *file, loff_t pos, loff_t count) | 296 | int generic_write_sync(struct file *file, loff_t pos, loff_t count) |
297 | { | 297 | { |
298 | if (!(file->f_flags & O_SYNC) && !IS_SYNC(file->f_mapping->host)) | 298 | if (!(file->f_flags & O_DSYNC) && !IS_SYNC(file->f_mapping->host)) |
299 | return 0; | 299 | return 0; |
300 | return vfs_fsync_range(file, file->f_path.dentry, pos, | 300 | return vfs_fsync_range(file, file->f_path.dentry, pos, |
301 | pos + count - 1, 1); | 301 | pos + count - 1, |
302 | (file->f_flags & __O_SYNC) ? 0 : 1); | ||
302 | } | 303 | } |
303 | EXPORT_SYMBOL(generic_write_sync); | 304 | EXPORT_SYMBOL(generic_write_sync); |
304 | 305 | ||
@@ -452,9 +453,7 @@ int do_sync_mapping_range(struct address_space *mapping, loff_t offset, | |||
452 | 453 | ||
453 | ret = 0; | 454 | ret = 0; |
454 | if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) { | 455 | if (flags & SYNC_FILE_RANGE_WAIT_BEFORE) { |
455 | ret = wait_on_page_writeback_range(mapping, | 456 | ret = filemap_fdatawait_range(mapping, offset, endbyte); |
456 | offset >> PAGE_CACHE_SHIFT, | ||
457 | endbyte >> PAGE_CACHE_SHIFT); | ||
458 | if (ret < 0) | 457 | if (ret < 0) |
459 | goto out; | 458 | goto out; |
460 | } | 459 | } |
@@ -467,9 +466,7 @@ int do_sync_mapping_range(struct address_space *mapping, loff_t offset, | |||
467 | } | 466 | } |
468 | 467 | ||
469 | if (flags & SYNC_FILE_RANGE_WAIT_AFTER) { | 468 | if (flags & SYNC_FILE_RANGE_WAIT_AFTER) { |
470 | ret = wait_on_page_writeback_range(mapping, | 469 | ret = filemap_fdatawait_range(mapping, offset, endbyte); |
471 | offset >> PAGE_CACHE_SHIFT, | ||
472 | endbyte >> PAGE_CACHE_SHIFT); | ||
473 | } | 470 | } |
474 | out: | 471 | out: |
475 | return ret; | 472 | return ret; |