|
@@ -618,7 +618,12 @@ static long __writeback_inodes_wb(struct bdi_writeback *wb,
|
|
struct super_block *sb = inode->i_sb;
|
|
struct super_block *sb = inode->i_sb;
|
|
|
|
|
|
if (!grab_super_passive(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;
|
|
continue;
|
|
}
|
|
}
|
|
wrote += writeback_sb_inodes(sb, wb, work);
|
|
wrote += writeback_sb_inodes(sb, wb, work);
|