From 47bb651cd580406852509719f6e6689bee767125 Mon Sep 17 00:00:00 2001 From: Mike Gerdts Date: Sat, 5 Nov 2022 01:01:48 -0500 Subject: [PATCH] bdev: refactor bdev_examine before claims v2 This commit has no functional change. It refactors an if statement into a case statement in preparation for supporting claims v2. Signed-off-by: Mike Gerdts Change-Id: I1862428c91a7066ad9079878d4c1b690a5ef631c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15289 Reviewed-by: Shuhei Matsumoto Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- lib/bdev/bdev.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index d7cf8ae23..fb2a0a0c3 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -682,25 +682,39 @@ bdev_examine(struct spdk_bdev *bdev) } } - if (bdev->internal.claim_type != SPDK_BDEV_CLAIM_NONE) { + spdk_spin_lock(&bdev->internal.spinlock); + + switch (bdev->internal.claim_type) { + case SPDK_BDEV_CLAIM_NONE: + /* Examine by all bdev modules */ + TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, internal.tailq) { + if (module->examine_disk) { + spdk_spin_lock(&module->internal.spinlock); + module->internal.action_in_progress++; + spdk_spin_unlock(&module->internal.spinlock); + spdk_spin_unlock(&bdev->internal.spinlock); + module->examine_disk(bdev); + spdk_spin_lock(&bdev->internal.spinlock); + } + } + break; + case SPDK_BDEV_CLAIM_EXCL_WRITE: + /* Examine by the one bdev module with a v1 claim */ module = bdev->internal.claim.v1.module; if (module->examine_disk) { spdk_spin_lock(&module->internal.spinlock); module->internal.action_in_progress++; spdk_spin_unlock(&module->internal.spinlock); + spdk_spin_unlock(&bdev->internal.spinlock); module->examine_disk(bdev); + return; } - return; + break; + default: + break; } - TAILQ_FOREACH(module, &g_bdev_mgr.bdev_modules, internal.tailq) { - if (module->examine_disk) { - spdk_spin_lock(&module->internal.spinlock); - module->internal.action_in_progress++; - spdk_spin_unlock(&module->internal.spinlock); - module->examine_disk(bdev); - } - } + spdk_spin_unlock(&bdev->internal.spinlock); } int