On Mon, 2018-10-29 at 10:37 -0600, Jens Axboe wrote: +AD4 void blk+AF8-mq+AF8-flush+AF8-plug+AF8-list(struct blk+AF8-plug +ACo-plug, bool from+AF8-schedule) +AD4 +AHs +AD4 struct blk+AF8-mq+AF8-ctx +ACo-this+AF8-ctx+ADs +AD4 +AEAAQA -1628,7 +-1649,7 +AEAAQA void blk+AF8-mq+AF8-flush+AF8-plug+AF8-list(struct blk+AF8-plug +ACo-plug, bool from+AF8-schedule) +AD4 struct request +ACo-rq+ADs +AD4 LIST+AF8-HEAD(list)+ADs +AD4 LIST+AF8-HEAD(ctx+AF8-list)+ADs +AD4 - unsigned int depth+ADs +AD4 +- unsigned int depth, this+AF8-flags+ADs +AD4 +AD4 list+AF8-splice+AF8-init(+ACY-plug-+AD4-mq+AF8-list, +ACY-list)+ADs +AD4 +AD4 +AEAAQA -1636,13 +-1657,14 +AEAAQA void blk+AF8-mq+AF8-flush+AF8-plug+AF8-list(struct blk+AF8-plug +ACo-plug, bool from+AF8-schedule) +AD4 +AD4 this+AF8-q +AD0 NULL+ADs +AD4 this+AF8-ctx +AD0 NULL+ADs +AD4 +- this+AF8-flags +AD0 0+ADs +AD4 depth +AD0 0+ADs +AD4 +AD4 while (+ACE-list+AF8-empty(+ACY-list)) +AHs +AD4 rq +AD0 list+AF8-entry+AF8-rq(list.next)+ADs +AD4 list+AF8-del+AF8-init(+ACY-rq-+AD4-queuelist)+ADs +AD4 BUG+AF8-ON(+ACE-rq-+AD4-q)+ADs +AD4 - if (rq-+AD4-mq+AF8-ctx +ACEAPQ this+AF8-ctx) +AHs +AD4 +- if (+ACE-ctx+AF8-match(rq, this+AF8-ctx, this+AF8-flags)) +AHs +AD4 if (this+AF8-ctx) +AHs +AD4 trace+AF8-block+AF8-unplug(this+AF8-q, depth, +ACE-from+AF8-schedule)+ADs +AD4 blk+AF8-mq+AF8-sched+AF8-insert+AF8-requests(this+AF8-q, this+AF8-ctx, +AD4 +AEAAQA -1650,6 +-1672,7 +AEAAQA void blk+AF8-mq+AF8-flush+AF8-plug+AF8-list(struct blk+AF8-plug +ACo-plug, bool from+AF8-schedule) +AD4 from+AF8-schedule)+ADs +AD4 +AH0 +AD4 +AD4 +- this+AF8-flags +AD0 rq-+AD4-cmd+AF8-flags+ADs +AD4 this+AF8-ctx +AD0 rq-+AD4-mq+AF8-ctx+ADs +AD4 this+AF8-q +AD0 rq-+AD4-q+ADs +AD4 depth +AD0 0+ADs This patch will cause the function stored in the flags+AF8-to+AF8-type pointer to be called 2 +ACo (n - 1) times where n is the number of elements in 'list' when blk+AF8-mq+AF8-sched+AF8-insert+AF8-requests() is called. Have you considered to rearrange the code such that that number of calls is reduced to n? Thanks, Bart.