Commit 1aea6c5b authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

bdev: add getter for maximum unmap descriptors



Change-Id: Ifbdd29e2081600bf0d860582d80696546107cf1b
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 8651c2eb
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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.
 *
+6 −0
Original line number Diff line number Diff line
@@ -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)
{
+5 −5
Original line number Diff line number Diff line
@@ -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
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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)
{