On Mon, May 20, 2024 at 01:17:46PM -0400, Mike Snitzer wrote: > Doubt there was anything in fstests setting max discard user limit > (max_user_discard_sectors) in Ted's case. blk_set_stacking_limits() > sets max_user_discard_sectors to UINT_MAX, so given the use of > min(lim->max_hw_discard_sectors, lim->max_user_discard_sectors) I > suspect blk_stack_limits() stacks up max_discard_sectors to match the > underlying storage's max_hw_discard_sectors. > > And max_hw_discard_sectors exceeds BIO_PRISON_MAX_RANGE, resulting in > dm_cell_key_has_valid_range() triggering on: > WARN_ON_ONCE(key->block_end - key->block_begin > BIO_PRISON_MAX_RANGE) Oh, that makes more sense. I think you just want to set the max_hw_discard_sectors limit before stacking in the lower device limits so that they can only lower it. (and in the long run we should just stop stacking the limits except for request based dm which really needs it)