Re: [PATCH 10/17] nvmet: add metadata characteristics for a namespace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 27, 2020 at 08:15:38PM +0300, Max Gurtovoy wrote:
> From: Israel Rukshin <israelr@xxxxxxxxxxxx>
> 
> Fill those namespace fields from the block device format for adding
> metadata (T10-PI) over fabric support with block devices.
> 
> Signed-off-by: Israel Rukshin <israelr@xxxxxxxxxxxx>
> Signed-off-by: Max Gurtovoy <maxg@xxxxxxxxxxxx>
> Reviewed-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
> ---
>  drivers/nvme/target/io-cmd-bdev.c | 22 ++++++++++++++++++++++
>  drivers/nvme/target/nvmet.h       |  3 +++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/drivers/nvme/target/io-cmd-bdev.c b/drivers/nvme/target/io-cmd-bdev.c
> index ea0e596..bdf611f 100644
> --- a/drivers/nvme/target/io-cmd-bdev.c
> +++ b/drivers/nvme/target/io-cmd-bdev.c
> @@ -50,6 +50,9 @@ void nvmet_bdev_set_limits(struct block_device *bdev, struct nvme_id_ns *id)
>  int nvmet_bdev_ns_enable(struct nvmet_ns *ns)
>  {
>  	int ret;
> +#ifdef CONFIG_BLK_DEV_INTEGRITY
> +	struct blk_integrity *bi;
> +#endif
>  
>  	ns->bdev = blkdev_get_by_path(ns->device_path,
>  			FMODE_READ | FMODE_WRITE, NULL);
> @@ -64,6 +67,25 @@ int nvmet_bdev_ns_enable(struct nvmet_ns *ns)
>  	}
>  	ns->size = i_size_read(ns->bdev->bd_inode);
>  	ns->blksize_shift = blksize_bits(bdev_logical_block_size(ns->bdev));
> +
> +	ns->md_type = 0;
> +	ns->ms = 0;
> +#ifdef CONFIG_BLK_DEV_INTEGRITY
> +	bi = bdev_get_integrity(ns->bdev);
> +	if (bi) {
> +		ns->ms = bi->tuple_size;
> +		if (bi->profile == &t10_pi_type1_crc)
> +			ns->md_type = NVME_NS_DPS_PI_TYPE1;
> +		else if (bi->profile == &t10_pi_type3_crc)
> +			ns->md_type = NVME_NS_DPS_PI_TYPE3;
> +		else
> +			/* Unsupported metadata type */
> +			ns->ms = 0;
> +	}
> +
> +	pr_debug("ms %d md_type %d\n", ns->ms, ns->md_type);
> +#endif

Given that bdev_get_integrity is stubbed out and returns NULL
for the !CONFIG_BLK_DEV_INTEGRITY case, can we just skip the ifdef and
let the compiler optimize the dead code away?  I also don't think we
need the pr_debug.

> +	int			md_type;
> +	int			ms;

Can we use more descriptive names?  md_type seems to be what we call
pi_type elsewhere, anѕ ms could be spelled out as metadata_size.



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux