We only create one spdk_blob object for a given blob, and just increase the ref_count if it is opened multiple times. bs_open_blob would do the lookup for existing opened blobs. But if the blob is opened again, before the previous open operation has completed, we would end up with two spdk_blob objects for the same blob. Solution is to do another lookup when the open operation completes. If we find the blob, free the one we just finished opening and return the existing one instead. Also added unit test that failed on the existing code but passes now with this patch. Signed-off-by: Jim Harris <james.r.harris@intel.com> Reported-by: Mike Cui Change-Id: I00c3a913b413deddf06f0b63f7a669efb2b5658f Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3855 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> |
||
---|---|---|
.. | ||
blob_bs_dev.c | ||
blobstore.c | ||
blobstore.h | ||
Makefile | ||
request.c | ||
request.h | ||
spdk_blob.map | ||
zeroes.c |