On Fri, Aug 20, 2010 at 03:51:41PM +0200, Jan Kara wrote: > On Fri 20-08-10 15:22:05, Dave Chinner wrote: > > The following two patches fix bugs in the new radix tree functionality used to > > implement the writeback livelock avoidance code. Both bugs manifest themselves > > as stray PAGECACHE_TAG_TOWRITE tags in the mapping->page_tree radix tree > > resulting in livelocks during tag lookups. More subtly, they also appear to > > result in writeback tree walks occasionally terminating early and so not > > actually writing all the pages they are supposed to. > Really, how that early termination could happen? I'm just wondering > because I don't see that.. The code just mindlessly copies tags regardless > of how target flags are set so that's why I'd think that any stale copied > flags just don't matter... With the debug I had in pace, I saw a couple of find_get_pages_tag loops stop (nr_found == 0) rather than livelock when they encountered a stray tag, which appears to result in writeback not writing all the pages. I also saw invalidation removing pages from the page cache that had the PAGECACHE_TAG_TOWRITE tag set, which indicated that sometimes they weren't getting written back as they should have been. These were quite rare - they maybe occurred once for every 1000 livelock occurrences I saw.... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- 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