From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2FD654399CE for ; Wed, 22 Jul 2026 18:59:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746762; cv=none; b=ngJBEJckiT1senyak4ZyVCfN4NKKzS27iCNx8hCiNHn+eBZibdx3STSRBjUGHYvM9vb4yT5pDib0FTkvmFW8Aztffyr+E29HfjOdByolcwHKt9aiifVWmoX24mNUcbeGclu0fLJCmf+A2M+2XHq2oySSW2mqgN0CEMqG0H2MjKI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746762; c=relaxed/simple; bh=txEBr1MoU1y1mkJ/HHXFbnluQk+VRueyunkBGuSqgtw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bL4vt1P4bZvq+bHHkNVuWpuecoGEq78bnAqLUx6feu8NwlwyShkM6r3D/0OWBBeNriwis1l9MgJMAo8q0UGISpuWtI/pTyh1trbTQM52hCfMjgR7slsSZ0FrrG6oCDPXzRcnY20f15W6FDdZ5bNlFQgMVLwvxWrYSTYbirJYT1Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io; spf=pass smtp.mailfrom=meshstor.io; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b=H1wkgX05; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=meshstor.io Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=meshstor.io Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=meshstor.io header.i=@meshstor.io header.b="H1wkgX05" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-493f6de72faso45305835e9.0 for ; Wed, 22 Jul 2026 11:59:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meshstor.io; s=google; t=1784746754; x=1785351554; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=XGlz7sxVhffzS6r4ROT44BH0oh58kUxNrwba0cAE+h4=; b=H1wkgX05RHJTUWYprRsuGf3VDGrnWdopU+EKgLmswxyGXuyAtX/JXr2Yuh5N2t/JOX Yh0EiRSzmOI3gHd3cQSaQLV4wPbLXSMrUo6vOhcssWWslM3ZDyZ1hGSA0kl7iRZpHciE +It5bRwc0temO8hUL1zEx9DO8Xq9U/LuG2bJFf1g3aI1PvTOOmamJeDG6WDSK9qarsa1 4X43Tmrn6PTMlZ6pRckVGJ+DyfLyU9DVNtTgFFMEZ3ol3K5RJAtTOxOV8K8PxW8kXID+ KARFNKDueTbGrLuXCiQl+vHl4HwyLNw8FyO8YBJRE8cY03Jz0ixbLwVZsByBskLVGcAN Pf5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784746754; x=1785351554; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=XGlz7sxVhffzS6r4ROT44BH0oh58kUxNrwba0cAE+h4=; b=QCslX9zZfOSaILSssqloyZd57721xn19sx7ckH2vd131k8F4QrX3DrpdGbomE01V34 HmWMrKBe6lTHRRM6F55bVLwLLN19w+iVX13Uc+hmvAIuFEXM1R+EGmXun5ajaSzmEyKG pChdJ1RicZZ0C34r8yeyeehcG7aIMmPV7t8wSK+5mIXb85pxvGJKpoAPEhJ2trx9Zqff U+PHMBKRK5OhhQea2SZZKpp9kBXIX7uG6h99zCku6JtHC2HvqzDll6JlKDxkqk8WAUJ5 yj7NlgxjP6N/LY3S/Q3Z0VBl4JGA12hSnUMgGZ91JU4QvIMs1H6p1Z1ynP+2w+15Z5u5 wyXg== X-Forwarded-Encrypted: i=1; AHgh+RrwhFwi5+hdpR2b4ddqk8gc1SCMo8Vc64fC63aKEQukfg+o+GZ4VTDRw0Qe7CmEiona1G+Ot+hJXi6E77k=@vger.kernel.org X-Gm-Message-State: AOJu0YzBKAbPedpp7+M38iS8RpYopIezbUkSxSD0pcjDTsDWjrXr9D9U BGnnxHzze2Makk9qOKjY7mKtvi2FxjabqZr60C08+xRcKXCXZ8mXpOt47QWd8jVjlg== X-Gm-Gg: AR+sD12qMihf7SQEEU5bONPKXg92EcVByRJhGG29Usu5DBl5hUk9A06Tx1bMBXu5HLn nP9yemfq+RK0oDAzN4Akrp+Ma8uz/IDmo2o3DJDJMByhIGhwlQijYUsQ8JoJTNhrbuR5ejK1uHi 34W51+NFeyNs95j+zRUL/KvGDWXH349PCDiVhrWJTg0p7oB9oUH5MP+k27mN+zkvU64kUwYOwQY 3bp65K8ViuLswoRD4829zj988QAtsdDUvxftfESQrf7l17b+Rq7EwnWRbn37BIPUCVH9LcIcCR7 PCdM979CNbeC9KHfE8+pko7IxdR/O1bSejIOFp2Kz/kUsDuN31cXWEt6OED7UtCZSSyTJa1t6gr W/aZ0IKiMIZEvL3jsaapG7Swky8uGf432U6DeCXxnIgwTdO1xnif1G82ziyf21SLilTEnPlauCT 3fw8q17LbZU9B9AohTHKzgYiAl7x929j0kdyVAC8yAgiVEtvw= X-Received: by 2002:a05:600c:1d23:b0:495:7016:b875 with SMTP id 5b1f17b1804b1-4957016c17dmr25808785e9.13.1784746753845; Wed, 22 Jul 2026 11:59:13 -0700 (PDT) Received: from ai-pc ([46.172.241.174]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-495730353d9sm13740055e9.12.2026.07.22.11.59.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 11:59:13 -0700 (PDT) From: Mykola Marzhan To: Jens Axboe , Song Liu , Yu Kuai , Keith Busch , Christoph Hellwig , Sagi Grimberg , linux-block@vger.kernel.org, linux-raid@vger.kernel.org, linux-nvme@lists.infradead.org Cc: Li Nan , Xiao Ni , Guoqing Jiang , Leon Romanovsky , Jason Gunthorpe , Kiran Kumar Modukuri , Chaitanya Kulkarni , Logan Gunthorpe , Bjorn Helgaas , Shivaji Kant , Pranjal Shrivastava , Henrique Carvalho , linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v4 7/9] md/raid1,raid10: skip futile retries on P2PDMA mapping failures Date: Wed, 22 Jul 2026 20:58:39 +0200 Message-ID: <20260722185841.449934-8-mykola@meshstor.io> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260722185841.449934-1-mykola@meshstor.io> References: <20260722185841.449934-1-mykola@meshstor.io> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Logan Gunthorpe BLK_STS_P2PDMA reflects the peer/member pairing, not member health: retrying the same pages on the same member cannot succeed. Keep WriteErrorSeen so the range stays fenced, but skip WantReplacement and FailFast eviction, as commit f7b24c7b41f2 ("md/raid1,raid10: don't fail devices for invalid IO errors") did for BLK_STS_INVAL. The failure is whole-range and deterministic, so narrow_write_error()'s block-by-block submit_bio_wait() retries are pointless. Record the whole range as a bad block in the completion handler instead. Fixes: 02666132403a ("md: propagate BLK_FEAT_PCI_P2PDMA from member devices to RAID device") Assisted-by: Claude:claude-fable-5 Signed-off-by: Logan Gunthorpe Co-developed-by: Mykola Marzhan Signed-off-by: Mykola Marzhan --- drivers/md/raid1-10.c | 3 +++ drivers/md/raid1.c | 12 +++++++++--- drivers/md/raid10.c | 8 +++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c index cee21452e066..89daf8558251 100644 --- a/drivers/md/raid1-10.c +++ b/drivers/md/raid1-10.c @@ -309,6 +309,9 @@ static inline void raid1_write_error(struct mddev *mddev, struct md_rdev *rdev, { set_bit(WriteErrorSeen, &rdev->flags); + if (bio->bi_status == BLK_STS_P2PDMA) + return; + if (!test_and_set_bit(WantReplacement, &rdev->flags)) set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index 19c4dec450de..917d694ef401 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -2624,10 +2624,16 @@ static void handle_write_finished(struct r1conf *conf, struct r1bio *r1_bio) * narrow down and record precise write * errors. */ + struct md_rdev *rdev = conf->mirrors[m].rdev; + fail = true; - narrow_write_error(r1_bio, m); - rdev_dec_pending(conf->mirrors[m].rdev, - conf->mddev); + /* Mapping failures are whole-range and deterministic */ + if (r1_bio->bios[m]->bi_status == BLK_STS_P2PDMA) + rdev_set_badblocks(rdev, r1_bio->sector, + r1_bio->sectors, 0); + else + narrow_write_error(r1_bio, m); + rdev_dec_pending(rdev, conf->mddev); } if (fail) { spin_lock_irq(&conf->device_lock); diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 428bddddfe71..9045a3f02dae 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -2940,7 +2940,13 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio) rdev_dec_pending(rdev, conf->mddev); } else if (bio != NULL && bio->bi_status) { fail = true; - narrow_write_error(r10_bio, m); + /* Mapping failures are whole-range and deterministic */ + if (bio->bi_status == BLK_STS_P2PDMA) + rdev_set_badblocks(rdev, + r10_bio->devs[m].addr, + r10_bio->sectors, 0); + else + narrow_write_error(r10_bio, m); rdev_dec_pending(rdev, conf->mddev); } bio = r10_bio->devs[m].repl_bio; -- 2.52.0