diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1b43cc9d9ebb405d61f3906d850adc1e9c487451..30d9383c87c376614bbff496668cb4fa7bae1a23 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -308,7 +308,14 @@ __writeback_single_inode(struct inode *inode, struct writeback_control *wbc) struct address_space *mapping = inode->i_mapping; int ret; - redirty_tail(inode); + /* + * We're skipping this inode because it's locked, and we're not + * doing writeback-for-data-integrity. Move it to the head of + * s_dirty so that writeback can proceed with the other inodes + * on s_io. We'll have another go at writing back this inode + * when the s_dirty iodes get moved back onto s_io. + */ + redirty_head(inode); /* * Even if we don't actually write the inode itself here,