* [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 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