diff options
author | Jens Axboe <axboe@suse.de> | 2006-06-13 02:26:10 -0400 |
---|---|---|
committer | Jens Axboe <axboe@nelson.home.kernel.dk> | 2006-06-23 11:10:39 -0400 |
commit | b31dc66a54ad986b6b73bdc49c8efc17cbad1833 (patch) | |
tree | 5591383c1cbffe11512da889c971f899333f1a44 /fs/fs-writeback.c | |
parent | 271f18f102c789f59644bb6c53a69da1df72b2f4 (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.c | 2 |
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) && |