[PATCH v2] nvme-multipath: revalidate zones for namespace heads

Bart Van Assche bvanassche at acm.org
Mon Sep 28 13:42:38 PDT 2026


On 6/9/26 8:28 PM, Yao Sang wrote:
>   		set_capacity_and_notify(ns->head->disk, get_capacity(ns->disk));
>   		set_disk_ro(ns->head->disk, nvme_ns_is_readonly(ns, info));
>   		nvme_mpath_revalidate_paths(ns->head);
> +		ret = nvme_mpath_revalidate_zones(ns->head);
>   
> +unfreeze_head_queue:
>   		blk_mq_unfreeze_queue(ns->head->disk->queue, memflags);

Does the above nvme_mpath_revalidate_zones() submit I/O while the
request queue is frozen? If so, is this guaranteed to trigger a
deadlock? I'm wondering whether the above changes are the changes that
introduced this syzbot report:
https://lore.kernel.org/linux-block/6ab26c90.c68e76dc.23da29.00ab.GAE@google.com/

 From that report:

-> #2 (&q->limits_lock){+.+.}-{4:4}:
        __mutex_lock_common kernel/locking/mutex.c:646 [inline]
        __mutex_lock+0x197/0x15a0 kernel/locking/mutex.c:821
        queue_limits_start_update include/linux/blkdev.h:1101 [inline]
        disk_update_zone_resources block/blk-zoned.c:2067 [inline]
        blk_revalidate_disk_zones+0xad9/0x12e0 block/blk-zoned.c:2375
        nvme_mpath_revalidate_zones+0x106/0x1c0 
drivers/nvme/host/multipath.c:301
        nvme_update_ns_info+0x984/0x1200 drivers/nvme/host/core.c:2622
        nvme_alloc_ns drivers/nvme/host/core.c:4284 [inline]
        nvme_scan_ns+0x2563/0x3640 drivers/nvme/host/core.c:4471
        async_run_entry_fn+0x9d/0x430 kernel/async.c:129
        process_one_work kernel/workqueue.c:3399 [inline]
        process_scheduled_works+0xc3d/0x1630 kernel/workqueue.c:3482
        worker_thread+0xa47/0xfb0 kernel/workqueue.c:3563
        kthread+0x38b/0x480 kernel/kthread.c:436
        ret_from_fork+0x514/0xb70 arch/x86/kernel/process.c:158
        ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

Thanks,

Bart.



More information about the Linux-nvme mailing list