blobstore: fix serializing flags
This patch fixes issue when blobstore doesn't serialize flags when there is also at least one extent or xattr. Signed-off-by: Piotr Pelplinski <piotr.pelplinski@intel.com> Change-Id: I85d5031dc45df510cebe1acf4694ab62bca2e720 Reviewed-on: https://review.gerrithub.io/393770 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
db6d5f0e7b
commit
4bfe81b676
@ -559,6 +559,7 @@ _spdk_blob_serialize(const struct spdk_blob_data *blob, struct spdk_blob_md_page
|
||||
|
||||
/* Serialize flags */
|
||||
_spdk_blob_serialize_flags(blob, buf, &remaining_sz);
|
||||
buf += sizeof(struct spdk_blob_md_descriptor_flags);
|
||||
|
||||
/* Serialize xattrs */
|
||||
TAILQ_FOREACH(xattr, &blob->xattrs, link) {
|
||||
|
@ -2119,6 +2119,7 @@ blob_flags(void)
|
||||
spdk_blob_id blobid_invalid, blobid_data_ro, blobid_md_ro;
|
||||
struct spdk_blob *blob_invalid, *blob_data_ro, *blob_md_ro;
|
||||
struct spdk_bs_opts opts;
|
||||
int rc;
|
||||
|
||||
dev = init_dev();
|
||||
spdk_bs_opts_init(&opts);
|
||||
@ -2159,6 +2160,16 @@ blob_flags(void)
|
||||
SPDK_CU_ASSERT_FATAL(g_blob != NULL);
|
||||
blob_md_ro = g_blob;
|
||||
|
||||
/* Change the size of blob_data_ro to check if flags are serialized
|
||||
* when blob has non zero number of extents */
|
||||
rc = spdk_blob_resize(blob_data_ro, 10);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
/* Set the xattr to check if flags are serialized
|
||||
* when blob has non zero number of xattrs */
|
||||
rc = spdk_blob_set_xattr(blob_md_ro, "name", "log.txt", strlen("log.txt") + 1);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
__blob_to_data(blob_invalid)->invalid_flags = (1ULL << 63);
|
||||
__blob_to_data(blob_invalid)->state = SPDK_BLOB_STATE_DIRTY;
|
||||
__blob_to_data(blob_data_ro)->data_ro_flags = (1ULL << 62);
|
||||
@ -2218,6 +2229,7 @@ blob_flags(void)
|
||||
/* If an unknown data_ro flag was found, the blob should be marked both data and md read-only. */
|
||||
CU_ASSERT(__blob_to_data(blob_data_ro)->data_ro == true);
|
||||
CU_ASSERT(__blob_to_data(blob_data_ro)->md_ro == true);
|
||||
CU_ASSERT(spdk_blob_get_num_clusters(blob_data_ro) == 10);
|
||||
|
||||
g_blob = NULL;
|
||||
g_bserrno = -1;
|
||||
|
Loading…
Reference in New Issue
Block a user