On Thu, Feb 02 2017 at 7:20pm -0500, Bart Van Assche <Bart.VanAssche@xxxxxxxxxxx> wrote: > On Thu, 2017-02-02 at 16:10 -0500, Mike Snitzer wrote: > > Care to try moving the dm_get(md) at the end of dm_start_request() to > > the beginning of dm_start_request() and report back on whether it helps > > at all? > > Hello Mike, > > Sorry but I don't see how that could make a difference. Yeah, I thought about it further after I suggested it and agree that it shouldn't make a difference (request isn't actually issued during dm_start_request). > While we are at it: > since dm_start_request() calls dm_get() and since rq_completed() calls > dm_put(), calls to these two functions should always be paired. There is > only one dm_start_request() call in the dm-mq code, namely the one in > dm_mq_queue_rq(). However, if map_request() returns DM_MAPIO_REQUEUE then > rq_completed() is called twice: a first time by > dm_requeue_original_request() and a second time by the dm_mq_queue_rq(). > Do you agree with this? Not seeing it. DM_MAPIO_DELAY_REQUEUE will call dm_requeue_original_request(), but dm_mq_queue_rq() won't call rq_completed() in that case. And for DM_MAPIO_REQUEUE dm_mq_queue_rq() will call rq_completed(). -- 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