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()? 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. -- 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