From nobody Mon Feb 9 00:20:25 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (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 23230191 for ; Fri, 27 Dec 2024 04:27:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735273661; cv=none; b=smduEkOT9lOdDJ6MaGdMhFR8QyJT76aMpAovH2VorK6j+Bx6W61ugtHiqU9uLr+YQLT/X9Zs94DF+89Qz0I3Thbok0kA8MMnh3woiFLDldgaYQqIhrlAsTvKBxHNl2XrtvOUoUayk1A1eXb0hV978iCxzEncymAHsdzkC7tk/Sc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735273661; c=relaxed/simple; bh=RF8Abur1As6TnbgjM1nG8SXYqzMTgqTuhNqUYQ15/IQ=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=jj6jMdIOuB03Nfe2CT8Kw9zH2Q3h0k/YRs8amvnGntnuasS/ontNfhgIVOrT6jaOYcVUXL3WkX9kZJHxQ3Dr9dujvCcd/I/VXkwG1MkKiCrCxdm99SK0MTSZQWbdXMkzTEAqBzERPJU6MKNgXn5kQg4XAjdaTJsruhu1b+Bo/uA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ozle4leC; arc=none smtp.client-ip=209.85.216.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ozle4leC" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2ee74291415so6759979a91.3 for ; Thu, 26 Dec 2024 20:27:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735273659; x=1735878459; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yRxgseqYg6SG0Gngnlshhg45wwA+5RS6D8NBrS32Xz8=; b=Ozle4leCK2K4BJK5CXlGJR4gqBNaUTEF9fzNcDYEWJ1rMqpUUxOJ+2nQrfkUXrHNA3 fW0BAzZq+zt/OBBwfyW0VyR8Ad6cPkLSxbqKMs604VP0cHQnOZQb9+5LE/1MlP0KzETF 33EJysB0HswwvT+Ino3q5/oGBw1UcBd6afhJZfSIkCLfbYk24xPpIpmbkmxLl9j7683c DFvFd8iuo73oFe5qpPRyfNubRexxPXTwqIiE4RZea2Lg0gegJx4G1ZriuqarQBWVKkcN Cx9j/3cobE29Uy92o3t/K65xgQX+TvNu3kJ1KKXseZOHa1BTL3nE3tLENZj2o91LXnec pXYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735273659; x=1735878459; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=yRxgseqYg6SG0Gngnlshhg45wwA+5RS6D8NBrS32Xz8=; b=TB/7qZ9JJSxN0Kww/OWRFYu3GcrsjsV3nKRmJ5nenRf34aCZjgt6AVFDGEnOo0vsqK AFkQBVDforq+ZGkg260R84NUNMTcMZttTFsPaB5UgbgMAeTf+pCWWBacosGNWHMiRXsq 4RnU/vzMhEaJbMZBQ5TBrjVcIRr2rQ09agGkXKWLhWL1GY/lL6uiq1j5wkdyM6zck7g/ Cb3cR343afuy1FhvJmItF96WZVxNS9Wews5D1SfICqbFUSrrmrI7vqR7sxcLj8XvEAVr zvB/XfZhrke3WDawtsYWh9vCnd5eK21AikwVR7ebRrlEJEPP02lityVK0cC4tH9jeuL/ Sd2A== X-Forwarded-Encrypted: i=1; AJvYcCUo9+8krHTeHRmSl7FARSgSm6gcdTrrXyI7OjWmeJCKf3WWJEf1qgbLX55tCI1QVnc0DSrD8qR3DJcQGOk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy4vM1eIdJaHzYSQDz0TTDCnZBT8WYYViw/UE02j7chnt5E+rD1 uFHSFN3qe3TOscBe+nil13eauLZjZhWFAb6zjqNBCc8pZ7rqHUmt X-Gm-Gg: ASbGncv6x6cxEpgr0sHZ59oKOowcMV/7YFHdIt85/2xpL7+N/LyEHsQDBDBgw2/HCrk cWUVHWLLUJityb6dOU3iTSY4QPXVnBvA9ygCelGnH2pP1IbN/Tgr9LaPgYDRI7YEtRXkppWJPRt GIg6iQVNs2YPyIfX2pM6EclkrH9h9p2AAd7iIIR3QeMOQUtWeAhXh1L/kVHUdWFAKlLhJr3Gjk8 dX9LA3eZepO9CBop9ULMvdfL9k7ay/N8H5z0bbLvum+FJQKTtywuAfl5pM92KozrdVjstbB X-Google-Smtp-Source: AGHT+IGv89AUUOutOfm8ub4l6JvI+DQQ3VE0xPH3k5o8wPtnuHYt9mUFowB98LzlS4IdSaX+VAodAw== X-Received: by 2002:a17:90b:54cb:b0:2ee:ba84:5cac with SMTP id 98e67ed59e1d1-2f452dfd2eamr38816193a91.7.1735273659375; Thu, 26 Dec 2024 20:27:39 -0800 (PST) Received: from localhost.localdomain ([2401:4900:5abf:6c2:8c3c:dbc6:d773:4c4]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2f447882d11sm14856128a91.39.2024.12.26.20.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Dec 2024 20:27:38 -0800 (PST) From: Atharva Tiwari To: Cc: evepolonium@gmail.com, James Smart , Keith Busch , Jens Axboe , Christoph Hellwig , Sagi Grimberg , linux-nvme@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] nvme-fc: add DIF support for intergrity metadata Date: Fri, 27 Dec 2024 09:57:22 +0530 Message-Id: <20241227042722.1184-1-evepolonium@gmail.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch enhances the NVMe over Fibre Channel (NVMe-FC) driver to=20 handle requests with integrity metadata (DIF). - Added the inclusion of `` to enable integrity oper= ations. - Implemented support for mapping integrity metadata using `blk_rq_map_inte= grity_sg`. - Ensures proper handling of requests with integrity metadata, including er= ror cases where mapping fails. This update improves the reliability of data integrity checks in environmen= ts utilizing DIF. Signed-off-by: Atharva Tiwari --- drivers/nvme/host/fc.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c index b81af7919e94..d0343133413f 100644 --- a/drivers/nvme/host/fc.c +++ b/drivers/nvme/host/fc.c @@ -17,6 +17,7 @@ #include "fc.h" #include #include +#include =20 /* *************************** Data Structures/Defines ****************** = */ =20 @@ -2620,10 +2621,16 @@ nvme_fc_map_data(struct nvme_fc_ctrl *ctrl, struct = request *rq, freq->sg_cnt =3D 0; return -EFAULT; } - - /* - * TODO: blk_integrity_rq(rq) for DIF - */ + /* Handle requests with integrity metadata (DIF) */ + if (blk_integrity_rq(rq)) { + ret =3D blk_rq_map_integrity_sg(rq, freq->sg_table.sgl); + if (ret < 0) { + sg_free_table_chained(&freq->sg_table, NVME_INLINE_SG_CNT); + freq->sg_cnt =3D 0; + return -EFAULT; + } + freq->sg_cnt +=3D ret; + } return 0; } =20 --=20 2.39.5