Re: [PATCH] [13/16] HWPOISON: The high level memory error handler in the VM v5

Nick Piggin
2009-06-10T11:03:16Z

On Wed, Jun 10, 2009 at 05:20:11PM +0800, Wu Fengguang wrote:
> On Wed, Jun 10, 2009 at 04:59:39PM +0800, Nick Piggin wrote:
> > On Wed, Jun 10, 2009 at 04:38:03PM +0800, Wu Fengguang wrote:
> > > On Wed, Jun 10, 2009 at 12:05:53AM +0800, Hugh Dickins wrote:
> > > > I think a much more sensible approach would be to follow the page
> > > > migration technique of replacing the page's ptes by a special swap-like
> > > > entry, then do the killing from do_swap_page() if a process actually
> > > > tries to access the page.
> > >
> > > We call that "late kill" and will be enabled when
> > > sysctl_memory_failure_early_kill=0. Its default value is 1.
> >
> > What's the use of this? What are the tradeoffs, in what situations
> > should an admin set this sysctl one way or the other?
>
> Good questions.
>
> My understanding is, when an application is generating data A, B, C in
> sequence, and A is found to be corrupted by the kernel. Does it make
> sense for the application to continue generate B and C? Or, are there
> data dependencies between them? With late kill, it becomes more likely
> that the disk contain new versions of B/C and old version of A, so
> will more likely create data inconsistency.
>
> So early kill is more safe.

Hmm, I think that's pretty speculative, and doesn't seem possible for
an admin (or even kernel programmer) to choose the "right" value.

The application equally may not need to touch the data again, so
killing it might cause some inconsistency in whatever it is currently
doing.