Commit 742d818e authored by Dong Yi's avatar Dong Yi Committed by Tomasz Zawadzki
Browse files

blobstore: Defer to memcpy after all xattr mallocs are finished.



This confirms that the error path can return more efficient
without memcpy such as xattr->name.

Signed-off-by: default avatarDong Yi <dongx.yi@intel.com>
Change-Id: Ic2ed28121ed76eda9d7b24ed6c4c95b0588817de
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11654


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
parent 0270fc32
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -537,8 +537,6 @@ blob_deserialize_xattr(struct spdk_blob *blob,
		free(xattr);
		return -ENOMEM;
	}
	memcpy(xattr->name, desc_xattr->name, desc_xattr->name_length);
	xattr->name[desc_xattr->name_length] = '\0';

	xattr->value = malloc(desc_xattr->value_length);
	if (xattr->value == NULL) {
@@ -546,6 +544,9 @@ blob_deserialize_xattr(struct spdk_blob *blob,
		free(xattr);
		return -ENOMEM;
	}

	memcpy(xattr->name, desc_xattr->name, desc_xattr->name_length);
	xattr->name[desc_xattr->name_length] = '\0';
	xattr->value_len = desc_xattr->value_length;
	memcpy(xattr->value,
	       (void *)((uintptr_t)desc_xattr->name + desc_xattr->name_length),