diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-31 12:25:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-31 12:25:09 -0400 |
commit | fa9d594c46679485c5e3642d2bd9e874a7e07b19 (patch) | |
tree | 6b89dd416497717030a7cd35809538fb6f0e1b1d | |
parent | f0d15c96d4ddcf32b6f910c4c2487ee705e4d493 (diff) | |
parent | 0e995816f4fb69cef602b7fe82da68ced6be3b41 (diff) |
Merge branch 'urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback
* 'urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/writeback:
don't busy retry the inode on failed grab_super_passive()
-rw-r--r-- | fs/fs-writeback.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1599aa985fe2..04cf3b91e501 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -618,7 +618,12 @@ static long __writeback_inodes_wb(struct bdi_writeback *wb, | |||
618 | struct super_block *sb = inode->i_sb; | 618 | struct super_block *sb = inode->i_sb; |
619 | 619 | ||
620 | if (!grab_super_passive(sb)) { | 620 | if (!grab_super_passive(sb)) { |
621 | requeue_io(inode, wb); | 621 | /* |
622 | * grab_super_passive() may fail consistently due to | ||
623 | * s_umount being grabbed by someone else. Don't use | ||
624 | * requeue_io() to avoid busy retrying the inode/sb. | ||
625 | */ | ||
626 | redirty_tail(inode, wb); | ||
622 | continue; | 627 | continue; |
623 | } | 628 | } |
624 | wrote += writeback_sb_inodes(sb, wb, work); | 629 | wrote += writeback_sb_inodes(sb, wb, work); |