X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=fs%2Ffs-writeback.c;h=04cf3b91e5016a1f7e3ceef734c7d85574ec296d;hb=1d229d54dbc26971142f61c3d271a68db236d178;hp=1599aa985fe2accf6dcc9456a570ba942201685d;hpb=5fd00b031530cc476240f654c078c930f1dcd6ea;p=firefly-linux-kernel-4.4.55.git 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);