Skip to content

Commit bff4b74

Browse files
committed
Revert "dm: use queue_limits_set"
This reverts commit 8e0ef41. It's broken, and causes the boot to fail on encrypted volumes. Reported-and-bisected-by: Johannes Weiner <hannes@cmpxchg.org> Link: https://lore.kernel.org/all/20240311235023.GA1205@cmpxchg.org/ Acked-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 86833ae commit bff4b74

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

block/blk-settings.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ int queue_limits_commit_update(struct request_queue *q,
267267
EXPORT_SYMBOL_GPL(queue_limits_commit_update);
268268

269269
/**
270-
* queue_limits_set - apply queue limits to queue
270+
* queue_limits_commit_set - apply queue limits to queue
271271
* @q: queue to update
272272
* @lim: limits to apply
273273
*

drivers/md/dm-table.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,27 +1963,26 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
19631963
bool wc = false, fua = false;
19641964
int r;
19651965

1966+
/*
1967+
* Copy table's limits to the DM device's request_queue
1968+
*/
1969+
q->limits = *limits;
1970+
19661971
if (dm_table_supports_nowait(t))
19671972
blk_queue_flag_set(QUEUE_FLAG_NOWAIT, q);
19681973
else
19691974
blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, q);
19701975

19711976
if (!dm_table_supports_discards(t)) {
1972-
limits->max_hw_discard_sectors = 0;
1973-
limits->discard_granularity = 0;
1974-
limits->discard_alignment = 0;
1975-
limits->discard_misaligned = 0;
1977+
q->limits.max_discard_sectors = 0;
1978+
q->limits.max_hw_discard_sectors = 0;
1979+
q->limits.discard_granularity = 0;
1980+
q->limits.discard_alignment = 0;
1981+
q->limits.discard_misaligned = 0;
19761982
}
19771983

1978-
if (!dm_table_supports_write_zeroes(t))
1979-
limits->max_write_zeroes_sectors = 0;
1980-
19811984
if (!dm_table_supports_secure_erase(t))
1982-
limits->max_secure_erase_sectors = 0;
1983-
1984-
r = queue_limits_set(q, limits);
1985-
if (r)
1986-
return r;
1985+
q->limits.max_secure_erase_sectors = 0;
19871986

19881987
if (dm_table_supports_flush(t, (1UL << QUEUE_FLAG_WC))) {
19891988
wc = true;
@@ -2008,6 +2007,9 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
20082007
else
20092008
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
20102009

2010+
if (!dm_table_supports_write_zeroes(t))
2011+
q->limits.max_write_zeroes_sectors = 0;
2012+
20112013
dm_table_verify_integrity(t);
20122014

20132015
/*
@@ -2045,6 +2047,7 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
20452047
}
20462048

20472049
dm_update_crypto_profile(q, t);
2050+
disk_update_readahead(t->md->disk);
20482051

20492052
/*
20502053
* Check for request-based device is left to

0 commit comments

Comments
 (0)