summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-07-31 18:25:09 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2011-07-31 18:25:09 +0200
commitfa9d594c46679485c5e3642d2bd9e874a7e07b19 (patch)
tree6b89dd416497717030a7cd35809538fb6f0e1b1d
parentMerge git://git.infradead.org/battery-2.6 (diff)
parentdon't busy retry the inode on failed grab_super_passive() (diff)
downloadlinux-fa9d594c46679485c5e3642d2bd9e874a7e07b19.tar.xz
linux-fa9d594c46679485c5e3642d2bd9e874a7e07b19.zip
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.c7
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,
struct super_block *sb = inode->i_sb;
if (!grab_super_passive(sb)) {
- requeue_io(inode, wb);
+ /*
+ * grab_super_passive() may fail consistently due to
+ * s_umount being grabbed by someone else. Don't use
+ * requeue_io() to avoid busy retrying the inode/sb.
+ */
+ redirty_tail(inode, wb);
continue;
}
wrote += writeback_sb_inodes(sb, wb, work);