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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mike Snitzer <snitzer@redhat.com>
Link: https://lore.kernel.org/r/20210804094147.459763-7-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
 
        }
 
        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) */
                r = dm_setup_md_queue(md, t);
                if (r) {
        if (r)
                goto err_destroy_table;
 
-       md->type = dm_table_get_type(t);
        /* setup md->queue to reflect md's type (may block) */
        r = dm_setup_md_queue(md, t);
        if (r) {
 
  */
 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;
-       enum dm_queue_mode type = dm_get_md_type(md);
+       int r;
 
        switch (type) {
        case DM_TYPE_REQUEST_BASED:
        r = dm_table_set_restrictions(t, md->queue, &limits);
        if (r)
                return r;
+       md->type = type;
 
        blk_register_queue(md->disk);