summaryrefslogtreecommitdiffstats
path: root/drivers/nvme/host/core.c
diff options
context:
space:
mode:
authorSagi Grimberg2018-11-02 19:22:13 +0100
committerGreg Kroah-Hartman2018-11-27 16:13:05 +0100
commitfa4712942d8ee992af92aee78d6c07c6c5cbfb42 (patch)
treea10f68a470526e54d9627c5e901ed4f4180e17fd /drivers/nvme/host/core.c
parentof/device: Really only set bus DMA mask when appropriate (diff)
downloadkernel-qcow2-linux-fa4712942d8ee992af92aee78d6c07c6c5cbfb42.tar.gz
kernel-qcow2-linux-fa4712942d8ee992af92aee78d6c07c6c5cbfb42.tar.xz
kernel-qcow2-linux-fa4712942d8ee992af92aee78d6c07c6c5cbfb42.zip
nvme: make sure ns head inherits underlying device limits
[ Upstream commit 8f676b8508c250bbe255096522fdefb73f1ea0b9 ] Whenever we update ns_head info, we need to make sure it is still compatible with all underlying backing devices because although nvme multipath doesn't have any explicit use of these limits, other devices can still be stacked on top of it which may rely on the underlying limits. Start with unlimited stacking limits, and every info update iterate over siblings and adjust queue limits. Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/nvme/host/core.c')
-rw-r--r--drivers/nvme/host/core.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 6bb9908bf46f..0ba301f7e8b4 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -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
}