Re: [PATCH v2 5/5] dax: handle media errors in dax_do_io

From: Toshi Kani
Date: Fri Apr 15 2016 - 15:32:01 EST


On Fri, 2016-04-15 at 13:01 -0600, Toshi Kani wrote:
> On Fri, 2016-04-15 at 11:17 -0700, Dan Williams wrote:
> >
> > On Fri, Apr 15, 2016 at 11:06 AM, Jeff Moyer <jmoyer@xxxxxxxxxx> wrote:
> > >
> > > Dan Williams <dan.j.williams@xxxxxxxxx> writes:
> > > Â
> > > > > > There's a lot of special casing here, so you might consider
> > > > > > adding comments.
> > > > > Correct - maybe we should reconsider wrapper-izing this? :)
> > > > Another option is just to skip dax_do_io() and this special casing
> > > > fallback entirely if errors are present.ÂÂI.e. only attempt
> > > > dax_do_io when: IS_DAX() && gendisk->bb && bb->count == 0.
> > >
> > > So, if there's an error anywhere on the device, penalize all I/O (not
> > > just writes, and not just on sectors that are bad)?ÂÂI'm not sure
> > > that's a great plan, either.
> > >
> > If errors are rare how much are we actually losing in practice?
> > Moreover, we're going to do the full badblocks lookup anyway when we
> > call ->direct_access().ÂÂIf we had that information earlier we can
> > avoid this fallback dance.
>
> A system running with DAX may have active data set in NVDIMM lager than
> RAM size. ÂIn this case, falling back to non-DAX will allocate page cache
> for the data, which will saturate the system with memory pressure.

Oh, sorry, we are still in DIO path. ÂFalling back to DIO should not cause
this issue.

-Toshi