aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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,
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);