bdev: Add spdk_bdev_get_data_block_size API.
iSCSI target will need to get data block size except for metadata. Other SPDK application may need to get the same information future. Hence this patch adds an new API spdk_bdev_get_data_block_size to bdev layer. In the header file, spdk_bdev_get_data_block_size is located next to spdk_bdev_is_md_interleaved to avoid confusion by new users. Change-Id: I0fd2a6d0bcf6a4c18c583f70d96cc5035fc57fe9 Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/445082 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: wuzhouhui <wuzhouhui@kingsoft.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
672b47119c
commit
fb16799191
@ -26,6 +26,11 @@ any registered pollers to be run on the thread.
|
||||
Added spdk_thread_is_idle() function to check if there are any scheduled operations
|
||||
to be performed on the thread at given time.
|
||||
|
||||
### bdev
|
||||
|
||||
An new API `spdk_bdev_get_data_block_size` has been added to get size of data
|
||||
block except for metadata.
|
||||
|
||||
## v19.01:
|
||||
|
||||
### ocf bdev
|
||||
|
@ -426,6 +426,19 @@ uint32_t spdk_bdev_get_md_size(const struct spdk_bdev *bdev);
|
||||
*/
|
||||
bool spdk_bdev_is_md_interleaved(const struct spdk_bdev *bdev);
|
||||
|
||||
/**
|
||||
* Get block device data block size.
|
||||
*
|
||||
* Data block size is equal to block size if there is no metadata or
|
||||
* metadata is separated with block data, or equal to block size minus
|
||||
* metadata size if there is metadata and it is interleaved with
|
||||
* block data.
|
||||
*
|
||||
* \param bdev Block device to query.
|
||||
* \return Size of data block for this bdev in bytes.
|
||||
*/
|
||||
uint32_t spdk_bdev_get_data_block_size(const struct spdk_bdev *bdev);
|
||||
|
||||
/**
|
||||
* Get DIF type of the block device.
|
||||
*
|
||||
|
@ -2358,6 +2358,16 @@ spdk_bdev_is_md_interleaved(const struct spdk_bdev *bdev)
|
||||
return (bdev->md_len != 0) && bdev->md_interleave;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
spdk_bdev_get_data_block_size(const struct spdk_bdev *bdev)
|
||||
{
|
||||
if (spdk_bdev_is_md_interleaved(bdev)) {
|
||||
return bdev->blocklen - bdev->md_len;
|
||||
} else {
|
||||
return bdev->blocklen;
|
||||
}
|
||||
}
|
||||
|
||||
enum spdk_dif_type spdk_bdev_get_dif_type(const struct spdk_bdev *bdev)
|
||||
{
|
||||
if (bdev->md_len != 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user