Spdk/lib
Mike Gerdts cc27c1ab11 blobstore: missing lock leads to md page race
Many parts of the blobstore.c seem to have gone with the assumption that
blob creation, deletion, etc. all happen on the md thread. This
assumption would allow modification of the bs->used_md_pages and
bs->used_clusters bit arrays without holding a lock. Placing
"assert(spdk_get_thread() == bs->md_thread)" in bs_claim_md_page() and
bs_claim_cluster() show that each of these functions are called on other
threads due writes to thin provisioned volumes.

This problem was first seen in the wild with this failed assertion:

  bs_claim_md_page: Assertion
     `spdk_bit_array_get(bs->used_md_pages, page) == false' failed.

This commit adds "assert(spdk_spin_held(&bs->used_lock))" in those
places where bs->used_md_pages and bs->used_lock are modified, then
holds bs->used_lock in the places needed to satisfy these assertions.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I0523dd343ec490d994352932b2a73379a80e36f4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15953
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Community-CI: Mellanox Build Bot
2022-12-20 09:19:09 +00:00
..
accel misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
bdev lib/bdev: send back the eligible QoS IO to the original thread 2022-12-16 09:43:28 +00:00
blob blobstore: missing lock leads to md page race 2022-12-20 09:19:09 +00:00
blobfs blob: Add translate_lba operation 2022-12-08 12:54:54 +00:00
conf update Intel copyright notices 2022-11-10 08:28:53 +00:00
dma update Intel copyright notices 2022-11-10 08:28:53 +00:00
env_dpdk lib/env_dpdk: add a valid check before fclose 2022-12-16 09:43:47 +00:00
env_ocf update Intel copyright notices 2022-11-10 08:28:53 +00:00
event app: enable configurable msg_mempool_size for reactor 2022-12-14 08:04:55 +00:00
ftl misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
idxd lib/idxd: change max idxd completions processed 2022-12-08 12:55:58 +00:00
init misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
ioat update Intel copyright notices 2022-11-10 08:28:53 +00:00
iscsi misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
json json: add spdk_json_write_named_double 2022-11-22 10:01:43 +00:00
jsonrpc lib/jsonrpc: check the return value from setsockopt 2022-12-20 09:17:59 +00:00
log log: add deprecated tracking API 2022-12-07 17:45:53 +00:00
lvol lib/lvol: bad cluster size error message 2022-12-16 09:26:35 +00:00
nbd update Intel copyright notices 2022-11-10 08:28:53 +00:00
notify update Intel copyright notices 2022-11-10 08:28:53 +00:00
nvme misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
nvmf nvmf: add completed_nvme_io to nvmf_poll_group_stat 2022-12-16 09:27:50 +00:00
rdma update Intel copyright notices 2022-11-10 08:28:53 +00:00
reduce update Intel copyright notices 2022-11-10 08:28:53 +00:00
rocksdb rocksdb: remove spdk_thread 2022-11-23 08:22:04 +00:00
rpc lib/rpc: add RPC allow list 2022-11-15 08:31:02 +00:00
scsi misc: Fix spelling mistakes 2022-12-09 08:16:18 +00:00
sock sock: set errno in spdk_sock_flush() 2022-12-01 12:49:04 +00:00
thread thread: cache a number of iobuf buffers on each channel 2022-12-16 09:06:07 +00:00
trace lib/trace: add trace_get_info RPC 2022-12-05 09:50:38 +00:00
trace_parser update Intel copyright notices 2022-11-10 08:28:53 +00:00
ut_mock update Intel copyright notices 2022-11-10 08:28:53 +00:00
util util: add function spdk_fd_group_get_epoll_event 2022-11-22 10:01:43 +00:00
vfio_user update Intel copyright notices 2022-11-10 08:28:53 +00:00
vfu_tgt update Intel copyright notices 2022-11-10 08:28:53 +00:00
vhost lib/vhost: explicitly set the initial value for local variable 2022-12-13 09:26:06 +00:00
virtio lib/virtio: add the ctx NULL check before dereferencing it 2022-11-30 08:50:48 +00:00
vmd update Intel copyright notices 2022-11-10 08:28:53 +00:00
Makefile configure: rename --with-reduce --with-vbdev-compress 2022-12-08 12:55:27 +00:00