On Thu 20-10-11 05:46:49, Christoph Hellwig wrote: > On Tue, Oct 18, 2011 at 02:51:28AM +0200, Jan Kara wrote: > > > It's still puzzling why dirty pages remain at 286 and does not get > > > cleaned by either flusher threads for local XFS and NFSROOT for so > > > long time.. > > I was looking at this as well. So the reason why pages were not cleaned > > by the flusher thread is that there were 2 dirty inodes and the inode with > > dirty pages had i_dirtied_whan newer than the time when we started this > > background writeback. Thus the running background writeback work always > > included only the other inode which has no dirty pages but I_DIRTY_SYNC set. > > Apparently XFS is stubborn and refuses to write the inode although we try > > rather hard. That is probably because dd writing to this inode is stuck in > > balance_dirty_pages() and holds ilock - which is a bit unfortunate behavior > > but what can we do... > > Stop writing data from balance_dirty_pages()? Well, this was also with Fengguang's IO-less patches so writing from balance_dirty_pages() was not an issue. > Anyway, XFS tries very hard to not block in a non-block ->write_inode > or ->writepages, which generally is a good thing to avoid getting stuck > in the flusher thread. For cases like this where an inode is long > beyond it's due time it might make sense to simply do a synchronous > write_inode from the flusher thread to force the inode out. Yeah, that might be a good option. 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