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: > > > > 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?��.n��������+%������w��{.n�����{���)��jg��������ݢj����G�������j:+v���w�m������w�������h�����٥