Spdk/test/unit/lib
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
..
bdev bdev/nvme: add a function for specifying a multipath trid. 2020-08-07 15:06:01 +00:00
blob blob: handle overlapping open case 2020-08-21 08:24:09 +00:00
blobfs module/blobfs: remove spdk prefix from static/internal functions. 2020-05-18 09:48:18 +00:00
event lib/event: remove _spdk prefix from functions. 2020-05-27 07:35:02 +00:00
ftl lib/ftl: Keep tracing functions under define flag 2020-06-05 09:03:31 +00:00
idxd lib/idxd: add unit test for idxd_wq_config() 2020-04-23 15:48:32 +00:00
ioat ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
iscsi lib/iscsi: Make max outstanding R2Ts per connection configurable 2020-08-18 07:27:45 +00:00
json lib: json-nbd remove spdk prefix from static functions. 2020-05-21 09:19:00 +00:00
jsonrpc lib/jsonrpc: remove spdk_ prefix from internal functions. 2020-05-11 12:29:07 +00:00
log log: spdk_log_dump more characters than required 2020-04-14 11:34:45 +00:00
lvol lvol: let thin_provision flag be consistent with Blob 2020-05-22 10:42:28 +00:00
notify ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
nvme lib/nvme: change timeout in wait_for_completions to usec 2020-08-19 07:29:19 +00:00
nvmf nvmf: Add check for bidirectional xfer type 2020-08-04 18:27:45 +00:00
reduce test: add generic unlink wrapper 2020-05-06 12:43:57 +00:00
scsi UT/scsi_reserve: add Persistent Reserve with SPC2 RESERVE/RELEASE test case 2020-06-25 07:16:08 +00:00
sock ut/sock: Add get/set_opts unit tests for posix sockets 2020-06-02 09:48:00 +00:00
thread lib/thread: remove _spdk prefix. 2020-06-01 13:07:30 +00:00
util ut: make use of CUnit macro to reduce duplications 2020-04-02 14:50:12 +00:00
vhost lib/vhost: remove dependency on lib/event 2020-05-13 07:47:01 +00:00
json_mock.c subsystem: add per module configuration dump 2018-03-23 02:47:40 -04:00
Makefile lib/idxd: add unit test framework and first unit test 2020-04-23 15:48:32 +00:00