Pete Zaitcev wrote:
At some situations, this can get called twice on the same page. When this happens first, the page is filled normally, and SetPageUptodate clears dirty bit. Notice though, SetPageUptodate is different on s390 from all other architectures, because the dirty bit belongs to a page, and not to a page table entry there. So, on second pass, SetPageUptodate sees the page already up to date and does not clear the dirty bit. This creates a dirty page which eventually oopses us.
Makes sense. I hit the "same page read more than once at the same time" race condition a couple of years ago, and solved it using grab_cache_page_nowait. Unfortunately I didn't know about the s390, however, I probably should always have had a PageUptodate check anyway.
Here's a patch which I made out of Heiko's patch by transforming it: Any objections?
None from me.
-- Pete P.S. When is squashfs going to be upstream?
I'd like Squashfs to be in the mainline kernel. As you may know, I submitted Squashfs in March 2005. I ended up with a lot of necessary improvements (larger than 4GB filesystems etc.), and spent over a year implementing them. These were released as Squashfs 3.0. I could re-submit Squashfs now, however, from my last failed attempt I know it could require a lot of effort to get it accepted, and I'm waiting until I have the necessary spare time. A rushed or poor re-submission is going to be worse than none at all, and I don't want to fail a second time...
Regards Phillip -- VGER BF report: U 0.504827 - 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