diff --git a/doc/Doxyfile b/doc/Doxyfile index 1df848786..aa3c5aa27 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -793,6 +793,7 @@ INPUT = ../include/spdk \ event.md \ ioat.md \ iscsi.md \ + lvol.md \ nvme.md \ nvme-cli.md \ nvmf.md \ diff --git a/doc/bdev.md b/doc/bdev.md index c10557843..c467acaa2 100644 --- a/doc/bdev.md +++ b/doc/bdev.md @@ -155,3 +155,8 @@ kill $nbd_pid # the first partition will be automatically exposed as # Nvme0n1p1 in SPDK applications. ~~~ + +## Logical Volumes + +The SPDK lvol driver allows to dynamically partition other SPDK backends. +No static configuration for this driver. Refer to @ref lvol for detailed RPC configuration. diff --git a/doc/lvol.md b/doc/lvol.md new file mode 100644 index 000000000..b0e4ba499 --- /dev/null +++ b/doc/lvol.md @@ -0,0 +1,28 @@ +# Logical volume store {#lvolstore} + +A logical volume store is an SPDK blobstore with a special super blob denoting the blobstore. +This super blob is to different from SPDK blobstores used for BlobFS. + +# Logical volume {#lvol} + +A logical volume is an SPDK blob created from an lvolstore. + +An lvol is uniquely identified by its blob ID and the UUID of the lvolstore from which it was created. + +# Logical volume block device {#vdev_lvol} + +Representation of an SPDK block device (spdk_bdev) with an lvol implementation. A logical volume block device translates generic SPDK block device I/O (spdk_bdev_io) operations into the equivalent SPDK blob operations. + +# RPC overview +There are few logical volumes specific calls. + +- construct_lvol_store bdev_name + Constructs lvolstore on specified bdev +- destroy_lvol_store bdev_name + Destroy lvolstore on specified bdev +- construct_lvol_bdev uuid size + Constructs lvol bdev on lvolstore specified by uuid with specified size +- resize_lvol_bdev bdev_name size + Resizes specified lvol bdev + +Note that destroying lvol store requires using call destroy_lvol_store, while deleting single lvol requires using delete_bdev rpc call.