From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CF11DC77B73 for ; Wed, 31 May 2023 11:39:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B95C8E0001; Wed, 31 May 2023 07:39:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 346728E0003; Wed, 31 May 2023 07:39:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0649F8E0001; Wed, 31 May 2023 07:39:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id E49C46B0089 for ; Wed, 31 May 2023 07:39:02 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id ABE3B14035D for ; Wed, 31 May 2023 11:39:02 +0000 (UTC) X-FDA: 80850353724.06.3A4B808 Received: from esa2.hgst.iphmx.com (esa2.hgst.iphmx.com [68.232.143.124]) by imf03.hostedemail.com (Postfix) with ESMTP id 8DB932000C for ; Wed, 31 May 2023 11:39:00 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=wdc.com header.s=dkim.wdc.com header.b=K6cQrbPg; spf=pass (imf03.hostedemail.com: domain of "prvs=508ef2a02=johannes.thumshirn@wdc.com" designates 68.232.143.124 as permitted sender) smtp.mailfrom="prvs=508ef2a02=johannes.thumshirn@wdc.com"; dmarc=pass (policy=quarantine) header.from=wdc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685533140; a=rsa-sha256; cv=none; b=5ew75D0kXJSklbFO85C8kZqs8SwbqMS950GKfUoQYLmA9LuFDJaS6/tqAMIttg3BLnDgh8 7BUjCH6awk+w6ImOGYC+CdweZQWkunNq4UaY7msfB7kpK5uENJaaduufEGLVGrWSOv8+4m YGnGxaHrXxIgLexz0QR+SH94uF1n4bU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=wdc.com header.s=dkim.wdc.com header.b=K6cQrbPg; spf=pass (imf03.hostedemail.com: domain of "prvs=508ef2a02=johannes.thumshirn@wdc.com" designates 68.232.143.124 as permitted sender) smtp.mailfrom="prvs=508ef2a02=johannes.thumshirn@wdc.com"; dmarc=pass (policy=quarantine) header.from=wdc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685533140; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=coh5CBUvVZIC7R6lhSdYV3LoxqSD+fY+F1rkUy818H4=; b=icUzAmbsQxD7bN/I++RIDEc4DKH4sQoBJp8C69J+Ed1x4r/xV15vLbM5mEVnnPqoktBE3p 7SQcfg5Dvr3astH2FvdOLZ8bmgj4HI+sEHehmgGwe5gQR83saC20hCtiUzp2DMZ1xHiRcW hOShghayMYChP/BZgDpTx9OZUXnSLXw= DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1685533140; x=1717069140; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KgD+R+FU9CwRmwQAVm8lMGGwTIZNIyKz56pAeZ5nm90=; b=K6cQrbPgOwSoMgwrXEQwL05d13aIshluO0BAwklZnkOmKk8Oe5V7Og17 RIN7sROkifz3CxeEovHA/fi6pcsdelYoPw5+3OnubRxKVwn2TZRTFG23F gSoJ8bMiY/qOVyHXGzXIsSCyHfV45NMCPlyQ/p91LRvnwRtm0lnMi/5PL hiXza+7XT99cgL+Q3vKZzCSadOTqyF4AM1svXt++jzYzQsqFXNY1lLtFf 0wYq62c51rivCvbbUpIy1V+SXlXuFLSDvKmHP0AYLxRtoUzAOqjWElh6S yk5eF8qYcGDcYPzJApHg/ZWfRT8ZhjID6IfnQo0K/+wWsvSmFgD1QkfOp Q==; X-IronPort-AV: E=Sophos;i="6.00,207,1681142400"; d="scan'208";a="336547328" Received: from h199-255-45-14.hgst.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 31 May 2023 19:38:53 +0800 IronPort-SDR: WsPk4DvWiL5l6lmUUhR+EGnaa1xsUeOrPCw5F0LY64YeHOoU4korrGkZdkWUDmxAb2uwzx25Yp t7XVWACvhfuDSG1AsUo2m7xBPUikJv5M7eT0nKlQL9CHSjmUM/BygN+plbFP+VP8tm/1CorXDG qpk/eV0igkNX8TPi7faTq1DNJedtU47EJJvmeg5hDqyZ++tl5uOLR3v2Aatg0uJDRw8COtz9VI JJ1pDvvPLPTC+p+BXuzQFkAemmPOo09dERfd7HBVAbzM7k+eVXRVAYj8FRn/0J73QB7Wpk8tez W2g= Received: from uls-op-cesaip02.wdc.com ([10.248.3.37]) by uls-op-cesaep01.wdc.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 31 May 2023 03:53:45 -0700 IronPort-SDR: PsZn/Nu4ZS9iHig62snojVD3rPBF+WjbuBai2AMz2Mk8zGoUkKpCg2BQebNELDMp1vRmfGp+uX P0jl72NrMpF+vpuJNMzAJJBHLS6i55t5zyyOCliG5xQIg8x1RBhSPA5ax1tgVmFj166ZVswZJm UNvdUHrH2P8kq61RkpTpESk3gtnllIYkzZO+kmJQdsmqLYDCT8Fi3lPlboPylYdjLSgqm2tnX4 2439bMFrQZNd08pAjUDQD4BxcZlRHGJ8eKi0nS5FOs8uTLPACWZs6jP/ISRLSEF6eGe8mA/PHn 5w4= WDCIronportException: Internal Received: from unknown (HELO redsun91.ssa.fujisawa.hgst.com) ([10.149.66.6]) by uls-op-cesaip02.wdc.com with ESMTP; 31 May 2023 04:38:50 -0700 From: Johannes Thumshirn To: Jens Axboe Cc: Christoph Hellwig , Hannes Reinecke , Chaitanya Kulkarni , Damien Le Moal , Ming Lei , linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, dm-devel@redhat.com, Song Liu , linux-raid@vger.kernel.org, Mike Snitzer , Matthew Wilcox , Dave Kleikamp , jfs-discussion@lists.sourceforge.net, cluster-devel@redhat.com, Bob Peterson , Andreas Gruenbacher , Mikulas Patocka , gouha7@uniontech.com, Johannes Thumshirn , Damien Le Moal Subject: [PATCH v6 15/20] md: raid1: check if adding pages to resync bio fails Date: Wed, 31 May 2023 04:37:57 -0700 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 8DB932000C X-Stat-Signature: of5k9sb8treor6msuiefifn1cczbyzwe X-Rspam-User: X-HE-Tag: 1685533140-569398 X-HE-Meta: U2FsdGVkX1/rNfBgjMWavYpaHybnGb9hHt1VzC2D5otM5HZAgAyuf7ICNGhHf+r+DMg/2wdduLghFkjOHlj+riwY/TL9V+QzMcUapmzqQRu6+vRwbl/8xPLEutjGgcT9856KZQxTpbHsAod81zbdp1A9F8Z7Umco8L17Cgb0XKhZD68THkUCZfCFgWzc2OPIFVpU52+NJVgP5SnMf6jSXTpoEIWlSvZJyQIlXq3fLwLFpes/KgVqKibbWBvRHXpGI89GDh5M6iIeqiagkMFGz7MIgayedrszUl2cWVQuvdHmXM6uyssGKwZXoESlm+hwDeBOunLrbju7uXTdXCWaqbhbj4Az9ih8GmstSo0FItLlWAjP7QKv6f03O9F8MT3s7wOJL/FvbH3bCxPtsIsxPMtQH4fK9YCKjebyjlVB3Tuih1DJIoei/TMVPrf6OQYsccCkfbnTSCFEjshokQlJTMLv23dTCjIalKPxnyAZIDlA+kqCF39hACJrvDm1s/PIYBXEnZjumaJpmHQOj1LLvD49zMHRyf7nMTYdFpFUzDCdXYJIGN1smbVLAVJbSJJyYn+KN6C7YjeUdQVNmSTOgtXt7puRcESYklcq6G4fCixAWj0YuU4FVBZhuHHSnrskNv2RMJ85k54PXZad0WbNrvsJNVyQ649AJCsFxX4BVryc41LNQnmIFipNnug6wMrroMpwe7WDJ74m7YPgHASjUU/kyN4aJcwSzCDwqsqBhU9MZ52ykycDnBoR5tkB5QyFKW2Qaido4FX34Bup9Yvq57+aYC8Sed9F4bXYuiYJ+yN5BnHC9r52BDPMvrcoWQMAXLwl1tD76q9KpI94poD0Ya6FQ7KWhp5+Dl5PfO6JixGx+K2L6nuN3NqavOkX7wInjQWFs8csbwN3kdR2/qUiANmGB9HfD2Mdp1iz+MWlbZcsqAAPW5KailHnq9u/G/A+19QZihmptzZzLH66/wW lVCagc2q ijF4MJsqN6cgmzRDmCo7DckvoEB4cWGEvyUb1C24TlvJ4fMHzZCWCFNaju1qtDRRMKn/+wcis4gDE9SW1bWBSYQp3VSib/nzq4I77rE1ZoEoD/7fCcw+Dg/Z5Si+fZM6hROieQLwNWBQ668oJ059xM1h2h95fClk9hJxCta67RiLk5HrITzxqV+iEK1cnciERFOrW/GvTvXi01IrgYsmsp272IiBryYJa50OSEmnRl6UJqElxyXzgW/4gnY3SlMy6sokyW03kqsxZbfEzbbq7hVxJHsePtxe5I93gIsPaKQDLWxdrVdMB/VOqvlauTcBrcIkgNydn3Iy0uefXUUOETUTssz8Fwp1q/C6J32ZQ2OuGQXxrsOSe5P2EuywJyWpELOBIu4aSILUSTNieoQXsPbTmGICa4/7pEk8x X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Message-ID: <20230531113757.SG1tHJbV1OcqRN5LCB2UAW43xbmM9NnF54hXZ1fDgno@z> 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. Reviewed-by: Damien Le Moal Acked-by: Song Liu Signed-off-by: Johannes Thumshirn --- drivers/md/raid1-10.c | 11 ++++++----- drivers/md/raid10.c | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c index e61f6cad4e08..cd349e69ed77 100644 --- a/drivers/md/raid1-10.c +++ b/drivers/md/raid1-10.c @@ -101,11 +101,12 @@ static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp, struct page *page = resync_fetch_page(rp, idx); int len = min_t(int, size, PAGE_SIZE); - /* - * 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; + } + size -= len; } while (idx++ < RESYNC_PAGES && size > 0); } diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 4fcfcb350d2b..381c21f7fb06 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -3819,11 +3819,11 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr, for (bio= biolist ; bio ; bio=bio->bi_next) { struct resync_pages *rp = get_resync_pages(bio); page = resync_fetch_page(rp, page_idx); - /* - * 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; @@ -4997,11 +4997,11 @@ static sector_t reshape_request(struct mddev *mddev, sector_t sector_nr, if (len > PAGE_SIZE) len = PAGE_SIZE; for (bio = blist; bio ; bio = bio->bi_next) { - /* - * 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; + } } sector_nr += len >> 9; nr_sectors += len >> 9; -- 2.40.1