Logical Volume Interface. More...
Data Structures | |
struct | spdk_lvs_opts |
Parameters for lvolstore initialization. More... | |
Macros | |
#define | SPDK_LVS_NAME_MAX 64 |
#define | SPDK_LVOL_NAME_MAX 64 |
Typedefs | |
typedef void(* | spdk_lvs_op_with_handle_complete) (void *cb_arg, struct spdk_lvol_store *lvol_store, int lvserrno) |
Callback definition for lvolstore operations, including handle to lvs. | |
typedef void(* | spdk_lvs_op_complete) (void *cb_arg, int lvserrno) |
Callback definition for lvolstore operations without handle. | |
typedef void(* | spdk_lvol_op_with_handle_complete) (void *cb_arg, struct spdk_lvol *lvol, int lvolerrno) |
Callback definition for lvol operations with handle to lvol. | |
typedef void(* | spdk_lvol_op_complete) (void *cb_arg, int lvolerrno) |
Callback definition for lvol operations without handle to lvol. | |
typedef int(* | spdk_lvol_iter_cb) (void *cb_arg, struct spdk_lvol *lvol) |
Callback definition for spdk_lvol_iter_clones. | |
Functions | |
SPDK_STATIC_ASSERT (sizeof(struct spdk_lvs_opts)==88, "Incorrect size") | |
void | spdk_lvs_opts_init (struct spdk_lvs_opts *opts) |
Initialize an spdk_lvs_opts structure to the defaults. | |
int | spdk_lvs_init (struct spdk_bs_dev *bs_dev, struct spdk_lvs_opts *o, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg) |
Initialize lvolstore on given bs_bdev. | |
void | spdk_lvs_rename (struct spdk_lvol_store *lvs, const char *new_name, spdk_lvs_op_complete cb_fn, void *cb_arg) |
Rename the given lvolstore. | |
int | spdk_lvs_unload (struct spdk_lvol_store *lvol_store, spdk_lvs_op_complete cb_fn, void *cb_arg) |
Unload lvolstore. | |
int | spdk_lvs_destroy (struct spdk_lvol_store *lvol_store, spdk_lvs_op_complete cb_fn, void *cb_arg) |
Destroy lvolstore. | |
int | spdk_lvol_create (struct spdk_lvol_store *lvs, const char *name, uint64_t sz, bool thin_provisioned, enum lvol_clear_method clear_method, spdk_lvol_op_with_handle_complete cb_fn, void *cb_arg) |
Create lvol on given lvolstore with specified size. | |
void | spdk_lvol_create_snapshot (struct spdk_lvol *lvol, const char *snapshot_name, spdk_lvol_op_with_handle_complete cb_fn, void *cb_arg) |
Create snapshot of given lvol. | |
void | spdk_lvol_create_clone (struct spdk_lvol *lvol, const char *clone_name, spdk_lvol_op_with_handle_complete cb_fn, void *cb_arg) |
Create clone of given snapshot. | |
int | spdk_lvol_create_esnap_clone (const void *esnap_id, uint32_t id_len, uint64_t size_bytes, struct spdk_lvol_store *lvs, const char *clone_name, spdk_lvol_op_with_handle_complete cb_fn, void *cb_arg) |
void | spdk_lvol_rename (struct spdk_lvol *lvol, const char *new_name, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Rename lvol with new_name. | |
bool | spdk_lvol_deletable (struct spdk_lvol *lvol) |
Returns if it is possible to delete an lvol (i.e. | |
void | spdk_lvol_destroy (struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Close lvol and remove information about lvol from its lvolstore. | |
void | spdk_lvol_close (struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Close lvol, but information is kept on lvolstore. | |
int | spdk_lvol_iter_immediate_clones (struct spdk_lvol *lvol, spdk_lvol_iter_cb cb_fn, void *cb_arg) |
Iterate clones of an lvol. | |
struct spdk_lvol * | spdk_lvol_get_by_uuid (const struct spdk_uuid *uuid) |
Get the lvol that has a particular UUID. | |
struct spdk_lvol * | spdk_lvol_get_by_names (const char *lvs_name, const char *lvol_name) |
Get the lvol that has the specified name in the specified lvolstore. | |
struct spdk_io_channel * | spdk_lvol_get_io_channel (struct spdk_lvol *lvol) |
Get I/O channel of bdev associated with specified lvol. | |
void | spdk_lvs_load (struct spdk_bs_dev *bs_dev, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg) |
Load lvolstore from the given blobstore device. | |
void | spdk_lvs_load_ext (struct spdk_bs_dev *bs_dev, const struct spdk_lvs_opts *lvs_opts, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg) |
Load lvolstore from the given blobstore device with options. | |
void | spdk_lvs_grow (struct spdk_bs_dev *bs_dev, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg) |
Grow a lvstore to fill the underlying device. | |
void | spdk_lvs_grow_live (struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn, void *cb_arg) |
Grow a loaded lvstore to fill the underlying device. | |
void | spdk_lvol_open (struct spdk_lvol *lvol, spdk_lvol_op_with_handle_complete cb_fn, void *cb_arg) |
Open a lvol. | |
void | spdk_lvol_inflate (struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Inflate lvol. | |
void | spdk_lvol_decouple_parent (struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Decouple parent of lvol. | |
bool | spdk_lvol_is_degraded (const struct spdk_lvol *lvol) |
Determine if an lvol is degraded. | |
int | spdk_lvol_shallow_copy (struct spdk_lvol *lvol, struct spdk_bs_dev *ext_dev, spdk_blob_shallow_copy_status status_cb_fn, void *status_cb_arg, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Make a shallow copy of lvol on given bs_dev. | |
void | spdk_lvol_set_parent (struct spdk_lvol *lvol, struct spdk_lvol *snapshot, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Set a snapshot as the parent of a lvol. | |
void | spdk_lvol_set_external_parent (struct spdk_lvol *lvol, const void *esnap_id, uint32_t esnap_id_len, spdk_lvol_op_complete cb_fn, void *cb_arg) |
Set an external snapshot as the parent of a lvol. | |
Logical Volume Interface.
typedef int(* spdk_lvol_iter_cb) (void *cb_arg, struct spdk_lvol *lvol) |
Callback definition for spdk_lvol_iter_clones.
lvol | An iterated lvol. |
cb_arg | Opaque context passed to spdk_lvol_iter_clone(). |
typedef void(* spdk_lvol_op_complete) (void *cb_arg, int lvolerrno) |
Callback definition for lvol operations without handle to lvol.
cb_arg | Custom arguments |
lvolerrno | Error |
typedef void(* spdk_lvol_op_with_handle_complete) (void *cb_arg, struct spdk_lvol *lvol, int lvolerrno) |
Callback definition for lvol operations with handle to lvol.
cb_arg | Custom arguments |
lvol | Handle to lvol or NULL when lvserrno is set |
lvolerrno | Error |
typedef void(* spdk_lvs_op_complete) (void *cb_arg, int lvserrno) |
Callback definition for lvolstore operations without handle.
cb_arg | Custom arguments |
lvserrno | Error |
typedef void(* spdk_lvs_op_with_handle_complete) (void *cb_arg, struct spdk_lvol_store *lvol_store, int lvserrno) |
Callback definition for lvolstore operations, including handle to lvs.
cb_arg | Custom arguments |
lvol_store | Handle to lvol_store or NULL when lvserrno is set |
lvserrno | Error |
void spdk_lvol_close | ( | struct spdk_lvol * | lvol, |
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Close lvol, but information is kept on lvolstore.
lvol | Handle to lvol. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
int spdk_lvol_create | ( | struct spdk_lvol_store * | lvs, |
const char * | name, | ||
uint64_t | sz, | ||
bool | thin_provisioned, | ||
enum lvol_clear_method | clear_method, | ||
spdk_lvol_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Create lvol on given lvolstore with specified size.
lvs | Handle to lvolstore. |
name | Name of lvol. |
sz | size of lvol in bytes. |
thin_provisioned | Enables thin provisioning. |
clear_method | Changes default data clusters clear method |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvol_create_clone | ( | struct spdk_lvol * | lvol, |
const char * | clone_name, | ||
spdk_lvol_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Create clone of given snapshot.
lvol | Handle to lvol snapshot. |
clone_name | Name of created clone. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvol_create_snapshot | ( | struct spdk_lvol * | lvol, |
const char * | snapshot_name, | ||
spdk_lvol_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Create snapshot of given lvol.
lvol | Handle to lvol. |
snapshot_name | Name of created snapshot. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvol_decouple_parent | ( | struct spdk_lvol * | lvol, |
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Decouple parent of lvol.
lvol | Handle to lvol |
cb_fn | Completion callback |
cb_arg | Completion callback custom arguments |
bool spdk_lvol_deletable | ( | struct spdk_lvol * | lvol | ) |
Returns if it is possible to delete an lvol (i.e.
lvol is not a snapshot that have at least one clone).
lvol | Handle to lvol |
void spdk_lvol_destroy | ( | struct spdk_lvol * | lvol, |
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Close lvol and remove information about lvol from its lvolstore.
lvol | Handle to lvol. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
struct spdk_lvol * spdk_lvol_get_by_names | ( | const char * | lvs_name, |
const char * | lvol_name ) |
Get the lvol that has the specified name in the specified lvolstore.
lvs_name | Name of the lvolstore. |
lvol_name | Name of the lvol. |
struct spdk_lvol * spdk_lvol_get_by_uuid | ( | const struct spdk_uuid * | uuid | ) |
Get the lvol that has a particular UUID.
uuid | The lvol's UUID. |
struct spdk_io_channel * spdk_lvol_get_io_channel | ( | struct spdk_lvol * | lvol | ) |
Get I/O channel of bdev associated with specified lvol.
lvol | Handle to lvol. |
void spdk_lvol_inflate | ( | struct spdk_lvol * | lvol, |
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Inflate lvol.
lvol | Handle to lvol |
cb_fn | Completion callback |
cb_arg | Completion callback custom arguments |
bool spdk_lvol_is_degraded | ( | const struct spdk_lvol * | lvol | ) |
Determine if an lvol is degraded.
A degraded lvol cannot perform IO.
lvol | Handle to lvol |
int spdk_lvol_iter_immediate_clones | ( | struct spdk_lvol * | lvol, |
spdk_lvol_iter_cb | cb_fn, | ||
void * | cb_arg ) |
Iterate clones of an lvol.
Iteration stops if cb_fn(cb_arg, clone_lvol) returns non-zero.
lvol | Handle to lvol. |
cb_fn | Function to call for each lvol that clones this lvol. |
cb_arg | Context to pass with cb_fn. |
void spdk_lvol_open | ( | struct spdk_lvol * | lvol, |
spdk_lvol_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Open a lvol.
lvol | Handle to lvol. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvol_rename | ( | struct spdk_lvol * | lvol, |
const char * | new_name, | ||
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Rename lvol with new_name.
lvol | Handle to lvol. |
new_name | new name for lvol. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvol_set_external_parent | ( | struct spdk_lvol * | lvol, |
const void * | esnap_id, | ||
uint32_t | esnap_id_len, | ||
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Set an external snapshot as the parent of a lvol.
This call set an external snapshot as the parent of a lvol, making the lvol a clone of this external snapshot. The previous parent of the lvol, if any, can be another external snapshot or a snapshot; if the lvol is not a clone, it must be thin-provisioned. The size of the external snapshot device must be an integer multiple of cluster size of lvol's lvolstore.
lvol | Handle to lvol |
esnap_id | The identifier of the external snapshot. |
esnap_id_len | The length of esnap_id, in bytes. |
cb_fn | Completion callback |
cb_arg | Completion callback custom arguments |
void spdk_lvol_set_parent | ( | struct spdk_lvol * | lvol, |
struct spdk_lvol * | snapshot, | ||
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Set a snapshot as the parent of a lvol.
This call set a snapshot as the parent of a lvol, making the lvol a clone of this snapshot. The previous parent of the lvol, if any, can be another snapshot or an external snapshot; if the lvol is not a clone, it must be thin-provisioned. Lvol and parent snapshot must have the same size and must belong to the same lvol store.
lvol | Handle to lvol |
snapshot | Handle to the parent snapshot |
cb_fn | Completion callback |
cb_arg | Completion callback custom arguments |
int spdk_lvol_shallow_copy | ( | struct spdk_lvol * | lvol, |
struct spdk_bs_dev * | ext_dev, | ||
spdk_blob_shallow_copy_status | status_cb_fn, | ||
void * | status_cb_arg, | ||
spdk_lvol_op_complete | cb_fn, | ||
void * | cb_arg ) |
Make a shallow copy of lvol on given bs_dev.
Lvol must be read only and lvol size must be less or equal than bs_dev size.
lvol | Handle to lvol |
ext_dev | The bs_dev to copy on. This is created on the given bdev by using spdk_bdev_create_bs_dev_ext() beforehand |
status_cb_fn | Called repeatedly during operation with status updates |
status_cb_arg | Argument passed to function status_cb_fn. |
cb_fn | Completion callback |
cb_arg | Completion callback custom arguments |
int spdk_lvs_destroy | ( | struct spdk_lvol_store * | lvol_store, |
spdk_lvs_op_complete | cb_fn, | ||
void * | cb_arg ) |
Destroy lvolstore.
All lvols have to be closed beforehand, when doing destroy.
lvol_store | Handle to lvolstore. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvs_grow | ( | struct spdk_bs_dev * | bs_dev, |
spdk_lvs_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Grow a lvstore to fill the underlying device.
Cannot be used on loaded lvstore.
bs_dev | Pointer to the blobstore device. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvs_grow_live | ( | struct spdk_lvol_store * | lvs, |
spdk_lvs_op_complete | cb_fn, | ||
void * | cb_arg ) |
Grow a loaded lvstore to fill the underlying device.
lvs | Pointer to lvolstore. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
int spdk_lvs_init | ( | struct spdk_bs_dev * | bs_dev, |
struct spdk_lvs_opts * | o, | ||
spdk_lvs_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Initialize lvolstore on given bs_bdev.
bs_dev | This is created on the given bdev by using spdk_bdev_create_bs_dev() beforehand. |
o | Options for lvolstore. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvs_load | ( | struct spdk_bs_dev * | bs_dev, |
spdk_lvs_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Load lvolstore from the given blobstore device.
bs_dev | Pointer to the blobstore device. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
void spdk_lvs_load_ext | ( | struct spdk_bs_dev * | bs_dev, |
const struct spdk_lvs_opts * | lvs_opts, | ||
spdk_lvs_op_with_handle_complete | cb_fn, | ||
void * | cb_arg ) |
Load lvolstore from the given blobstore device with options.
If lvs_opts is not NULL, it should be initialized with spdk_lvs_opts_init().
bs_dev | Pointer to the blobstore device. |
lvs_opts | lvolstore options. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. blobstore. |
void spdk_lvs_opts_init | ( | struct spdk_lvs_opts * | opts | ) |
Initialize an spdk_lvs_opts structure to the defaults.
opts | Pointer to the spdk_lvs_opts structure to initialize. |
void spdk_lvs_rename | ( | struct spdk_lvol_store * | lvs, |
const char * | new_name, | ||
spdk_lvs_op_complete | cb_fn, | ||
void * | cb_arg ) |
Rename the given lvolstore.
lvs | Pointer to lvolstore. |
new_name | New name of lvs. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |
int spdk_lvs_unload | ( | struct spdk_lvol_store * | lvol_store, |
spdk_lvs_op_complete | cb_fn, | ||
void * | cb_arg ) |
Unload lvolstore.
All lvols have to be closed beforehand, when doing unload.
lvol_store | Handle to lvolstore. |
cb_fn | Completion callback. |
cb_arg | Completion callback custom arguments. |