Hello, I had a look at what got merged as a lazytime series from Ted and I have found a couple of issues (I think I've pointed them out in my emails back in November but admittedly things were somewhat confused back then since Ted was submitting new versions pretty fast). Anyway here are the issues I've found in the merged code: 1) Inode that gets periodically dirtied with I_DIRTY_PAGES, cleaned and dirtied again will have inode with updated timestamps never written due to age since inode->dirtied_when gets reset on each redirtying with I_DIRTY_PAGES. 2) The code won't maintain time ordering of b_dirty_time list by inode->dirtied_when - this happens because requeue_inode() moves inode at the head of the b_dirty_time list but inodes in b_io list from which we move are no longer ordered by dirtied_when (due to that list being combined from several lists and also because we sort the list by superblock). As a result terminating logic in move_expired_inodes() may terminate the scan too early for b_dirty_time list. 3) This is mostly cosmetic currently but is a potential landmine for future: If you dirty with I_DIRTY_PAGES | I_DIRTY_TIME inode gets filed to b_dirty_time list instead of b_dirty list. 4) Another mostly cosmetic issue: move_expired_inodes() should use work->for_sync instead of work->reason == WB_REASON_SYNC (work->reason is there only for tracing purposes). Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html