On Mon, Apr 19, 2021 at 8:14 AM Keith Busch <kbusch@xxxxxxxxxx> wrote: > > On Mon, Apr 19, 2021 at 09:16:05AM +0200, Christoph Hellwig wrote: > > On Sat, Apr 17, 2021 at 02:17:35AM +0900, Keith Busch 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. See below clarification. I was wondering whether the way you were going to propose for nvme_end_sync_rq() would establish new convention for other blk_execute_rq_nowait() completion handlers implementation. > > > > > > > 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. > > > > But it never looks at it.. > > The question was how to get ret. I didn't mean to imply the example was > actually using it. :) The question was how to let nvme_end_sync_rq() propagate the blk_status_t error to the ret for __nvme_submit_sync_cmd(). That's part of the problem here: __nvme_submit_sync_cmd() may return success for a command that failed submission. -- Regards, Yuanyuan Zhong