Messages in this thread | | | Date | Fri, 12 Nov 2010 14:51:51 -0600 | From | Eric Sandeen <> | Subject | Re: [PATCH] clear PageError bit in msync & fsync |
| |
On 11/09/2010 03:24 PM, Rik van Riel wrote: > On 11/09/2010 04:21 PM, Zan Lynx wrote: >> On 11/9/10 12:33 PM, Rik van Riel wrote: >>> On 11/09/2010 02:21 PM, Jeff Layton wrote: >>> >>>> This does leave the page in sort of a funky state. The uptodate bit >>>> will still probably be set, but the dirty bit won't be. The page will >>>> be effectively "disconnected" from the backing store until someone >>>> writes to it. >>>> >>>> I suppose though that this is the best that can reasonably be done in >>>> this situation however... >>> >>> I spent a few days looking for alternatives, and indeed I found >>> nothing better... >> >> Just an off the top of my head crazy idea... >> >> Could you leave the error bit set on the page and treat it as a dirty >> bit during a future msync, clearing the error bit at that point. >> >> The general idea would be to leave the error set unless an explicit >> write was requested. > > The problem with that is that the page will be unreclaimable, > and the VM could get filled with PageError pages and be unable > to make further progress (if the IO path does not come back).
As a further crazy idea ;) what if it only persisted for "X" write attempts? Maybe (sigh) a tunable?
That way several fsyncs get the chance to see it, but eventually enough writebacks will go off to give up and clear it. Hacky, but an idea ...
-Eric
| |