nvme: make sure ns head inherits underlying device limits
[sfrench/cifs-2.6.git] / drivers / nvme / host / core.c
index 9e4a30b05bd203883353662777a42eb72a151822..559d567693b8d060b920952e8429d219471b9569 100644 (file)
@@ -1519,8 +1519,10 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id)
        if (ns->ndev)
                nvme_nvm_update_nvm_info(ns);
 #ifdef CONFIG_NVME_MULTIPATH
-       if (ns->head->disk)
+       if (ns->head->disk) {
                nvme_update_disk_info(ns->head->disk, ns, id);
+               blk_queue_stack_limits(ns->head->disk->queue, ns->queue);
+       }
 #endif
 }
 
@@ -3064,7 +3066,11 @@ static void nvme_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid)
        ns->queue = blk_mq_init_queue(ctrl->tagset);
        if (IS_ERR(ns->queue))
                goto out_free_ns;
+
        blk_queue_flag_set(QUEUE_FLAG_NONROT, ns->queue);
+       if (ctrl->ops->flags & NVME_F_PCI_P2PDMA)
+               blk_queue_flag_set(QUEUE_FLAG_PCI_P2PDMA, ns->queue);
+
        ns->queue->queuedata = ns;
        ns->ctrl = ctrl;