Thread (28 messages) 28 messages, 6 authors, 2019-03-27

Re: [PATCH V2 2/8] blk-mq: use static_rqs instead of rqs to iterate tags

From: jianchao.wang <hidden>
Date: 2019-03-25 07:14:35
Also in: linux-nvme, lkml

Hi Dongli

Thanks for your kindly response.

On 3/25/19 3:12 PM, Dongli Zhang wrote:
Hi Jianchao,

On 3/25/19 1:38 PM, Jianchao Wang wrote:
quoted
tags->rqs[] will not been cleaned when free driver tag to avoid
an extra store on a shared area in the per io path. But there
is a window between get driver tag and write tags->rqs[], so we
may see stale rq in tags->rqs[] which may have been freed, as
following case,
blk_mq_get_request         blk_mq_queue_tag_busy_iter
  -> blk_mq_get_tag
Sorry I forgot to mention below when I was studying the v1 patchset.

If there is further review iteration, I would suggest clarify here that
blk_mq_get_tag() would set the bit in sbitmap (e.g., via __sbitmap_get_word())
that bt_for_each() would iterate. Otherwise, please ignore my message.

E.g.,

blk_mq_get_request
  -> blk_mq_get_tag
      -> taint sbitmap tag bit
         without setting tags->rqs[tag]

                                          -> bt_for_each
                                              -> iterate all dirty bit...

This would be much more friendly for people not working on block layer and when
they are looking for the potential fix for a bug by simply searching over the
commit messages. People not working on this would be able to quickly understand
there is a window between setting bit and setting data.
Yes, I will do that.
quoted
                             -> bt_for_each
                               -> bt_iter
                                 -> rq = taags->rqs[]
%s/taags/tags/g
Yes.


Thanks
Jianchao
quoted
                                 -> rq->q
  -> blk_mq_rq_ctx_init
    -> data->hctx->tags->rqs[rq->tag] = rq;
Thank you very much!

Dongli Zhang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help