Commit ba305859 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

dm: move setting md->type into dm_setup_md_queue

Move setting md->type from both callers into dm_setup_md_queue.
This ensures that md->type is only set to a valid value after the queue
has been fully setup, something we'll rely on future changes.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMike Snitzer <snitzer@redhat.com>
Link: https://lore.kernel.org/r/20210804094147.459763-7-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 74a2b6ec
...@@ -1436,9 +1436,6 @@ static int table_load(struct file *filp, struct dm_ioctl *param, size_t param_si ...@@ -1436,9 +1436,6 @@ static int table_load(struct file *filp, struct dm_ioctl *param, size_t param_si
} }
if (dm_get_md_type(md) == DM_TYPE_NONE) { if (dm_get_md_type(md) == DM_TYPE_NONE) {
/* Initial table load: acquire type of table. */
dm_set_md_type(md, dm_table_get_type(t));
/* setup md->queue to reflect md's type (may block) */ /* setup md->queue to reflect md's type (may block) */
r = dm_setup_md_queue(md, t); r = dm_setup_md_queue(md, t);
if (r) { if (r) {
...@@ -2187,7 +2184,6 @@ int __init dm_early_create(struct dm_ioctl *dmi, ...@@ -2187,7 +2184,6 @@ int __init dm_early_create(struct dm_ioctl *dmi,
if (r) if (r)
goto err_destroy_table; goto err_destroy_table;
md->type = dm_table_get_type(t);
/* setup md->queue to reflect md's type (may block) */ /* setup md->queue to reflect md's type (may block) */
r = dm_setup_md_queue(md, t); r = dm_setup_md_queue(md, t);
if (r) { if (r) {
......
...@@ -2052,9 +2052,9 @@ EXPORT_SYMBOL_GPL(dm_get_queue_limits); ...@@ -2052,9 +2052,9 @@ EXPORT_SYMBOL_GPL(dm_get_queue_limits);
*/ */
int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t) int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t)
{ {
int r; enum dm_queue_mode type = dm_table_get_type(t);
struct queue_limits limits; struct queue_limits limits;
enum dm_queue_mode type = dm_get_md_type(md); int r;
switch (type) { switch (type) {
case DM_TYPE_REQUEST_BASED: case DM_TYPE_REQUEST_BASED:
...@@ -2081,6 +2081,7 @@ int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t) ...@@ -2081,6 +2081,7 @@ int dm_setup_md_queue(struct mapped_device *md, struct dm_table *t)
r = dm_table_set_restrictions(t, md->queue, &limits); r = dm_table_set_restrictions(t, md->queue, &limits);
if (r) if (r)
return r; return r;
md->type = type;
blk_register_queue(md->disk); blk_register_queue(md->disk);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment