On Tue, Nov 24, 2015 at 01:12:52PM -0500, Jeff Moyer wrote: > >> blk_complete_request(): > >> if (!blk_mark_rq_complete(req) || // this fails, as it's already marked complete > >> test_and_clear_bit(REQ_ATOM_QUIESCED, &req->atomic_flags)) // this succeeds > > > > and clears the flag, so we'd need a race betweem this call to > > blk_mq_complete request and the later completion of all outstanding > > commands from reset. For NVMe we ensure this by not taking completions > > But we're completing the request, so the request will actually be freed. > Any references to this request are bogus at this point, no? For blk-mq it won't be freed. For the non blk-mq case the tag to request lookup will have to handle that case, but that path isn't exercised by nvme. -- To unsubscribe from this list: send the line "unsubscribe linux-block" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html