block: handle pi_tuple_size in queue_limits_stack_integrity
authorChristoph Hellwig <hch@lst.de>
Mon, 18 Aug 2025 04:54:50 +0000 (06:54 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 18 Aug 2025 16:17:49 +0000 (10:17 -0600)
queue_limits_stack_integrity needs to handle the new pi_tuple_size field,
otherwise stacking PI-capable devices will always fail.

Fixes: 76e45252a4ce ("block: introduce pi_tuple_size field in blk_integrity")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Anuj Gupta <anuj20.g@samsung.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20250818045456.1482889-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-settings.c

index 07874e9b609f6fe6f6f6a417ebefe632cefd87e7..491c0c48d52b4d863a0a27989a7bd809502c6a20 100644 (file)
@@ -972,6 +972,8 @@ bool queue_limits_stack_integrity(struct queue_limits *t,
                        goto incompatible;
                if (ti->csum_type != bi->csum_type)
                        goto incompatible;
+               if (ti->pi_tuple_size != bi->pi_tuple_size)
+                       goto incompatible;
                if ((ti->flags & BLK_INTEGRITY_REF_TAG) !=
                    (bi->flags & BLK_INTEGRITY_REF_TAG))
                        goto incompatible;
@@ -980,6 +982,7 @@ bool queue_limits_stack_integrity(struct queue_limits *t,
                ti->flags |= (bi->flags & BLK_INTEGRITY_DEVICE_CAPABLE) |
                             (bi->flags & BLK_INTEGRITY_REF_TAG);
                ti->csum_type = bi->csum_type;
+               ti->pi_tuple_size = bi->pi_tuple_size;
                ti->metadata_size = bi->metadata_size;
                ti->pi_offset = bi->pi_offset;
                ti->interval_exp = bi->interval_exp;