Spdk/lib/blob
Tomasz Zawadzki d1f863ca57 lib/blob: write out extent pages before persisting metadata
Add new serialization of changed extent pages before persisting md.

Iterate over active extent pages (not array !). When they are
allocated but not yet present on disk - write them out.
All extent pages in clean mutable data are assumed to be written out
already.

So there are two cases here:
1) Active mutable array is larger than clean
	All allocated extent pages should be written out.
2) Cluster allocation created new extent page
	Blob has to be thin provisioned and persist was called
	as part of cluster allocation. New extent page needs to be
	written out and EXTENT_TABLE allocated.

Iteration is done over num_extent_pages instead of extent_pages_array_size,
to prevent writting out too many extent pages when size of blob was
made smaller. The two values come back in sync at the end of persist
either way.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I780819fd7f3c44e4cf5d71c188c642536d3cc320
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479851
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
2020-01-27 18:06:43 +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 lib/blob: write out extent pages before persisting metadata 2020-01-27 18:06:43 +00:00
blobstore.h lib/blob: use use_extent_table instead of NULL from extent_page 2020-01-27 18:06:43 +00:00
Makefile lib/blob: move bdev subdir under module directory. 2019-08-22 16:29:49 +00:00
request.c blob: fix scanbuild failures in this file. 2019-05-16 20:53:21 +00:00
request.h blob: remove unused internal functions 2018-08-30 03:41:01 +00:00
zeroes.c blob: return error for write_zeroes and unmap requests 2019-06-07 18:37:53 +00:00