applied: 
https://github.com/crash-utility/crash/commit/82e65239aaf0607d45c6f0902495b432b76823ba

On Thu, Nov 20, 2025 at 8:52 PM Tao Liu <[email protected]> wrote:
>
> I will apply the v1, aka "Add blk_mq_tag_set shared_tags check", and
> fix the "runtime get BLK_MQ_F_TAG_HCTX_SHARED" later, since v3 has
> some problems and we are running out of time before release.
>
> On Thu, Nov 20, 2025 at 4:25 PM Tao Liu <[email protected]> wrote:
> >
> > On Thu, Nov 20, 2025 at 3:56 PM lijiang <[email protected]> wrote:
> > >
> > > On Thu, Nov 20, 2025 at 4:37 AM Tao Liu <[email protected]> wrote:
> > >>
> > >> Hi lianbo,
> > >>
> > >> On Wed, Nov 19, 2025 at 10:31 PM lijiang <[email protected]> wrote:
> > >> >
> > >> > On Wed, Nov 19, 2025 at 12:51 PM 
> > >> > <[email protected]> wrote:
> > >> >>
> > >> >> Date: Wed, 19 Nov 2025 15:36:29 +1300
> > >> >> From: Tao Liu <[email protected]>
> > >> >> Subject: [Crash-utility] [PATCH] Add blk_mq_tag_set shared_tags check
> > >> >> To: [email protected]
> > >> >> Cc: Tao Liu <[email protected]>
> > >> >> Message-ID: <[email protected]>
> > >> >> Content-Type: text/plain; charset="US-ASCII"; x-default=true
> > >> >>
> > >> >> A regression of cmd dev -d/-D noticed on some vmcores as:
> > >> >>
> > >> >>     dev: invalid structure member offset: blk_mq_tag_set_shared_tags
> > >> >>          FILE: dev.c  LINE: 4468  FUNCTION: 
> > >> >> blk_mq_queue_tag_busy_iter()
> > >> >>
> > >> >>     MAJOR GENDISK            NAME       REQUEST_QUEUE      TOTAL 
> > >> >> ASYNC  SYNC
> > >> >>     [crash] error trace: 91aa85 => 91a552 => 94d6ba => 94d647
> > >> >>
> > >> >>       94d647: OFFSET_verify.part.0+55
> > >> >>       94d6ba: OFFSET_verify+42
> > >> >>       91a552: get_diskio_1+2194
> > >> >>       91aa85: display_all_diskio+1253
> > >> >>
> > >> >> The root cause is, though upstream kernel have defined 
> > >> >> BLK_MQ_F_TAG_HCTX_SHARED
> > >> >> as (1 << 3), the value might be set different, e.g. [1]. So a single
> > >> >
> > >> >
> > >> > We should be able to get the value of  BLK_MQ_F_TAG_HCTX_SHARED via 
> > >> > the dump_enumerator_list(), and then test it in the following function:
> > >>
> > >> Please see [1], I removed (1<<3) and resolved it at runtime.
> > >> dump_enumerator_list() is not appropriate, but I used
> > >> arg_to_datatype().
> > >
> > >
> > > Can you try the enumerator_value()? Looks more appropriate. E.g:
> > >
> > > enumerator_value("BLK_MQ_F_TAG_HCTX_SHARED", &value);
> >
> > Sure, looks better.
> >
> > Please see v3: 
> > https://www.mail-archive.com/[email protected]/msg01845.html
> >
> > Thanks,
> > Tao Liu
> >
> > >
> > >
> > > Thanks
> > > Lianbo
> > >
> > >> In dump_enumerator_list("BLK_MQ_F_TAG_HCTX_SHARED"),
> > >>
> > >> if (!arg_to_datatype(e, dm, RETURN_ON_ERROR) ||
> > >> (dm->size < 0) || (dm->type != ENUM) || dm->tagname)
> > >>
> > >> dm->tagname is not NULL and will make dump_enumerator_list return false:
> > >>
> > >> (gdb) p dm
> > >> $1 = {name = 0xe4911b "BLK_MQ_F_TAG_HCTX_SHARED", member = 0x0, type =
> > >> 8192, size = 0, member_offset = 0, member_size = 0,
> > >>   member_typecode = 0, flags = 0, tagname = 0xd41dfd "(unknown)",
> > >> value = 8, vaddr = 0}
> > >>
> > >> [1]: 
> > >> https://www.mail-archive.com/[email protected]/msg01841.html
> > >>
> > >> >
> > >> > static bool blk_mq_is_shared_tags(unsigned int flags)
> > >> > {
> > >> >         return flags & BLK_MQ_F_TAG_HCTX_SHARED;
> > >> > }
> > >> >
> > >> > That can follow the changes once the upstream kernel modifies the 
> > >> > value.
> > >> >
> > >> >> blk_mq_is_shared_tags() check is not sufficient. This patch will add 
> > >> >> shared_tagsblk_mq_is_shared_tags() check is not sufficient. This 
> > >> >> patch will add shared_tags
> > >> >>  member check within blk_mq_tag_set struct as an enhancment.
> > >> >
> > >> >
> > >> > Anyway, this change looks good, so: Ack
> > >> >
> > >> > Lianbo
> > >> >
> > >> >> [1]: 
> > >> >> https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-8/-/blob/c8s/include/linux/blk-mq.h?ref_type=heads#L321
> > >> >>
> > >> >> Fixes: 62486400d35b ("Add blk_mq shared tags support for dev -d/-D")
> > >> >> Signed-off-by: Tao Liu <[email protected]>
> > >> >> ---
> > >> >>  dev.c | 2 +-
> > >> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >> >>
> > >> >> diff --git a/dev.c b/dev.c
> > >> >> index 8391d71..27318e8 100644
> > >> >> --- a/dev.c
> > >> >> +++ b/dev.c
> > >> >> @@ -4464,7 +4464,7 @@ static void blk_mq_queue_tag_busy_iter(ulong q, 
> > >> >> ulong *hctx, uint cnt,
> > >> >>         readmem(addr + OFFSET(blk_mq_tag_set_flags), KVADDR,
> > >> >>                 &flags, sizeof(uint), "blk_mq_tag_set.flags", 
> > >> >> RETURN_ON_ERROR);
> > >> >>
> > >> >> -       if (blk_mq_is_shared_tags(flags)) {
> > >> >> +       if (blk_mq_is_shared_tags(flags) && 
> > >> >> VALID_MEMBER(blk_mq_tag_set_shared_tags)) {
> > >> >>                 addr = addr + OFFSET(blk_mq_tag_set_shared_tags);
> > >> >>                 queue_for_each_hw_ctx(q, addr, bitmap_tags_is_ptr, 
> > >> >> dio);
> > >> >>                 return;
> > >> >> --
> > >> >> 2.47.0
> > >>
--
Crash-utility mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to