Spdk/lib/blob
Jim Harris ed7848f2df blob: handle overlapping open case
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>
2020-08-21 08:24:09 +00:00
..
blob_bs_dev.c lib/blob: remove _spdk prefix from all functions. 2020-05-27 07:35:02 +00:00
blobstore.c blob: handle overlapping open case 2020-08-21 08:24:09 +00:00
blobstore.h blob: Add a bitmask for quickly checking which blobs are open 2020-07-07 07:30:58 +00:00
Makefile mk/lib: add a check that major and minor version is set for libs. 2020-05-21 09:19:00 +00:00
request.c lib/blob: remove spdk_ prefix from bs_batch_read_bs_dev 2020-06-01 09:21:14 +00:00
request.h lib/blob: remove spdk_ prefix from bs_batch_read_bs_dev 2020-06-01 09:21:14 +00:00
spdk_blob.map lib/blob: add a map file. 2020-04-15 22:10:08 +00:00
zeroes.c lib/blob: remove spdk_ from non-public APIs 2020-04-15 22:10:08 +00:00