public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies
       [not found] <CGME20250305063900epcas5p38bb20587ccf4310cfb0f3307180eb536@epcas5p3.samsung.com>
@ 2025-03-05  6:30 ` Anuj Gupta
  2025-03-05  6:30   ` [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices Anuj Gupta
                     ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Anuj Gupta @ 2025-03-05  6:30 UTC (permalink / raw)
  To: axboe, hch, martin.petersen
  Cc: anuj1072538, nikh1092, linux-nvme, linux-block, linux-scsi,
	dm-devel, Anuj Gupta

Patch 1: Ensures DM devices correctly propagate
device_is_integrity_capable
Patch 2: initialize nogenerate and noverify correctly

Changes since v2:
Ensure that integrity capability gets propogated correctly for all cases
in DM (hch)

Changes since v1:
initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY in
blk_validate_integrity_limits rather than doing it in the driver (hch)

Anuj Gupta (2):
  block: ensure correct integrity capability propagation in stacked
    devices
  block: Correctly initialize BLK_INTEGRITY_NOGENERATE and
    BLK_INTEGRITY_NOVERIFY

 block/blk-settings.c | 51 +++++++++++++++++++-------------------------
 1 file changed, 22 insertions(+), 29 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices
  2025-03-05  6:30 ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Anuj Gupta
@ 2025-03-05  6:30   ` Anuj Gupta
  2025-03-05 13:32     ` Christoph Hellwig
  2025-03-05  6:30   ` [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY Anuj Gupta
  2025-03-06 15:02   ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Jens Axboe
  2 siblings, 1 reply; 6+ messages in thread
From: Anuj Gupta @ 2025-03-05  6:30 UTC (permalink / raw)
  To: axboe, hch, martin.petersen
  Cc: anuj1072538, nikh1092, linux-nvme, linux-block, linux-scsi,
	dm-devel, Anuj Gupta

queue_limits_stack_integrity() incorrectly sets
BLK_INTEGRITY_DEVICE_CAPABLE for a DM device even when none of its
underlying devices support integrity. This happens because the flag is
inherited unconditionally. Ensure that integrity capabilities are
correctly propagated only when the underlying devices actually support
integrity.

Reported-by: M Nikhil <nikh1092@linux.ibm.com>
Link: https://lore.kernel.org/linux-block/f6130475-3ccd-45d2-abde-3ccceada0f0a@linux.ibm.com/
Fixes: c6e56cf6b2e7 ("block: move integrity information into queue_limits")
Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
---
 block/blk-settings.c | 50 +++++++++++++++++++-------------------------
 1 file changed, 21 insertions(+), 29 deletions(-)

diff --git a/block/blk-settings.c b/block/blk-settings.c
index c44dadc35e1e..d0469a812734 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -859,36 +859,28 @@ bool queue_limits_stack_integrity(struct queue_limits *t,
 	if (!IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY))
 		return true;
 
-	if (!ti->tuple_size) {
-		/* inherit the settings from the first underlying device */
-		if (!(ti->flags & BLK_INTEGRITY_STACKED)) {
-			ti->flags = BLK_INTEGRITY_DEVICE_CAPABLE |
-				(bi->flags & BLK_INTEGRITY_REF_TAG);
-			ti->csum_type = bi->csum_type;
-			ti->tuple_size = bi->tuple_size;
-			ti->pi_offset = bi->pi_offset;
-			ti->interval_exp = bi->interval_exp;
-			ti->tag_size = bi->tag_size;
-			goto done;
-		}
-		if (!bi->tuple_size)
-			goto done;
+	if (ti->flags & BLK_INTEGRITY_STACKED) {
+		if (ti->tuple_size != bi->tuple_size)
+			goto incompatible;
+		if (ti->interval_exp != bi->interval_exp)
+			goto incompatible;
+		if (ti->tag_size != bi->tag_size)
+			goto incompatible;
+		if (ti->csum_type != bi->csum_type)
+			goto incompatible;
+		if ((ti->flags & BLK_INTEGRITY_REF_TAG) !=
+		    (bi->flags & BLK_INTEGRITY_REF_TAG))
+			goto incompatible;
+	} else {
+		ti->flags = BLK_INTEGRITY_STACKED;
+		ti->flags |= (bi->flags & BLK_INTEGRITY_DEVICE_CAPABLE) |
+			     (bi->flags & BLK_INTEGRITY_REF_TAG);
+		ti->csum_type = bi->csum_type;
+		ti->tuple_size = bi->tuple_size;
+		ti->pi_offset = bi->pi_offset;
+		ti->interval_exp = bi->interval_exp;
+		ti->tag_size = bi->tag_size;
 	}
-
-	if (ti->tuple_size != bi->tuple_size)
-		goto incompatible;
-	if (ti->interval_exp != bi->interval_exp)
-		goto incompatible;
-	if (ti->tag_size != bi->tag_size)
-		goto incompatible;
-	if (ti->csum_type != bi->csum_type)
-		goto incompatible;
-	if ((ti->flags & BLK_INTEGRITY_REF_TAG) !=
-	    (bi->flags & BLK_INTEGRITY_REF_TAG))
-		goto incompatible;
-
-done:
-	ti->flags |= BLK_INTEGRITY_STACKED;
 	return true;
 
 incompatible:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY
  2025-03-05  6:30 ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Anuj Gupta
  2025-03-05  6:30   ` [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices Anuj Gupta
@ 2025-03-05  6:30   ` Anuj Gupta
  2025-03-05 13:32     ` Christoph Hellwig
  2025-03-06 15:02   ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Jens Axboe
  2 siblings, 1 reply; 6+ messages in thread
From: Anuj Gupta @ 2025-03-05  6:30 UTC (permalink / raw)
  To: axboe, hch, martin.petersen
  Cc: anuj1072538, nikh1092, linux-nvme, linux-block, linux-scsi,
	dm-devel, Anuj Gupta

Currently, BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY are not
explicitly set during integrity initialization. This can lead to
incorrect reporting of read_verify and write_generate sysfs values,
particularly when a device does not support integrity. Ensure that these
flags are correctly initialized by default.

Reported-by: M Nikhil <nikh1092@linux.ibm.com>
Link: https://lore.kernel.org/linux-block/f6130475-3ccd-45d2-abde-3ccceada0f0a@linux.ibm.com/
Fixes: 9f4aa46f2a74 ("block: invert the BLK_INTEGRITY_{GENERATE,VERIFY} flags")
Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
---
 block/blk-settings.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/block/blk-settings.c b/block/blk-settings.c
index d0469a812734..40278a28378f 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -114,6 +114,7 @@ static int blk_validate_integrity_limits(struct queue_limits *lim)
 			pr_warn("invalid PI settings.\n");
 			return -EINVAL;
 		}
+		bi->flags |= BLK_INTEGRITY_NOGENERATE | BLK_INTEGRITY_NOVERIFY;
 		return 0;
 	}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices
  2025-03-05  6:30   ` [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices Anuj Gupta
@ 2025-03-05 13:32     ` Christoph Hellwig
  0 siblings, 0 replies; 6+ messages in thread
