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,
wbc->encountered_congestion = 1;
if (!sb_is_blkdev_sb(sb))
break; /* Skip a congested fs */
- list_move(&inode->i_list, &sb->s_dirty);
+ redirty_head(inode);
continue; /* Skip a congested blockdev */
}
if (wbc->bdi && bdi != wbc->bdi) {
if (!sb_is_blkdev_sb(sb))
break; /* fs has the wrong queue */
- list_move(&inode->i_list, &sb->s_dirty);
+ redirty_head(inode);
continue; /* blockdev has wrong queue */
}