From: Long Li <leo.lilong@huawei.com>
To: <leo.lilong@huaweicloud.com>, <josef@toxicpanda.com>, <axboe@kernel.dk>
Cc: <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<yi.zhang@huawei.com>, <yangerkun@huawei.com>,
<lonuxli.64@gmail.com>
Subject: Re: [PATCH 0/4] nbd: replace socks pointer array with xarray to eliminate queue freeze
Date: Mon, 20 Apr 2026 10:46:21 +0800 [thread overview]
Message-ID: <aeWTfZ5G5lXT9lZo@localhost.localdomain> (raw)
In-Reply-To: <20260327091223.4147956-1-leo.lilong@huaweicloud.com>
On Fri, Mar 27, 2026 at 05:12:19PM +0800, leo.lilong@huaweicloud.com wrote:
> From: Long Li <leo.lilong@huawei.com>
>
> Hi,
>
> Commit b98e762e3d ("nbd: freeze the queue while we're adding
> connections") introduced blk_mq_freeze_queue() in the add-socket path
> to prevent use-after-free when krealloc() relocates the config->socks
> array while I/O is in flight. However, freezing the queue on every
> connection setup introduces significant latency when establishing a
> large number of connections.
>
> This series eliminates the queue freeze by replacing the
> krealloc-based struct nbd_sock **socks array with a struct xarray.
> The xarray provides RCU-safe pointer publishing: each nbd_sock is
> fully initialized before being stored via xa_store(), and concurrent
> readers access individual entries through xa_load() without ever
> holding a reference to the array itself. This removes the possibility
> of UAF on array reallocation, making the queue freeze unnecessary.
>
> The following test was performed with 256 connections on a local
> nbd-server:
>
> nbd-server -M 256 -C /etc/nbd-server/config
> time nbd-client 127.0.0.1 10809 /dev/nbd0 -N myexport -C 256
>
> Before: real 4.510s user 0.004s sys 0.038s
> After: real 0.263s user 0.009s sys 0.032s
>
> Connection setup time is reduced by ~94%.
>
> Long Li (4):
> nbd: simplify find_fallback() by removing redundant logic
> nbd: replace socks pointer array with xarray
> nbd: remove redundant num_connections boundary checks
> nbd: remove queue freeze in nbd_add_socket
>
> drivers/block/nbd.c | 201 +++++++++++++++++++++++---------------------
> 1 file changed, 106 insertions(+), 95 deletions(-)
>
> --
> 2.39.2
>
Friendly ping ...
prev parent reply other threads:[~2026-04-20 2:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-27 9:12 [PATCH 0/4] nbd: replace socks pointer array with xarray to eliminate queue freeze leo.lilong
2026-03-27 9:12 ` [PATCH 1/4] nbd: simplify find_fallback() by removing redundant logic leo.lilong
2026-03-27 9:12 ` [PATCH 2/4] nbd: replace socks pointer array with xarray leo.lilong
2026-03-27 9:12 ` [PATCH 3/4] nbd: remove redundant num_connections boundary checks leo.lilong
2026-03-27 9:12 ` [PATCH 4/4] nbd: remove queue freeze in nbd_add_socket leo.lilong
2026-04-20 2:46 ` Long Li [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aeWTfZ5G5lXT9lZo@localhost.localdomain \
--to=leo.lilong@huawei.com \
--cc=axboe@kernel.dk \
--cc=josef@toxicpanda.com \
--cc=leo.lilong@huaweicloud.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lonuxli.64@gmail.com \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.