block: ublk_drv: mark device as LIVE before adding disk
[linux-block.git] / drivers / block / ublk_drv.c
index b9c759cef00e6ec6d3b444b69ff11a6d5b236755..fb5a557afde8bb6da2de475a763bb65bde90b960 100644 (file)
@@ -1271,9 +1271,6 @@ static int ublk_ch_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags)
                        __func__, cmd->cmd_op, ub_cmd->q_id, tag,
                        ub_cmd->result);
 
-       if (!(issue_flags & IO_URING_F_SQE128))
-               goto out;
-
        if (ub_cmd->q_id >= ub->dev_info.nr_hw_queues)
                goto out;
 
@@ -1605,17 +1602,18 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub, struct io_uring_cmd *cmd)
                set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
 
        get_device(&ub->cdev_dev);
+       ub->dev_info.state = UBLK_S_DEV_LIVE;
        ret = add_disk(disk);
        if (ret) {
                /*
                 * Has to drop the reference since ->free_disk won't be
                 * called in case of add_disk failure.
                 */
+               ub->dev_info.state = UBLK_S_DEV_DEAD;
                ublk_put_device(ub);
                goto out_put_disk;
        }
        set_bit(UB_STATE_USED, &ub->state);
-       ub->dev_info.state = UBLK_S_DEV_LIVE;
 out_put_disk:
        if (ret)
                put_disk(disk);