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

From: Jeff Moyer
Date: Fri Apr 15 2016 - 14:24:19 EST


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