lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 19 Apr 2011 17:02:47 +1000 From: Dave Chinner <david@...morbit.com> To: Wu Fengguang <fengguang.wu@...el.com> Cc: Andrew Morton <akpm@...ux-foundation.org>, Jan Kara <jack@...e.cz>, Mel Gorman <mel@...ux.vnet.ibm.com>, Mel Gorman <mel@....ul.ie>, Itaru Kitayama <kitayama@...bb4u.ne.jp>, Trond Myklebust <Trond.Myklebust@...app.com>, Minchan Kim <minchan.kim@...il.com>, LKML <linux-kernel@...r.kernel.org>, linux-fsdevel@...r.kernel.org, Linux Memory Management List <linux-mm@...ck.org> Subject: Re: [PATCH 2/6] writeback: the kupdate expire timestamp should be a moving target On Tue, Apr 19, 2011 at 11:00:05AM +0800, Wu Fengguang wrote: > Dynamically compute the dirty expire timestamp at queue_io() time. > > writeback_control.older_than_this used to be determined at entrance to > the kupdate writeback work. This _static_ timestamp may go stale if the > kupdate work runs on and on. The flusher may then stuck with some old > busy inodes, never considering newly expired inodes thereafter. > > This has two possible problems: > > - It is unfair for a large dirty inode to delay (for a long time) the > writeback of small dirty inodes. > > - As time goes by, the large and busy dirty inode may contain only > _freshly_ dirtied pages. Ignoring newly expired dirty inodes risks > delaying the expired dirty pages to the end of LRU lists, triggering > the evil pageout(). Nevertheless this patch merely addresses part > of the problem. When wb_writeback() is called with for_kupdate set, it initialises wbc->older_than_this appropriately outside the writeback loop. queue_io() is called once per writeback_inodes_wb() call, which is once per loop in wb_writeback. All your change does is re-initialise older_than_this once per loop in wb_writeback, jus tin a different and very non-obvious place. So why didn't you just re-initialise it inside the loop in wb_writeback() and leave all the other code alone? Cheers, Dave. -- Dave Chinner david@...morbit.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists