pmem: pass queue_limits to blk_mq_alloc_disk
authorChristoph Hellwig <hch@lst.de>
Thu, 15 Feb 2024 07:10:54 +0000 (08:10 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 19 Feb 2024 23:58:24 +0000 (16:58 -0700)
Pass the queue limits directly to blk_alloc_disk instead of setting them
one at a time.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Link: https://lore.kernel.org/r/20240215071055.2201424-9-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvdimm/pmem.c

index 3a5df8d..8dcc10b 100644 (file)
@@ -451,6 +451,11 @@ static int pmem_attach_disk(struct device *dev,
 {
        struct nd_namespace_io *nsio = to_nd_namespace_io(&ndns->dev);
        struct nd_region *nd_region = to_nd_region(dev->parent);
+       struct queue_limits lim = {
+               .logical_block_size     = pmem_sector_size(ndns),
+               .physical_block_size    = PAGE_SIZE,
+               .max_hw_sectors         = UINT_MAX,
+       };
        int nid = dev_to_node(dev), fua;
        struct resource *res = &nsio->res;
        struct range bb_range;
@@ -497,7 +502,7 @@ static int pmem_attach_disk(struct device *dev,
                return -EBUSY;
        }
 
-       disk = blk_alloc_disk(NULL, nid);
+       disk = blk_alloc_disk(&lim, nid);
        if (IS_ERR(disk))
                return PTR_ERR(disk);
        q = disk->queue;
@@ -539,9 +544,6 @@ static int pmem_attach_disk(struct device *dev,
        pmem->virt_addr = addr;
 
        blk_queue_write_cache(q, true, fua);
-       blk_queue_physical_block_size(q, PAGE_SIZE);
-       blk_queue_logical_block_size(q, pmem_sector_size(ndns));
-       blk_queue_max_hw_sectors(q, UINT_MAX);
        blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
        blk_queue_flag_set(QUEUE_FLAG_SYNCHRONOUS, q);
        if (pmem->pfn_flags & PFN_MAP)