The patch titled inodes forever dirty fix has been removed from the -mm tree. Its filename is inodes-forever-dirty-fix.patch This patch was dropped because it is obsolete ------------------------------------------------------ Subject: inodes forever dirty fix From: Andreas Gruenbacher <agruen@xxxxxxx> inodes like /dev/ram0 have a double life both as device inodes, and as inodes describing a ramdisk. This has lead to a bug where inodes would clog the s_io list of a superblock, and no further inodes would make it to disk. Fixed in [1]. Later, [2] re-introduced an optimization that [1] removed. The result is that some inodes remain dirty forever, bouncing between s_io and s_dirty. This happens as follows: - An inode like /dev/ram0 is opened, which sets BDI_CAP_NO_WRITEBACK in the inode's backing_dev_info->capabilities. bdi_cap_writeback_dirty becomes false. - The inode changes, e.g., chmod 0660 /dev/ram0, so the inode goes on s_dirty. - sync (which speeds up things, but makes no functional difference). - sync_sb_inodes() moves it from s_dirty to s_io, then finds it cannot writepage the inode, and moves it back to s_dirty. It will see the same inode again at some later point. - The inode never gets to __writeback_single_inode(), and never becomes clean again. Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- fs/fs-writeback.c | 8 +------- 1 files changed, 1 insertion(+), 7 deletions(-) diff -puN fs/fs-writeback.c~inodes-forever-dirty-fix fs/fs-writeback.c --- 25/fs/fs-writeback.c~inodes-forever-dirty-fix Mon Oct 24 16:35:44 2005 +++ 25-akpm/fs/fs-writeback.c Mon Oct 24 16:38:35 2005 @@ -320,20 +320,14 @@ sync_sb_inodes(struct super_block *sb, s long pages_skipped; if (!bdi_cap_writeback_dirty(bdi)) { - list_move(&inode->i_list, &sb->s_dirty); if (sb == blockdev_superblock) { /* * Dirty memory-backed blockdev: the ramdisk * driver does this. Skip just this inode */ + list_move(&inode->i_list, &sb->s_dirty); continue; } - /* - * Dirty memory-backed inode against a filesystem other - * than the kernel-internal bdev filesystem. Skip the - * entire superblock. - */ - break; } if (wbc->nonblocking && bdi_write_congested(bdi)) { _ Patches currently in -mm which might be from agruen@xxxxxxx are origin.patch git-kbuild.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html