From 4368937b4ee8eb166ebc12fb0f3320febf0fbb3d Mon Sep 17 00:00:00 2001 From: Darek Stojaczyk Date: Thu, 22 Aug 2019 11:27:57 +0200 Subject: [PATCH] bdev/part: remove thread safety from part_construct() spdk_bdev_part_construct() must be now called on the same thread that called spdk_bdev_part_base_construct(). This was always the case so far and I don't see any other case where thread safety could be useful, so just remove it. The doxygen doesn't say anything about it either. Even in GPT case, we create a base directly as a part of examine and then create part bdevs in the spdk_bdev_read() completion callback, but that callback will be always executed on the same thread which issued the read. Change-Id: I752f2a7f08c9faf4231ed53a46b700b33fa13697 Signed-off-by: Darek Stojaczyk Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466024 Tested-by: SPDK CI Jenkins Reviewed-by: Broadcom SPDK FC-NVMe CI Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- lib/bdev/part.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/bdev/part.c b/lib/bdev/part.c index f66ae92de..6cefbbfbd 100644 --- a/lib/bdev/part.c +++ b/lib/bdev/part.c @@ -109,7 +109,7 @@ spdk_bdev_part_free_cb(void *io_device) TAILQ_REMOVE(base->tailq, part, tailq); - if (__sync_sub_and_fetch(&base->ref, 1) == 0) { + if (--base->ref == 0) { spdk_bdev_module_release_bdev(base->bdev); spdk_bdev_part_base_free(base); } @@ -457,7 +457,7 @@ spdk_bdev_part_construct(struct spdk_bdev_part *part, struct spdk_bdev_part_base return -1; } - __sync_fetch_and_add(&base->ref, 1); + base->ref++; part->internal.base = base; if (!base->claimed) {