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