Spdk/lib/blob
Amir More 9e2eb8cb51 blobstore: Swap cluster maps on snapshot instead of copying
Previously, when creating a snapshot in blobstore the snapshot's cluster map
was copied from the "original" blob, with the original's map zeroed. These
operations are both O(num_clusters*cluster_size/page_size) while io
operations are frozen. This change replaces the linear operation with an
O(1) pointer swap at the critical moment that io is frozen, while
doing the zeroing before the freeze when preparing the snapshot to
minimize freeze time.

Change-Id: I1e468bc97623f5da161a8ddba1393c271acd3aed
Signed-off-by: Amir More <habeanf@gmail.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/451486
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
2019-04-22 18:49:21 +00:00
..
bdev blobstore: Add support for bdev_blob_queue_io in blobstore 2018-09-11 21:19:34 +00:00
blob_bs_dev.c blobstore: allow I/O operations to use io unit size smaller than page size. 2018-10-04 21:35:24 +00:00
blobstore.c blobstore: Swap cluster maps on snapshot instead of copying 2019-04-22 18:49:21 +00:00
blobstore.h blobstore: rename resize_in_progress to locked_operation_in_progress 2019-04-08 21:39:08 +00:00
Makefile blobstore: Add a blob_bs_dev that provides back_bs_dev for clones 2018-03-08 11:34:15 -05:00
request.c blob: pass NULL or SPDK_BLOBID_INVALID when bserrno != 0 2019-02-25 07:06:04 +00:00
request.h blob: remove unused internal functions 2018-08-30 03:41:01 +00:00
zeroes.c blobstore: allow I/O operations to use io unit size smaller than page size. 2018-10-04 21:35:24 +00:00