ae10cf633c
Before this patch blob persist wrote out all allocated extent pages. Intended design was to write out extent pages in two cases: 1) Thin provisioned blobs to write out extent pages when necessary during cluster allocation. 2) Thick provisioned blobs to write extent pages during blob persist when the blob was resized This patch implements 1) by inserting extent before issuing blob persist in cluster allocation path. See blob_persist_extent_page_cpl() and blob_insert_new_ep_cb(). Blob persist might have to rewrite the last extent page after blob resize. See blob_persist_start(). Meanwhile 2) was incorrecly implemented since it always re-wrote all extent pages starting from 0. This was addressed by limiting number of extent pages written, only to ones that were resized. Some considerations were needed: a) blob resize happen on cluster granularity, it might be needed to re-write last extent page if resize was not large enough to change number of extent pages b) first extent page to write should be based on the num_extent_pages from active or clean, depending on resize direction See blob_persist_start(). Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Change-Id: Ibba9e3de3aadb64c1844a462eb0246e4ef65d37f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7202 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Community-CI: Mellanox Build Bot |
||
---|---|---|
.. | ||
blob_bs_dev.c | ||
blobstore.c | ||
blobstore.h | ||
Makefile | ||
request.c | ||
request.h | ||
spdk_blob.map | ||
zeroes.c |