diff options
| -rw-r--r-- | fs/afs/internal.h | 1 | ||||
| -rw-r--r-- | fs/afs/super.c | 1 | ||||
| -rw-r--r-- | fs/afs/write.c | 21 | ||||
| -rw-r--r-- | fs/fs-writeback.c | 15 | ||||
| -rw-r--r-- | fs/nfs/inode.c | 7 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 4 |
6 files changed, 11 insertions, 38 deletions
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 6ece2a13bf71..c54dad4e6063 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h | |||
| @@ -733,7 +733,6 @@ extern int afs_write_end(struct file *file, struct address_space *mapping, | |||
| 733 | struct page *page, void *fsdata); | 733 | struct page *page, void *fsdata); |
| 734 | extern int afs_writepage(struct page *, struct writeback_control *); | 734 | extern int afs_writepage(struct page *, struct writeback_control *); |
| 735 | extern int afs_writepages(struct address_space *, struct writeback_control *); | 735 | extern int afs_writepages(struct address_space *, struct writeback_control *); |
| 736 | extern int afs_write_inode(struct inode *, int); | ||
| 737 | extern void afs_pages_written_back(struct afs_vnode *, struct afs_call *); | 736 | extern void afs_pages_written_back(struct afs_vnode *, struct afs_call *); |
| 738 | extern ssize_t afs_file_write(struct kiocb *, const struct iovec *, | 737 | extern ssize_t afs_file_write(struct kiocb *, const struct iovec *, |
| 739 | unsigned long, loff_t); | 738 | unsigned long, loff_t); |
diff --git a/fs/afs/super.c b/fs/afs/super.c index e1ea1c240b6a..14f6431598ad 100644 --- a/fs/afs/super.c +++ b/fs/afs/super.c | |||
| @@ -48,7 +48,6 @@ struct file_system_type afs_fs_type = { | |||
| 48 | static const struct super_operations afs_super_ops = { | 48 | static const struct super_operations afs_super_ops = { |
| 49 | .statfs = afs_statfs, | 49 | .statfs = afs_statfs, |
| 50 | .alloc_inode = afs_alloc_inode, | 50 | .alloc_inode = afs_alloc_inode, |
| 51 | .write_inode = afs_write_inode, | ||
| 52 | .destroy_inode = afs_destroy_inode, | 51 | .destroy_inode = afs_destroy_inode, |
| 53 | .clear_inode = afs_clear_inode, | 52 | .clear_inode = afs_clear_inode, |
| 54 | .put_super = afs_put_super, | 53 | .put_super = afs_put_super, |
diff --git a/fs/afs/write.c b/fs/afs/write.c index 5e15a21dbf9f..3bed54a294d4 100644 --- a/fs/afs/write.c +++ b/fs/afs/write.c | |||
| @@ -585,27 +585,6 @@ int afs_writepages(struct address_space *mapping, | |||
| 585 | } | 585 | } |
| 586 | 586 | ||
| 587 | /* | 587 | /* |
| 588 | * write an inode back | ||
| 589 | */ | ||
| 590 | int afs_write_inode(struct inode *inode, int sync) | ||
| 591 | { | ||
| 592 | struct afs_vnode *vnode = AFS_FS_I(inode); | ||
| 593 | int ret; | ||
| 594 | |||
| 595 | _enter("{%x:%u},", vnode->fid.vid, vnode->fid.vnode); | ||
| 596 | |||
| 597 | ret = 0; | ||
| 598 | if (sync) { | ||
| 599 | ret = filemap_fdatawait(inode->i_mapping); | ||
| 600 | if (ret < 0) | ||
| 601 | __mark_inode_dirty(inode, I_DIRTY_DATASYNC); | ||
| 602 | } | ||
| 603 | |||
| 604 | _leave(" = %d", ret); | ||
| 605 | return ret; | ||
| 606 | } | ||
| 607 | |||
| 608 | /* | ||
| 609 | * completion of write to server | 588 | * completion of write to server |
| 610 | */ | 589 | */ |
| 611 | void afs_pages_written_back(struct afs_vnode *vnode, struct afs_call *call) | 590 | void afs_pages_written_back(struct afs_vnode *vnode, struct afs_call *call) |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1a7c42c64ff4..5f2721b1e4be 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
| @@ -461,15 +461,20 @@ writeback_single_inode(struct inode *inode, struct writeback_control *wbc) | |||
| 461 | 461 | ||
| 462 | ret = do_writepages(mapping, wbc); | 462 | ret = do_writepages(mapping, wbc); |
| 463 | 463 | ||
| 464 | /* Don't write the inode if only I_DIRTY_PAGES was set */ | 464 | /* |
| 465 | if (dirty & (I_DIRTY_SYNC | I_DIRTY_DATASYNC)) { | 465 | * Make sure to wait on the data before writing out the metadata. |
| 466 | int err = write_inode(inode, wait); | 466 | * This is important for filesystems that modify metadata on data |
| 467 | * I/O completion. | ||
| 468 | */ | ||
| 469 | if (wait) { | ||
| 470 | int err = filemap_fdatawait(mapping); | ||
| 467 | if (ret == 0) | 471 | if (ret == 0) |
| 468 | ret = err; | 472 | ret = err; |
| 469 | } | 473 | } |
| 470 | 474 | ||
| 471 | if (wait) { | 475 | /* Don't write the inode if only I_DIRTY_PAGES was set */ |
| 472 | int err = filemap_fdatawait(mapping); | 476 | if (dirty & (I_DIRTY_SYNC | I_DIRTY_DATASYNC)) { |
| 477 | int err = write_inode(inode, wait); | ||
| 473 | if (ret == 0) | 478 | if (ret == 0) |
| 474 | ret = err; | 479 | ret = err; |
| 475 | } | 480 | } |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 7570573bdb30..5ecd952cae1d 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
| @@ -101,12 +101,7 @@ int nfs_write_inode(struct inode *inode, int sync) | |||
| 101 | { | 101 | { |
| 102 | int ret; | 102 | int ret; |
| 103 | 103 | ||
| 104 | if (sync) { | 104 | ret = nfs_commit_inode(inode, sync ? FLUSH_SYNC : 0); |
| 105 | ret = filemap_fdatawait(inode->i_mapping); | ||
| 106 | if (ret == 0) | ||
| 107 | ret = nfs_commit_inode(inode, FLUSH_SYNC); | ||
| 108 | } else | ||
| 109 | ret = nfs_commit_inode(inode, 0); | ||
| 110 | if (ret >= 0) | 105 | if (ret >= 0) |
| 111 | return 0; | 106 | return 0; |
| 112 | __mark_inode_dirty(inode, I_DIRTY_DATASYNC); | 107 | __mark_inode_dirty(inode, I_DIRTY_DATASYNC); |
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 25ea2408118f..8f117db6070e 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
| @@ -1075,10 +1075,6 @@ xfs_fs_write_inode( | |||
| 1075 | return XFS_ERROR(EIO); | 1075 | return XFS_ERROR(EIO); |
| 1076 | 1076 | ||
| 1077 | if (sync) { | 1077 | if (sync) { |
| 1078 | error = xfs_wait_on_pages(ip, 0, -1); | ||
| 1079 | if (error) | ||
| 1080 | goto out; | ||
| 1081 | |||
| 1082 | /* | 1078 | /* |
| 1083 | * Make sure the inode has hit stable storage. By using the | 1079 | * Make sure the inode has hit stable storage. By using the |
| 1084 | * log and the fsync transactions we reduce the IOs we have | 1080 | * log and the fsync transactions we reduce the IOs we have |
