Loading include/spdk/bdev.h +8 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,14 @@ uint32_t spdk_bdev_get_block_size(const struct spdk_bdev *bdev); */ uint64_t spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev); /** * Get maximum number of descriptors per unmap request. * * \param bdev Block device to query. * \return Maximum number of unmap descriptors per request. */ uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev); /** * Get minimum I/O buffer address alignment for a bdev. * Loading lib/bdev/bdev.c +6 −0 Original line number Diff line number Diff line Loading @@ -557,6 +557,12 @@ spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev) return bdev->blockcnt; } uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev) { return bdev->max_unmap_bdesc_count; } size_t spdk_bdev_get_buf_align(const struct spdk_bdev *bdev) { Loading lib/scsi/scsi_bdev.c +5 −5 Original line number Diff line number Diff line Loading @@ -546,6 +546,8 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, len = 20 - hlen; if (spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) { uint32_t max_unmap_desc; /* * MAXIMUM UNMAP LBA COUNT: indicates the * maximum number of LBAs that may be Loading @@ -560,11 +562,9 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, * in the parameter data transferred to the * device server for an UNMAP command. */ if (bdev->max_unmap_bdesc_count < g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count) to_be32(&data[24], bdev->max_unmap_bdesc_count); else to_be32(&data[24], g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count); max_unmap_desc = spdk_min(spdk_bdev_get_max_unmap_descriptors(bdev), g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count); to_be32(&data[24], max_unmap_desc); /* * OPTIMAL UNMAP GRANULARITY: indicates the Loading test/lib/scsi/scsi_bdev/scsi_bdev_ut.c +6 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,12 @@ spdk_bdev_get_product_name(const struct spdk_bdev *bdev) return "test product"; } uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev) { return 1; } void spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun) { Loading Loading
include/spdk/bdev.h +8 −0 Original line number Diff line number Diff line Loading @@ -233,6 +233,14 @@ uint32_t spdk_bdev_get_block_size(const struct spdk_bdev *bdev); */ uint64_t spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev); /** * Get maximum number of descriptors per unmap request. * * \param bdev Block device to query. * \return Maximum number of unmap descriptors per request. */ uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev); /** * Get minimum I/O buffer address alignment for a bdev. * Loading
lib/bdev/bdev.c +6 −0 Original line number Diff line number Diff line Loading @@ -557,6 +557,12 @@ spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev) return bdev->blockcnt; } uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev) { return bdev->max_unmap_bdesc_count; } size_t spdk_bdev_get_buf_align(const struct spdk_bdev *bdev) { Loading
lib/scsi/scsi_bdev.c +5 −5 Original line number Diff line number Diff line Loading @@ -546,6 +546,8 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, len = 20 - hlen; if (spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) { uint32_t max_unmap_desc; /* * MAXIMUM UNMAP LBA COUNT: indicates the * maximum number of LBAs that may be Loading @@ -560,11 +562,9 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, * in the parameter data transferred to the * device server for an UNMAP command. */ if (bdev->max_unmap_bdesc_count < g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count) to_be32(&data[24], bdev->max_unmap_bdesc_count); else to_be32(&data[24], g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count); max_unmap_desc = spdk_min(spdk_bdev_get_max_unmap_descriptors(bdev), g_spdk_scsi.scsi_params.max_unmap_block_descriptor_count); to_be32(&data[24], max_unmap_desc); /* * OPTIMAL UNMAP GRANULARITY: indicates the Loading
test/lib/scsi/scsi_bdev/scsi_bdev_ut.c +6 −0 Original line number Diff line number Diff line Loading @@ -106,6 +106,12 @@ spdk_bdev_get_product_name(const struct spdk_bdev *bdev) return "test product"; } uint32_t spdk_bdev_get_max_unmap_descriptors(const struct spdk_bdev *bdev) { return 1; } void spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun) { Loading