blob: esnap clones are not clones

spdk_blob_is_clone() should return true only for normal clones. To
detect esnap clones, use spdk_blob_is_esnap_clone(). This also clarifies
documentation of spdk_blob_is_esnap_clone() to match the implementation.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I9993ab60c1a097531a46fb6760124a632f6857cd
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17544
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>
This commit is contained in:
Mike Gerdts 2023-04-11 13:54:22 -05:00 committed by David Ko
parent 7d9bc09008
commit 2e1b12b45f
3 changed files with 8 additions and 4 deletions

View File

@ -689,11 +689,13 @@ bool spdk_blob_is_read_only(struct spdk_blob *blob);
bool spdk_blob_is_snapshot(struct spdk_blob *blob); bool spdk_blob_is_snapshot(struct spdk_blob *blob);
/** /**
* Check if blob is a clone. * Check if blob is a clone of a blob.
*
* Clones of external snapshots will return false. See spdk_blob_is_esnap_clone.
* *
* \param blob Blob. * \param blob Blob.
* *
* \return true if blob is a clone. * \return true if blob is a clone of a blob.
*/ */
bool spdk_blob_is_clone(struct spdk_blob *blob); bool spdk_blob_is_clone(struct spdk_blob *blob);
@ -707,7 +709,7 @@ bool spdk_blob_is_clone(struct spdk_blob *blob);
bool spdk_blob_is_thin_provisioned(struct spdk_blob *blob); bool spdk_blob_is_thin_provisioned(struct spdk_blob *blob);
/** /**
* Check if blob is a clone of an external bdev. * Check if blob is a clone of an external snapshot.
* *
* \param blob Blob. * \param blob Blob.
* *

View File

@ -8478,7 +8478,8 @@ spdk_blob_is_clone(struct spdk_blob *blob)
{ {
assert(blob != NULL); assert(blob != NULL);
if (blob->parent_id != SPDK_BLOBID_INVALID) { if (blob->parent_id != SPDK_BLOBID_INVALID &&
blob->parent_id != SPDK_BLOBID_EXTERNAL_SNAPSHOT) {
assert(spdk_blob_is_thin_provisioned(blob)); assert(spdk_blob_is_thin_provisioned(blob));
return true; return true;
} }

View File

@ -7486,6 +7486,7 @@ blob_esnap_create(void)
SPDK_CU_ASSERT_FATAL(blob != NULL); SPDK_CU_ASSERT_FATAL(blob != NULL);
SPDK_CU_ASSERT_FATAL(spdk_blob_is_esnap_clone(blob)); SPDK_CU_ASSERT_FATAL(spdk_blob_is_esnap_clone(blob));
SPDK_CU_ASSERT_FATAL(blob_is_esnap_clone(blob)); SPDK_CU_ASSERT_FATAL(blob_is_esnap_clone(blob));
SPDK_CU_ASSERT_FATAL(!spdk_blob_is_clone(blob));
sz = spdk_blob_get_num_clusters(blob); sz = spdk_blob_get_num_clusters(blob);
CU_ASSERT(sz == esnap_num_clusters); CU_ASSERT(sz == esnap_num_clusters);
ut_blob_close_and_delete(bs, blob); ut_blob_close_and_delete(bs, blob);