Hi Jan, Sorry for the long delay! On Tue, Sep 14, 2010 at 08:40:33PM +0800, Jan Kara wrote: > Hi, > > On Mon 13-09-10 20:31:12, Wu Fengguang wrote: > > From: Jan Kara <jack@xxxxxxx> > > > > Background writeback and kupdate-style writeback are easily livelockable > > (from a definition of their target). This is inconvenient because it can > > make sync(1) stall forever waiting on its queued work to be finished. > > Fix the problem by interrupting background and kupdate writeback if there > > is some other work to do. We can return to them after completing all the > > queued work. > I actually have a slightly updated version with a better changelog: > > Background writeback are easily livelockable (from a definition of their > target). This is inconvenient because it can make sync(1) stall forever waiting > on its queued work to be finished. Generally, when a flusher thread has > some work queued, someone submitted the work to achieve a goal more specific > than what background writeback does. So it makes sense to give it a priority > over a generic page cleaning. > > Thus we interrupt background writeback if there is some other work to do. We > return to the background writeback after completing all the queued work. > > Could you please update it? Thanks. > Honza > > PS: I've also attached the full patch if that's more convenient for you. You patches are more complete than mine, so let's use them. However I do prefer to have a standalone wb_check_background_flush() that is called _after_ wb_check_old_data_flush(). This helps make the writeout a bit more ordered and the separation itself looks a bit more clean to me. Followed are the slightly updated patches. IMHO they are straightforward fixes that could be merged before other writeback changes. Thanks, Fengguang -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>