Spdk/lib/blob
Tomasz Zawadzki 5d5053373f lib/blob: fix inserting extent pages
ctx->extent_page signifies if page was allocated
for insertion.

1) It is possible for a thread to claim extent page
on its own thread, and put it in ctx->extent_page.
If conflicting thread allocates another ctx->extent_page,
then it should be freed. This does not mean failure
to insert cluster. As different threads could have
been trying to allocate different clusters,
so condition on line 6716 does not cover it.
If so then it shouldn't be an issue to release
the claimed ctx->extent_page and proceed with updating the
extent page which originally won the race.
NOTE: if clusters were conflicting, then extent_page is
freed in _spdk_blob_insert_cluster_cpl().

2) At this point of _spdk_blob_insert_cluster_msg()
we already verified that there already is
extent page allocated at "*extent_page".
In such case ctx->extent_page will be 0,
and should not be used.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Id5b57c88248890eee60d2e7dbecbd984c98b561b
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482867
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
2020-01-28 09:15:23 +00:00
..
blob_bs_dev.c blobstore: allow I/O operations to use io unit size smaller than page size. 2018-10-04 21:35:24 +00:00
blobstore.c lib/blob: fix inserting extent pages 2020-01-28 09:15:23 +00:00
blobstore.h lib/blob: add starting cluster index to extent page 2020-01-28 09:15:23 +00:00
Makefile lib/blob: move bdev subdir under module directory. 2019-08-22 16:29:49 +00:00
request.c blob: fix scanbuild failures in this file. 2019-05-16 20:53:21 +00:00
request.h blob: remove unused internal functions 2018-08-30 03:41:01 +00:00
zeroes.c blob: return error for write_zeroes and unmap requests 2019-06-07 18:37:53 +00:00