aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fs-writeback.c
diff options
context:
space:
mode:
authorJens Axboe <axboe@suse.de>2006-06-13 02:26:10 -0400
committerJens Axboe <axboe@nelson.home.kernel.dk>2006-06-23 11:10:39 -0400
commitb31dc66a54ad986b6b73bdc49c8efc17cbad1833 (patch)
tree5591383c1cbffe11512da889c971f899333f1a44 /fs/fs-writeback.c
parent271f18f102c789f59644bb6c53a69da1df72b2f4 (diff)
[PATCH] Kill PF_SYNCWRITE flag
A process flag to indicate whether we are doing sync io is incredibly ugly. It also causes performance problems when one does a lot of async io and then proceeds to sync it. Part of the io will go out as async, and the other part as sync. This causes a disconnect between the previously submitted io and the synced io. For io schedulers such as CFQ, this will cause us lost merges and suboptimal behaviour in scheduling. Remove PF_SYNCWRITE completely from the fsync/msync paths, and let the O_DIRECT path just directly indicate that the writes are sync by using WRITE_SYNC instead. Signed-off-by: Jens Axboe <axboe@suse.de>
Diffstat (limited to 'fs/fs-writeback.c')
-rw-r--r--fs/fs-writeback.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c
index 6db95cf3aaa2..031b27a4bc9a 100644
--- a/fs/fs-writeback.c
+++ b/fs/fs-writeback.c
@@ -623,7 +623,6 @@ int generic_osync_inode(struct inode *inode, struct address_space *mapping, int
623 int need_write_inode_now = 0; 623 int need_write_inode_now = 0;
624 int err2; 624 int err2;
625 625
626 current->flags |= PF_SYNCWRITE;
627 if (what & OSYNC_DATA) 626 if (what & OSYNC_DATA)
628 err = filemap_fdatawrite(mapping); 627 err = filemap_fdatawrite(mapping);
629 if (what & (OSYNC_METADATA|OSYNC_DATA)) { 628 if (what & (OSYNC_METADATA|OSYNC_DATA)) {
@@ -636,7 +635,6 @@ int generic_osync_inode(struct inode *inode, struct address_space *mapping, int
636 if (!err) 635 if (!err)
637 err = err2; 636 err = err2;
638 } 637 }
639 current->flags &= ~PF_SYNCWRITE;
640 638
641 spin_lock(&inode_lock); 639 spin_lock(&inode_lock);
642 if ((inode->i_state & I_DIRTY) && 640 if ((inode->i_state & I_DIRTY) &&