On Wed, 2017-08-30 at 19:05 +0300, Sagi Grimberg wrote: > If we get to choose, my preference would be to restore the old behavior > because currently existing nvme transports keep their internal ctrl > representation in the tagset->driver_data as they implement > init/exit_request. Bouncing in nvme core would require to change that > and always keep struct nvme_ctrl as the tagset->driver_data and convert > it on every handler... > > Everything is doable but it seems like an unneeded hassle to me... Sorry but I'm not convinced that it would be necessary to change what tagset->driver_data points at. How about moving blk_mq_reinit_tagset() from the block layer core to the NVMe core, to rename it and to pass a pointer to the nvme_ctrl data structure to that function instead of only block layer information? Bart.