Revert "dm: use queue_limits_set"
This reverts commit 8e0ef41286
.
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>
This commit is contained in:
parent
86833aec44
commit
bff4b74625
2 changed files with 16 additions and 13 deletions
|
@ -267,7 +267,7 @@ int queue_limits_commit_update(struct request_queue *q,
|
||||||
EXPORT_SYMBOL_GPL(queue_limits_commit_update);
|
EXPORT_SYMBOL_GPL(queue_limits_commit_update);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* queue_limits_set - apply queue limits to queue
|
* queue_limits_commit_set - apply queue limits to queue
|
||||||
* @q: queue to update
|
* @q: queue to update
|
||||||
* @lim: limits to apply
|
* @lim: limits to apply
|
||||||
*
|
*
|
||||||
|
|
|
@ -1963,27 +1963,26 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
|
||||||
bool wc = false, fua = false;
|
bool wc = false, fua = false;
|
||||||
int r;
|
int r;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy table's limits to the DM device's request_queue
|
||||||
|
*/
|
||||||
|
q->limits = *limits;
|
||||||
|
|
||||||
if (dm_table_supports_nowait(t))
|
if (dm_table_supports_nowait(t))
|
||||||
blk_queue_flag_set(QUEUE_FLAG_NOWAIT, q);
|
blk_queue_flag_set(QUEUE_FLAG_NOWAIT, q);
|
||||||
else
|
else
|
||||||
blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, q);
|
blk_queue_flag_clear(QUEUE_FLAG_NOWAIT, q);
|
||||||
|
|
||||||
if (!dm_table_supports_discards(t)) {
|
if (!dm_table_supports_discards(t)) {
|
||||||
limits->max_hw_discard_sectors = 0;
|
q->limits.max_discard_sectors = 0;
|
||||||
limits->discard_granularity = 0;
|
q->limits.max_hw_discard_sectors = 0;
|
||||||
limits->discard_alignment = 0;
|
q->limits.discard_granularity = 0;
|
||||||
limits->discard_misaligned = 0;
|
q->limits.discard_alignment = 0;
|
||||||
|
q->limits.discard_misaligned = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dm_table_supports_write_zeroes(t))
|
|
||||||
limits->max_write_zeroes_sectors = 0;
|
|
||||||
|
|
||||||
if (!dm_table_supports_secure_erase(t))
|
if (!dm_table_supports_secure_erase(t))
|
||||||
limits->max_secure_erase_sectors = 0;
|
q->limits.max_secure_erase_sectors = 0;
|
||||||
|
|
||||||
r = queue_limits_set(q, limits);
|
|
||||||
if (r)
|
|
||||||
return r;
|
|
||||||
|
|
||||||
if (dm_table_supports_flush(t, (1UL << QUEUE_FLAG_WC))) {
|
if (dm_table_supports_flush(t, (1UL << QUEUE_FLAG_WC))) {
|
||||||
wc = true;
|
wc = true;
|
||||||
|
@ -2008,6 +2007,9 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
|
||||||
else
|
else
|
||||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||||
|
|
||||||
|
if (!dm_table_supports_write_zeroes(t))
|
||||||
|
q->limits.max_write_zeroes_sectors = 0;
|
||||||
|
|
||||||
dm_table_verify_integrity(t);
|
dm_table_verify_integrity(t);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2045,6 +2047,7 @@ int dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
|
||||||
}
|
}
|
||||||
|
|
||||||
dm_update_crypto_profile(q, t);
|
dm_update_crypto_profile(q, t);
|
||||||
|
disk_update_readahead(t->md->disk);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check for request-based device is left to
|
* Check for request-based device is left to
|
||||||
|
|
Loading…
Add table
Reference in a new issue