On Mon 23-05-11 15:28:34, Ted Tso wrote: > On Mon, May 23, 2011 at 07:17:47PM +0200, Jan Kara wrote: > > b) Whether we do or don't send the flush in > > jbd2_journal_commit_transaction() depends on whether t_flushed_data_blocks > > is set. We can't know in advance whether it gets set or not because it > > depends on whether some inode is in transaction's t_inode_list and inodes > > can get removed from there when flusher thread has written all the pages > > and inode has been reclaimed. OTOH this looks like a bug in the commit code > > anyway - I guess t_flushed_data_blocks (or better named equivalent) should > > be set in jbd2_journal_file_inode(). Then such variable will also become > > a reliable indicator whether the data flush is going to be sent or not. > > Um, I guess I don't see where an inode gets removed from t_inode_list > after the writeback daemon is done with an inode? ext4_evict_inode()->ext4_clear_inode()->jbd2_journal_release_jbd_inode() removes the inode from transaction's list. Note that nothing prevents inode which is still part of the running transaction to be cleaned by a flusher thread and thus inode shrinker can reap it... Honza -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html