xfs
[Top] [All Lists]

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

To: Dan Williams <dan.j.williams@xxxxxxxxx>
Subject: Re: [PATCH v2 5/5] dax: handle media errors in dax_do_io
From: Jeff Moyer <jmoyer@xxxxxxxxxx>
Date: Fri, 15 Apr 2016 14:24:10 -0400
Cc: "Verma\, Vishal L" <vishal.l.verma@xxxxxxxxx>, "hch\@infradead.org" <hch@xxxxxxxxxxxxx>, "jack\@suse.cz" <jack@xxxxxxx>, "axboe\@fb.com" <axboe@xxxxxx>, "linux-nvdimm\@ml01.01.org" <linux-nvdimm@xxxxxxxxxxx>, "david\@fromorbit.com" <david@xxxxxxxxxxxxx>, "linux-kernel\@vger.kernel.org" <linux-kernel@xxxxxxxxxxxxxxx>, "xfs\@oss.sgi.com" <xfs@xxxxxxxxxxx>, "linux-block\@vger.kernel.org" <linux-block@xxxxxxxxxxxxxxx>, "linux-mm\@kvack.org" <linux-mm@xxxxxxxxx>, "viro\@zeniv.linux.org.uk" <viro@xxxxxxxxxxxxxxxxxx>, "linux-fsdevel\@vger.kernel.org" <linux-fsdevel@xxxxxxxxxxxxxxx>, "akpm\@linux-foundation.org" <akpm@xxxxxxxxxxxxxxxxxxxx>, "linux-ext4\@vger.kernel.org" <linux-ext4@xxxxxxxxxxxxxxx>, "Wilcox\, Matthew R" <matthew.r.wilcox@xxxxxxxxx>
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <CAPcyv4hRQj2ZsFj7Xa_=OwcHrzP9_5yUpt3LQ+bPH4PcLe7UCQ@xxxxxxxxxxxxxx> (Dan Williams's message of "Fri, 15 Apr 2016 11:17:39 -0700")
References: <1459303190-20072-1-git-send-email-vishal.l.verma@xxxxxxxxx> <1459303190-20072-6-git-send-email-vishal.l.verma@xxxxxxxxx> <x49twj26edj.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <1460739288.3012.3.camel@xxxxxxxxx> <x49potq6bm2.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <1460741821.3012.11.camel@xxxxxxxxx> <CAPcyv4hemNM4uQYCPBXyH+DWTOLvyBNBeMYstKbPdad_Cw48HQ@xxxxxxxxxxxxxx> <x49lh4e6928.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <CAPcyv4hRQj2ZsFj7Xa_=OwcHrzP9_5yUpt3LQ+bPH4PcLe7UCQ@xxxxxxxxxxxxxx>
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux)
Dan Williams <dan.j.williams@xxxxxxxxx> writes:

> 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?

How long is a piece of string?

> 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.

None of the proposed approaches looks clean to me.  I'll go along with
whatever you guys think is best.  I am in favor of wrapping up all that
duplicated code, though.

Cheers,
Jeff

<Prev in Thread] Current Thread [Next in Thread>