On Wed, Feb 26, 2025 at 04:50:34PM +0530, Anuj Gupta wrote: > diff --git a/block/blk-settings.c b/block/blk-settings.c > index c44dadc35e1e..8bd0d0f1479c 100644 > --- a/block/blk-settings.c > +++ b/block/blk-settings.c > @@ -861,7 +861,8 @@ bool queue_limits_stack_integrity(struct queue_limits *t, > > if (!ti->tuple_size) { > /* inherit the settings from the first underlying device */ > - if (!(ti->flags & BLK_INTEGRITY_STACKED)) { > + if (!(ti->flags & BLK_INTEGRITY_STACKED) && > + (bi->flags & BLK_INTEGRITY_DEVICE_CAPABLE)) { > ti->flags = BLK_INTEGRITY_DEVICE_CAPABLE | > (bi->flags & BLK_INTEGRITY_REF_TAG); > ti->csum_type = bi->csum_type; As mentioned last round this still does the wrong thing if the first device(s) is/are not PI-capable but the next one(s) is/are. Please look into the pseudocode I posted in reply to the previous iteration on how to fix it.