Thread (24 messages) 24 messages, 4 authors, 2016-04-04

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

From: "Verma, Vishal L" <vishal.l.verma@intel.com>
Date: 2016-03-25 20:59:30
Also in: linux-fsdevel, linux-mm, linux-xfs

On Fri, 2016-03-25 at 03:45 -0700, Christoph Hellwig wrote:
On Thu, Mar 24, 2016 at 05:17:30PM -0600, Vishal Verma wrote:
quoted
dax_do_io (called for read() or write() for a dax file system) may
fail
in the presence of bad blocks or media errors. Since we expect that
a
write should clear media errors on nvdimms, make dax_do_io fall
back to
the direct_IO path, which will send down a bio to the driver, which
can
then attempt to clear the error.
Leave the fallback on -EIO to the callers please.  They generally
call
__blockdev_direct_IO anyway, so it should actually become simpler
that
way.
I thought of this, but made the retrying happen in the wrapper so that
it can be centralized. If the callers were to become responsible for
the retry, then any new callers of dax_do_io might not realize they are
responsible for retrying, and hit problems. Another tricky point might
be: in the wrapper, if __dax_do_io failed with -EIO, and subsequently
__blockdev_direct_IO also fails with a *different* error, I chose to
return -EIO because that was the 'first' error we hit and caused us to
fallback.. (Does this even seem reasonable?) And if so, do we want to
push back this decision too, to the callers?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help