Loading...
Searching...
No Matches
nvme.h File Reference

Nvme block device abstraction layer. More...

Data Structures

struct  spdk_bdev_nvme_ctrlr_opts
 
struct  spdk_bdev_nvme_opts
 

Macros

#define BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE   SPDK_BDEV_NVME_MULTIPATH_POLICY_ACTIVE_PASSIVE
 
#define BDEV_NVME_MP_POLICY_ACTIVE_ACTIVE   SPDK_BDEV_NVME_MULTIPATH_POLICY_ACTIVE_ACTIVE
 
#define BDEV_NVME_MP_SELECTOR_ROUND_ROBIN   SPDK_BDEV_NVME_MULTIPATH_SELECTOR_ROUND_ROBIN
 
#define BDEV_NVME_MP_SELECTOR_QUEUE_DEPTH   SPDK_BDEV_NVME_MULTIPATH_SELECTOR_QUEUE_DEPTH
 

Typedefs

typedef void(* spdk_bdev_nvme_create_cb) (void *ctx, size_t bdev_count, int rc)
 
typedef void(* spdk_bdev_nvme_set_multipath_policy_cb) (void *cb_arg, int rc)
 
typedef void(* spdk_bdev_nvme_delete_cb) (void *ctx, int rc)
 

Enumerations

enum  spdk_bdev_nvme_multipath_policy { SPDK_BDEV_NVME_MULTIPATH_POLICY_ACTIVE_PASSIVE , SPDK_BDEV_NVME_MULTIPATH_POLICY_ACTIVE_ACTIVE }
 
enum  spdk_bdev_nvme_multipath_selector { SPDK_BDEV_NVME_MULTIPATH_SELECTOR_ROUND_ROBIN = 1 , SPDK_BDEV_NVME_MULTIPATH_SELECTOR_QUEUE_DEPTH }
 
enum  spdk_bdev_timeout_action { SPDK_BDEV_NVME_TIMEOUT_ACTION_NONE = 0 , SPDK_BDEV_NVME_TIMEOUT_ACTION_RESET , SPDK_BDEV_NVME_TIMEOUT_ACTION_ABORT }
 

Functions

 SPDK_STATIC_ASSERT (sizeof(struct spdk_bdev_nvme_opts)==136, "Incorrect size")
 
int spdk_bdev_nvme_create (struct spdk_nvme_transport_id *trid, const char *base_name, const char **names, uint32_t count, spdk_bdev_nvme_create_cb cb_fn, void *cb_ctx, struct spdk_nvme_ctrlr_opts *drv_opts, struct spdk_bdev_nvme_ctrlr_opts *bdev_opts)
 Connect to the NVMe controller and populate namespaces as bdevs.
 
int spdk_bdev_nvme_delete (const char *name, const struct spdk_nvme_path_id *path_id, spdk_bdev_nvme_delete_cb delete_cb, void *cb_ctx)
 Delete the specified NVMe controller, or one of its paths.
 
void spdk_bdev_nvme_set_multipath_policy (const char *name, enum spdk_bdev_nvme_multipath_policy policy, enum spdk_bdev_nvme_multipath_selector selector, uint32_t rr_min_io, spdk_bdev_nvme_set_multipath_policy_cb cb_fn, void *cb_arg)
 Set multipath policy of the NVMe bdev.
 
void spdk_bdev_nvme_get_default_ctrlr_opts (struct spdk_bdev_nvme_ctrlr_opts *opts)
 
void spdk_bdev_nvme_get_opts (struct spdk_bdev_nvme_opts *opts, size_t opts_size)
 Get the default value for bdev nvme options.
 
int spdk_bdev_nvme_set_opts (const struct spdk_bdev_nvme_opts *opts)
 Set the bdev nvme options.
 

Detailed Description

Nvme block device abstraction layer.

Macro Definition Documentation

◆ BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE

#define BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE   SPDK_BDEV_NVME_MULTIPATH_POLICY_ACTIVE_PASSIVE
Deprecated
Use SPDK_BDEV_NVME_MULTIPATH_POLICY_* and SPDK_BDEV_NVME_MULTIPATH_SELECTOR_* instead.

Function Documentation

◆ spdk_bdev_nvme_create()

int spdk_bdev_nvme_create ( struct spdk_nvme_transport_id * trid,
const char * base_name,
const char ** names,
uint32_t count,
spdk_bdev_nvme_create_cb cb_fn,
void * cb_ctx,
struct spdk_nvme_ctrlr_opts * drv_opts,
struct spdk_bdev_nvme_ctrlr_opts * bdev_opts )

Connect to the NVMe controller and populate namespaces as bdevs.

Parameters
tridTransport ID for nvme controller.
base_nameBase name for the nvme subsystem.
namesPointer to string array to get bdev names.
countMaximum count of the string array 'names'. Restricts the length of 'names' array only, not the count of bdevs created.
cb_fnCallback function to be called after all the bdevs are created or updated if already created.
cb_ctxContext to pass to cb_fn.
drv_optsNVMe driver options.
bdev_optsNVMe bdev options.
Returns
0 on success, negative errno on failure.

◆ spdk_bdev_nvme_delete()

int spdk_bdev_nvme_delete ( const char * name,
const struct spdk_nvme_path_id * path_id,
spdk_bdev_nvme_delete_cb delete_cb,
void * cb_ctx )

Delete the specified NVMe controller, or one of its paths.

NOTE: When path_id is specified and it is the only path_id associated with NVMe controller the path is removed and the NVMe controller gets deleted. (Optional) callback function gets executed on delete complete in caller's thread. When the (optional) callback is not provided, the control is returned back at the time delete is initiated, not when it is completed. When NVMe controller deletion is already in progress state, this function returns success.

Parameters
nameNVMe controller name.
path_idThe specified path to remove (optional).
delete_cbCallback function on delete complete (optional).
cb_ctxContext passed to callback (optional).
Returns
zero on success, -EINVAL on wrong parameters or -ENODEV if controller is not found or -ENOMEM on no memory

◆ spdk_bdev_nvme_get_opts()

void spdk_bdev_nvme_get_opts ( struct spdk_bdev_nvme_opts * opts,
size_t opts_size )

Get the default value for bdev nvme options.

Parameters
[out]optsBdev nvme options object to be filled with default values.
opts_sizeMust be set to sizeof(struct spdk_bdev_nvme_opts).

◆ spdk_bdev_nvme_set_multipath_policy()

void spdk_bdev_nvme_set_multipath_policy ( const char * name,
enum spdk_bdev_nvme_multipath_policy policy,
enum spdk_bdev_nvme_multipath_selector selector,
uint32_t rr_min_io,
spdk_bdev_nvme_set_multipath_policy_cb cb_fn,
void * cb_arg )

Set multipath policy of the NVMe bdev.

Subsequent calls for the same bdev must wait until the current execution finishes.

Parameters
nameNVMe bdev name.
policyMultipath policy (active-passive or active-active).
selectorMultipath selector (round_robin, queue_depth).
rr_min_ioNumber of IO to route to a path before switching to another for round-robin.
cb_fnFunction to be called back after completion.
cb_argArgument passed to the callback function.

◆ spdk_bdev_nvme_set_opts()

int spdk_bdev_nvme_set_opts ( const struct spdk_bdev_nvme_opts * opts)

Set the bdev nvme options.

Parameters
optsNew value of bdev nvme options to be set.
Returns
0 on success, negative errno on failure.