forked from Minki/linux
nvdimm-blk: convert to blk_alloc_disk/blk_cleanup_disk
Convert the nvdimm-blk driver to use the blk_alloc_disk and blk_cleanup_disk helpers to simplify gendisk and request_queue allocation. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Link: https://lore.kernel.org/r/20210521055116.1053587-16-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
0f1d2e0643
commit
6c552ceabf
@ -228,48 +228,34 @@ static const struct block_device_operations nd_blk_fops = {
|
||||
.submit_bio = nd_blk_submit_bio,
|
||||
};
|
||||
|
||||
static void nd_blk_release_queue(void *q)
|
||||
{
|
||||
blk_cleanup_queue(q);
|
||||
}
|
||||
|
||||
static void nd_blk_release_disk(void *disk)
|
||||
{
|
||||
del_gendisk(disk);
|
||||
put_disk(disk);
|
||||
blk_cleanup_disk(disk);
|
||||
}
|
||||
|
||||
static int nsblk_attach_disk(struct nd_namespace_blk *nsblk)
|
||||
{
|
||||
struct device *dev = &nsblk->common.dev;
|
||||
resource_size_t available_disk_size;
|
||||
struct request_queue *q;
|
||||
struct gendisk *disk;
|
||||
u64 internal_nlba;
|
||||
|
||||
internal_nlba = div_u64(nsblk->size, nsblk_internal_lbasize(nsblk));
|
||||
available_disk_size = internal_nlba * nsblk_sector_size(nsblk);
|
||||
|
||||
q = blk_alloc_queue(NUMA_NO_NODE);
|
||||
if (!q)
|
||||
return -ENOMEM;
|
||||
if (devm_add_action_or_reset(dev, nd_blk_release_queue, q))
|
||||
return -ENOMEM;
|
||||
|
||||
blk_queue_max_hw_sectors(q, UINT_MAX);
|
||||
blk_queue_logical_block_size(q, nsblk_sector_size(nsblk));
|
||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||
|
||||
disk = alloc_disk(0);
|
||||
disk = blk_alloc_disk(NUMA_NO_NODE);
|
||||
if (!disk)
|
||||
return -ENOMEM;
|
||||
|
||||
disk->first_minor = 0;
|
||||
disk->fops = &nd_blk_fops;
|
||||
disk->queue = q;
|
||||
disk->private_data = nsblk;
|
||||
nvdimm_namespace_disk_name(&nsblk->common, disk->disk_name);
|
||||
|
||||
blk_queue_max_hw_sectors(disk->queue, UINT_MAX);
|
||||
blk_queue_logical_block_size(disk->queue, nsblk_sector_size(nsblk));
|
||||
blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue);
|
||||
|
||||
if (devm_add_action_or_reset(dev, nd_blk_release_disk, disk))
|
||||
return -ENOMEM;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user