]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - block/blk-core.c
compat_ioctl: block: handle BLKREPORTZONE/BLKRESETZONE
[mirror_ubuntu-bionic-kernel.git] / block / blk-core.c
index 381d475d4a972c84d6a027b50e1c8939838ba0f5..f885b65324c22249f1b388c3ae6a1a2fd2b34bad 100644 (file)
@@ -143,6 +143,7 @@ static const struct {
        [BLK_STS_MEDIUM]        = { -ENODATA,   "critical medium" },
        [BLK_STS_PROTECTION]    = { -EILSEQ,    "protection" },
        [BLK_STS_RESOURCE]      = { -ENOMEM,    "kernel resource" },
+       [BLK_STS_DEV_RESOURCE]  = { -EBUSY,     "device resource" },
        [BLK_STS_AGAIN]         = { -EAGAIN,    "nonblocking retry" },
 
        /* device mapper special case, should not leak out: */
@@ -718,7 +719,8 @@ void blk_cleanup_queue(struct request_queue *q)
        blk_sync_queue(q);
 
        if (q->mq_ops)
-               blk_mq_free_queue(q);
+               blk_mq_exit_queue(q);
+
        percpu_ref_exit(&q->q_usage_counter);
 
        spin_lock_irq(lock);
@@ -1052,7 +1054,7 @@ int blk_init_allocated_queue(struct request_queue *q)
 {
        WARN_ON_ONCE(q->mq_ops);
 
-       q->fq = blk_alloc_flush_queue(q, NUMA_NO_NODE, q->cmd_size);
+       q->fq = blk_alloc_flush_queue(q, NUMA_NO_NODE, q->cmd_size, GFP_KERNEL);
        if (!q->fq)
                return -ENOMEM;
 
@@ -2506,8 +2508,7 @@ blk_status_t blk_insert_cloned_request(struct request_queue *q, struct request *
                 * bypass a potential scheduler on the bottom device for
                 * insert.
                 */
-               blk_mq_request_bypass_insert(rq, true);
-               return BLK_STS_OK;
+               return blk_mq_request_issue_directly(rq);
        }
 
        spin_lock_irqsave(q->queue_lock, flags);