Re: [PATCH] raid10_handle_discard() reuses r10bio objects from r10bio_pool.

Xiao Ni <[email protected]>
Newsgroups gmane.linux.raid,gmane.linux.kernel
Message-ID <CAF-RUYXx6rG4A4kOwoW2oG+FkBGfQToyk91UBm6wruDyL7WaTg@mail.gmail.com>
On Fri, May 15, 2026 at 6:11 PM Chen Cheng <[email protected]> wrote:
>
> From: Chen Cheng <[email protected]>
>
> put_all_bios() always drops devs[i].bio, but it only drops
> devs[i].repl_bio when r10_bio->read_slot < 0. If discard reuses an
> r10bio that was previously used for a read, read_slot can still be
> non-negative, and discard cleanup can skip bio_put() on repl_bio.
>
> Reset read_slot to -1 when preparing an r10bio for discard so the
> replacement bio is always released correctly.
>
> Signed-off-by: Chen Cheng <[email protected]>
> ---
>  drivers/md/raid10.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
> index 39085e7dd6d2..7dc2a5a127e8 100644
> --- a/drivers/md/raid10.c
> +++ b/drivers/md/raid10.c
> @@ -1727,6 +1727,7 @@ static int raid10_handle_discard(struct mddev *mddev, struct bio *bio)
>         r10_bio->mddev = mddev;
>         r10_bio->state = 0;
>         r10_bio->sectors = 0;
> +       r10_bio->read_slot = -1;
>         memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) * geo->raid_disks);
>         wait_blocked_dev(mddev, r10_bio);
>
> --
> 2.54.0
>

Hi Chen

The title usually uses a format such as md/raid10: xxxx

This patch looks good to me.
Reviewed-by: Xiao Ni <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.