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)==92, "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. |