In the past we didn't use the distinction between logical block size and physical block size in null bdev. Now we can optionally set the physical block size to be different then logical block size. It's useful for testing NVMe 512e Advanced Format scenarios. Change-Id: Ib3713af9a4d0ce7fd322170b4d87100cfc91a103 Signed-off-by: Panfil, Wojciech <wojciech.panfil@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16792 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com> Reviewed-by: Jacek Kalwas <jacek.kalwas@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright (C) 2017 Intel Corporation. All rights reserved.
|
|
* Copyright (c) 2019 Mellanox Technologies LTD. All rights reserved.
|
|
*/
|
|
|
|
#ifndef SPDK_BDEV_NULL_H
|
|
#define SPDK_BDEV_NULL_H
|
|
|
|
#include "spdk/stdinc.h"
|
|
|
|
typedef void (*spdk_delete_null_complete)(void *cb_arg, int bdeverrno);
|
|
|
|
struct spdk_bdev;
|
|
struct spdk_uuid;
|
|
|
|
struct spdk_null_bdev_opts {
|
|
const char *name;
|
|
const struct spdk_uuid *uuid;
|
|
uint64_t num_blocks;
|
|
uint32_t block_size;
|
|
uint32_t physical_block_size;
|
|
uint32_t md_size;
|
|
bool md_interleave;
|
|
enum spdk_dif_type dif_type;
|
|
bool dif_is_head_of_md;
|
|
};
|
|
|
|
int bdev_null_create(struct spdk_bdev **bdev, const struct spdk_null_bdev_opts *opts);
|
|
|
|
/**
|
|
* Delete null bdev.
|
|
*
|
|
* \param bdev_name Name of null bdev.
|
|
* \param cb_fn Function to call after deletion.
|
|
* \param cb_arg Argument to pass to cb_fn.
|
|
*/
|
|
void bdev_null_delete(const char *bdev_name, spdk_delete_null_complete cb_fn,
|
|
void *cb_arg);
|
|
/**
|
|
* Resize null bdev.
|
|
*
|
|
* \param bdev_name Name of null bdev.
|
|
* \param new_size_in_mb The new size in MiB for this bdev
|
|
*/
|
|
int bdev_null_resize(const char *bdev_name, const uint64_t new_size_in_mb);
|
|
|
|
#endif /* SPDK_BDEV_NULL_H */
|