Messages in this thread | | | Date | Tue, 13 Jul 2004 11:57:16 -0700 | From | Andrew Morton <> | Subject | Re: [PATCH] fix inode state corruption (2.6.8-rc1-bk1) |
| |
Miklos Szeredi <miklos@szeredi.hu> wrote: > > This patch fixes a hard-to-trigger condition, where the inode is on > the inode_in_use list while it's state is dirty. In this state dirty > pages are not written back in sync() or from kupdate, only from direct > page reclaim. And this causes a livelock in balance_dirty_pages after > a while.
How ghastly.
Why did you make the list movement conditional on non-zero `wait'?
It would be equivalent to remove these lines from __mark_inode_dirty():
/* * If the inode is locked, just update its dirty state. * The unlocker will place the inode on the appropriate * superblock list, based upon its state. */ if (inode->i_state & I_LOCK) goto out;
but probably not so good, because that could cause other tasks to come around and wait on this inode while it is under writeout instead of writing back different inodes.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |