On Fri, Apr 16, 2021 at 07:04:34PM -0700, Casey Chen wrote: > > On Fri, Apr 16, 2021 at 10:12:11AM -0700, Yuanyuan Zhong wrote: > > > > if (poll) > > > > nvme_execute_rq_polled(req->q, NULL, req, at_head); > > > You may need to audit other completion handlers for blk_execute_rq_nowait(). > > > > Why? Those callers already provide their own callback that directly get > > the error. > > We should make sure all callbacks provided to blk_execute_rq_nowait() > carry error back. i.e. by reusing rq->end_io_data. > > > > How to get error ret from polled rq? > > > > Please see nvme_end_sync_rq() for that driver's polled handler callback. > > It already has the error. > > nvme_end_sync_rq() currently doesn't store error in rq->end_io_data as > you proposed in patch 1. The question was how the error gets back to the caller, and they already have it. Patch 1 is specific to the sync execution. All the async users' handling of the provided error are implementation specific. If they're not using it correctly, then they can be fixed too.