[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4CD9BA08.2000002@redhat.com>
Date: Tue, 09 Nov 2010 16:15:52 -0500
From: Rik van Riel <riel@...hat.com>
To: "Ted Ts'o" <tytso@....edu>, Jeff Layton <jlayton@...hat.com>,
linux-kernel@...r.kernel.org, akpm@...ux-foundation.org,
esandeen@...hat.com, jmoyer@...hat.com,
linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH] clear PageError bit in msync & fsync
On 11/09/2010 04:07 PM, Ted Ts'o wrote:
> On Tue, Nov 09, 2010 at 02:33:29PM -0500, Rik van Riel wrote:
>>
>> There are essentially two possibilities:
>> 1) the VM can potentially be filled up with uncleanable dirty pages, or
>> 2) pages that hit an IO error are left in a clean state, so they can
>> be reclaimed under memory pressure
>>
>> Alternative 1 could cause the entire system to deadlock, while
>> option 2 puts the onus on userland apps to rewrite the data
>> from a failed msync/fsync.
>>
>> Currently the VM has behaviour #2 which is preserved with my
>> patch.
>>
>> The only difference with my patch is, we won't keep returning
>> -EIO on subsequent, error free, msync or fsync calls to files
>> that had an IO error at some previous point in the past.
>
> Do we guarantee that the application will get EIO at least once? I
> thought there were issues where the error bit could get lost if the
> page writeback was triggered by sync() run by a third-party
> application.
There is no such guarantee in the current kernel, either
with or without my patch.
A third application calling fsync or msync can get the
EIO cleared, so the application that did the write does
not see it.
The VM could also reclaim the PageError page due to
memory pressure, so the application calling fsync or
msync does not see it.
I see no good way in which we could guarantee that
every process calling msync or fsync on a file that
had an IO error in the past gets EIO once - at least,
not without every one of them always getting EIO on
the file even after the IO path is good again...
--
All rights reversed
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists