All of lore.kernel.org
 help / color / mirror / Atom feed
From: Song Liu <song@kernel.org>
To: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Cc: Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@lst.de>,
	Hannes Reinecke <hare@suse.de>,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Damien Le Moal <damien.lemoal@wdc.com>,
	Ming Lei <ming.lei@redhat.com>,
	linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, dm-devel@redhat.com,
	linux-raid@vger.kernel.org, Mike Snitzer <snitzer@kernel.org>,
	Matthew Wilcox <willy@infradead.org>,
	Dave Kleikamp <shaggy@kernel.org>,
	jfs-discussion@lists.sourceforge.net, cluster-devel@redhat.com,
	Bob Peterson <rpeterso@redhat.com>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	David Sterba <dsterba@suse.com>,
	linux-btrfs@vger.kernel.org,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>
Subject: Re: [PATCH v2 17/19] md: raid1: check if adding pages to resync bio fails
Date: Fri, 31 Mar 2023 11:13:51 -0700	[thread overview]
Message-ID: <CAPhsuW7a+mpn+VprfA2mC5Fc+M9BFq8i6d-y+-o5G1u5dOsk2Q@mail.gmail.com> (raw)
In-Reply-To: <8b8a3bb2db8c5183ef36c1810f2ac776ac526327.1680172791.git.johannes.thumshirn@wdc.com>

On Thu, Mar 30, 2023 at 3:44 AM Johannes Thumshirn
<johannes.thumshirn@wdc.com> wrote:
>
> Check if adding pages to resync bio fails and if bail out.
>
> As the comment above suggests this cannot happen, WARN if it actually
> happens.
>
> This way we can mark bio_add_pages as __must_check.
>
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> ---
>  drivers/md/raid1-10.c |  7 ++++++-
>  drivers/md/raid10.c   | 12 ++++++++++--
>  2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
> index e61f6cad4e08..c21b6c168751 100644
> --- a/drivers/md/raid1-10.c
> +++ b/drivers/md/raid1-10.c
> @@ -105,7 +105,12 @@ static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
>                  * won't fail because the vec table is big
>                  * enough to hold all these pages
>                  */

We know these won't fail. Shall we just use __bio_add_page?

Thanks,
Song

> -               bio_add_page(bio, page, len, 0);
> +               if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                       bio->bi_status = BLK_STS_RESOURCE;
> +                       bio_endio(bio);
> +                       return;
> +               }
> +
>                 size -= len;
>         } while (idx++ < RESYNC_PAGES && size > 0);
>  }
> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
> index 6c66357f92f5..5682dba52fd3 100644
> --- a/drivers/md/raid10.c
> +++ b/drivers/md/raid10.c
> @@ -3808,7 +3808,11 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               goto giveup;
> +                       }
>                 }
>                 nr_sectors += len>>9;
>                 sector_nr += len>>9;
> @@ -4989,7 +4993,11 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               return sectors_done; /* XXX: is this correct? */
> +                       }
>                 }
>                 sector_nr += len >> 9;
>                 nr_sectors += len >> 9;
> --
> 2.39.2
>

WARNING: multiple messages have this Message-ID (diff)
From: Song Liu <song@kernel.org>
To: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Cc: Jens Axboe <axboe@kernel.dk>,
	linux-raid@vger.kernel.org,
	Damien Le Moal <damien.lemoal@wdc.com>,
	cluster-devel@redhat.com, Chaitanya Kulkarni <kch@nvidia.com>,
	Andreas Gruenbacher <agruenba@redhat.com>,
	Dave Kleikamp <shaggy@kernel.org>,
	Damien Le Moal <damien.lemoal@opensource.wdc.com>,
	Mike Snitzer <snitzer@kernel.org>,
	jfs-discussion@lists.sourceforge.net,
	Matthew Wilcox <willy@infradead.org>,
	Ming Lei <ming.lei@redhat.com>,
	linux-block@vger.kernel.org, linux-mm@kvack.org,
	dm-devel@redhat.com, David Sterba <dsterba@suse.com>,
	linux-fsdevel@vger.kernel.org, Christoph Hellwig <hch@lst.de>,
	linux-btrfs@vger.kernel.org, Bob Peterson <rpeterso@redhat.com>
Subject: Re: [dm-devel] [PATCH v2 17/19] md: raid1: check if adding pages to resync bio fails
Date: Fri, 31 Mar 2023 11:13:51 -0700	[thread overview]
Message-ID: <CAPhsuW7a+mpn+VprfA2mC5Fc+M9BFq8i6d-y+-o5G1u5dOsk2Q@mail.gmail.com> (raw)
In-Reply-To: <8b8a3bb2db8c5183ef36c1810f2ac776ac526327.1680172791.git.johannes.thumshirn@wdc.com>

On Thu, Mar 30, 2023 at 3:44 AM Johannes Thumshirn
<johannes.thumshirn@wdc.com> wrote:
>
> Check if adding pages to resync bio fails and if bail out.
>
> As the comment above suggests this cannot happen, WARN if it actually
> happens.
>
> This way we can mark bio_add_pages as __must_check.
>
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> ---
>  drivers/md/raid1-10.c |  7 ++++++-
>  drivers/md/raid10.c   | 12 ++++++++++--
>  2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
> index e61f6cad4e08..c21b6c168751 100644
> --- a/drivers/md/raid1-10.c
> +++ b/drivers/md/raid1-10.c
> @@ -105,7 +105,12 @@ static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
>                  * won't fail because the vec table is big
>                  * enough to hold all these pages
>                  */

We know these won't fail. Shall we just use __bio_add_page?

Thanks,
Song

> -               bio_add_page(bio, page, len, 0);
> +               if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                       bio->bi_status = BLK_STS_RESOURCE;
> +                       bio_endio(bio);
> +                       return;
> +               }
> +
>                 size -= len;
>         } while (idx++ < RESYNC_PAGES && size > 0);
>  }
> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
> index 6c66357f92f5..5682dba52fd3 100644
> --- a/drivers/md/raid10.c
> +++ b/drivers/md/raid10.c
> @@ -3808,7 +3808,11 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               goto giveup;
> +                       }
>                 }
>                 nr_sectors += len>>9;
>                 sector_nr += len>>9;
> @@ -4989,7 +4993,11 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               return sectors_done; /* XXX: is this correct? */
> +                       }
>                 }
>                 sector_nr += len >> 9;
>                 nr_sectors += len >> 9;
> --
> 2.39.2
>

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel

WARNING: multiple messages have this Message-ID (diff)
From: Song Liu <song@kernel.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH v2 17/19] md: raid1: check if adding pages to resync bio fails
Date: Fri, 31 Mar 2023 11:13:51 -0700	[thread overview]
Message-ID: <CAPhsuW7a+mpn+VprfA2mC5Fc+M9BFq8i6d-y+-o5G1u5dOsk2Q@mail.gmail.com> (raw)
In-Reply-To: <8b8a3bb2db8c5183ef36c1810f2ac776ac526327.1680172791.git.johannes.thumshirn@wdc.com>

On Thu, Mar 30, 2023 at 3:44?AM Johannes Thumshirn
<johannes.thumshirn@wdc.com> wrote:
>
> Check if adding pages to resync bio fails and if bail out.
>
> As the comment above suggests this cannot happen, WARN if it actually
> happens.
>
> This way we can mark bio_add_pages as __must_check.
>
> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> ---
>  drivers/md/raid1-10.c |  7 ++++++-
>  drivers/md/raid10.c   | 12 ++++++++++--
>  2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
> index e61f6cad4e08..c21b6c168751 100644
> --- a/drivers/md/raid1-10.c
> +++ b/drivers/md/raid1-10.c
> @@ -105,7 +105,12 @@ static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
>                  * won't fail because the vec table is big
>                  * enough to hold all these pages
>                  */

We know these won't fail. Shall we just use __bio_add_page?

Thanks,
Song

> -               bio_add_page(bio, page, len, 0);
> +               if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                       bio->bi_status = BLK_STS_RESOURCE;
> +                       bio_endio(bio);
> +                       return;
> +               }
> +
>                 size -= len;
>         } while (idx++ < RESYNC_PAGES && size > 0);
>  }
> diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
> index 6c66357f92f5..5682dba52fd3 100644
> --- a/drivers/md/raid10.c
> +++ b/drivers/md/raid10.c
> @@ -3808,7 +3808,11 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               goto giveup;
> +                       }
>                 }
>                 nr_sectors += len>>9;
>                 sector_nr += len>>9;
> @@ -4989,7 +4993,11 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr,
>                          * won't fail because the vec table is big enough
>                          * to hold all these pages
>                          */
> -                       bio_add_page(bio, page, len, 0);
> +                       if (WARN_ON(!bio_add_page(bio, page, len, 0))) {
> +                               bio->bi_status = BLK_STS_RESOURCE;
> +                               bio_endio(bio);
> +                               return sectors_done; /* XXX: is this correct? */
> +                       }
>                 }
>                 sector_nr += len >> 9;
>                 nr_sectors += len >> 9;
> --
> 2.39.2
>


  reply	other threads:[~2023-03-31 18:14 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-30 10:43 [PATCH v2 00/19] bio: check return values of bio_add_page Johannes Thumshirn
2023-03-30 10:43 ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 01/19] swap: use __bio_add_page to add page to bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 02/19] drbd: " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 03/19] dm: dm-zoned: use __bio_add_page for adding single metadata page Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 04/19] fs: buffer: use __bio_add_page to add single page to bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 05/19] md: use __bio_add_page to add single page Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 17:47   ` Song Liu
2023-03-31 17:47     ` [Cluster-devel] " Song Liu
2023-03-31 17:47     ` [dm-devel] " Song Liu
2023-03-30 10:43 ` [PATCH v2 06/19] md: raid5-log: " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 17:47   ` Song Liu
2023-03-31 17:47     ` [Cluster-devel] " Song Liu
2023-03-31 17:47     ` [dm-devel] " Song Liu
2023-03-30 10:43 ` [PATCH v2 07/19] md: raid5: use __bio_add_page to add single page to new bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 17:47   ` Song Liu
2023-03-31 17:47     ` [Cluster-devel] " Song Liu
2023-03-31 17:47     ` [dm-devel] " Song Liu
2023-03-30 10:43 ` [PATCH v2 08/19] btrfs: repair: use __bio_add_page for adding single page Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 09/19] btrfs: raid56: use __bio_add_page to add " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 10/19] jfs: logmgr: use __bio_add_page to add single page to bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 16:50   ` Dave Kleikamp
2023-03-30 16:50     ` [Cluster-devel] " Dave Kleikamp
2023-03-30 16:50     ` [dm-devel] " Dave Kleikamp
2023-03-30 10:43 ` [PATCH v2 11/19] gfs: use __bio_add_page for adding " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 12/19] zonefs: " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 13/19] zram: " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 14/19] floppy: " Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:43 ` [PATCH v2 15/19] md: check for failure when adding pages in alloc_behind_master_bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 17:54   ` Song Liu
2023-03-31 17:54     ` [Cluster-devel] " Song Liu
2023-03-31 17:54     ` [dm-devel] " Song Liu
2023-03-30 10:43 ` [PATCH v2 16/19] md: raid1: use __bio_add_page for adding single page to bio Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 17:59   ` Song Liu
2023-03-31 17:59     ` [Cluster-devel] " Song Liu
2023-03-31 17:59     ` [dm-devel] " Song Liu
2023-03-30 10:43 ` [PATCH v2 17/19] md: raid1: check if adding pages to resync bio fails Johannes Thumshirn
2023-03-30 10:43   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:43   ` [dm-devel] " Johannes Thumshirn
2023-03-31 18:13   ` Song Liu [this message]
2023-03-31 18:13     ` [Cluster-devel] " Song Liu
2023-03-31 18:13     ` [dm-devel] " Song Liu
2023-04-04  8:26     ` Johannes Thumshirn
2023-04-04  8:26       ` [Cluster-devel] " Johannes Thumshirn
2023-04-04  8:26       ` [dm-devel] " Johannes Thumshirn
2023-04-10 16:06       ` Song Liu
2023-04-10 16:06         ` [Cluster-devel] " Song Liu
2023-04-10 16:06         ` [dm-devel] " Song Liu
2023-03-30 10:44 ` [PATCH v2 18/19] dm-crypt: check if adding pages to clone " Johannes Thumshirn
2023-03-30 10:44   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:44   ` [dm-devel] " Johannes Thumshirn
2023-03-30 10:44 ` [PATCH v2 19/19] block: mark bio_add_page as __must_check Johannes Thumshirn
2023-03-30 10:44   ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 10:44   ` [dm-devel] " Johannes Thumshirn
2023-03-30 15:45 ` [PATCH v2 00/19] bio: check return values of bio_add_page David Sterba
2023-03-30 15:45   ` [Cluster-devel] " David Sterba
2023-03-30 15:45   ` [dm-devel] " David Sterba
2023-03-30 16:41   ` Johannes Thumshirn
2023-03-30 16:41     ` [Cluster-devel] " Johannes Thumshirn
2023-03-30 16:41     ` [dm-devel] " Johannes Thumshirn
2023-03-30 19:25     ` David Sterba
2023-03-30 19:25       ` [Cluster-devel] " David Sterba
2023-03-30 19:25       ` [dm-devel] " David Sterba

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=CAPhsuW7a+mpn+VprfA2mC5Fc+M9BFq8i6d-y+-o5G1u5dOsk2Q@mail.gmail.com \
    --to=song@kernel.org \
    --cc=agruenba@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=cluster-devel@redhat.com \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=damien.lemoal@wdc.com \
    --cc=dm-devel@redhat.com \
    --cc=dsterba@suse.com \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=jfs-discussion@lists.sourceforge.net \
    --cc=johannes.thumshirn@wdc.com \
    --cc=kch@nvidia.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=ming.lei@redhat.com \
    --cc=rpeterso@redhat.com \
    --cc=shaggy@kernel.org \
    --cc=snitzer@kernel.org \
    --cc=willy@infradead.org \
    /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.