From: Christoph Hellwig @ 2025-03-05 13:32 UTC (permalink / raw)
  To: Anuj Gupta
  Cc: axboe, hch, martin.petersen, anuj1072538, nikh1092, linux-nvme,
	linux-block, linux-scsi, dm-devel

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY
  2025-03-05  6:30   ` [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY Anuj Gupta
@ 2025-03-05 13:32     ` Christoph Hellwig
  0 siblings, 0 replies; 6+ messages in thread
From: Christoph Hellwig @ 2025-03-05 13:32 UTC (permalink / raw)
  To: Anuj Gupta
  Cc: axboe, hch, martin.petersen, anuj1072538, nikh1092, linux-nvme,
	linux-block, linux-scsi, dm-devel

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies
  2025-03-05  6:30 ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Anuj Gupta
  2025-03-05  6:30   ` [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices Anuj Gupta
  2025-03-05  6:30   ` [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY Anuj Gupta
@ 2025-03-06 15:02   ` Jens Axboe
  2 siblings, 0 replies; 6+ messages in thread
From: Jens Axboe @ 2025-03-06 15:02 UTC (permalink / raw)
  To: hch, martin.petersen, Anuj Gupta
  Cc: anuj1072538, nikh1092, linux-nvme, linux-block, linux-scsi,
	dm-devel


On Wed, 05 Mar 2025 12:00:31 +0530, Anuj Gupta wrote:
> Patch 1: Ensures DM devices correctly propagate
> device_is_integrity_capable
> Patch 2: initialize nogenerate and noverify correctly
> 
> Changes since v2:
> Ensure that integrity capability gets propogated correctly for all cases
> in DM (hch)
> 
> [...]

Applied, thanks!

[1/2] block: ensure correct integrity capability propagation in stacked devices
      commit: 677e332e4885a17def5efa4788b6e725a737b63c
[2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY
      commit: 85f72925000e924291a0ebf63d2234994a4f22bd

Best regards,
-- 
Jens Axboe




^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-03-06 15:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CGME20250305063900epcas5p38bb20587ccf4310cfb0f3307180eb536@epcas5p3.samsung.com>
2025-03-05  6:30 ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Anuj Gupta
2025-03-05  6:30   ` [PATCH v3 1/2] block: ensure correct integrity capability propagation in stacked devices Anuj Gupta
2025-03-05 13:32     ` Christoph Hellwig
2025-03-05  6:30   ` [PATCH v3 2/2] block: Correctly initialize BLK_INTEGRITY_NOGENERATE and BLK_INTEGRITY_NOVERIFY Anuj Gupta
2025-03-05 13:32     ` Christoph Hellwig
2025-03-06 15:02   ` [PATCH v3 0/2] Fix integrity sysfs reporting inconsistencies Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox