dm: do not initialise full request queue when bio based
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / md / dm-ioctl.c
index 4702f38..ed85859 100644 (file)
@@ -1189,7 +1189,7 @@ static int table_load(struct dm_ioctl *param, size_t param_size)
                goto out;
        }
 
-       /* Protect md->type against concurrent table loads. */
+       /* Protect md->type and md->queue against concurrent table loads. */
        dm_lock_md_type(md);
        if (dm_get_md_type(md) == DM_TYPE_NONE)
                /* Initial table load: acquire type of table. */
@@ -1201,6 +1201,15 @@ static int table_load(struct dm_ioctl *param, size_t param_size)
                r = -EINVAL;
                goto out;
        }
+
+       /* setup md->queue to reflect md's type (may block) */
+       r = dm_setup_md_queue(md);
+       if (r) {
+               DMWARN("unable to set up device queue for new table.");
+               dm_table_destroy(t);
+               dm_unlock_md_type(md);
+               goto out;
+       }
        dm_unlock_md_type(md);
 
        /* stage inactive table */