lvol: lock g_lvol_stores_mutex when access g_lvol_stores
Since we lock g_lvol_stores_mutex when add lvs to g_lvol_stores, so logically speaking, we shoud lock g_lvol_stores_mutex whenever access g_lvol_stores_mutex. Although I can't figure out specific scenario that will cause contention if we don't lock it. Change-Id: If3bdba91407f5c9d09fc16c5ec7dcb919ff9647d Signed-off-by: wuzhouhui <wuzhouhui@kingsoft.com> Reviewed-on: https://review.gerrithub.io/426147 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
dfb7f70f0b
commit
fdaea1fa5a
@ -79,9 +79,12 @@ _spdk_add_lvs_to_list(struct spdk_lvol_store *lvs)
|
|||||||
static void
|
static void
|
||||||
_spdk_lvs_free(struct spdk_lvol_store *lvs)
|
_spdk_lvs_free(struct spdk_lvol_store *lvs)
|
||||||
{
|
{
|
||||||
|
pthread_mutex_lock(&g_lvol_stores_mutex);
|
||||||
if (lvs->on_list) {
|
if (lvs->on_list) {
|
||||||
TAILQ_REMOVE(&g_lvol_stores, lvs, link);
|
TAILQ_REMOVE(&g_lvol_stores, lvs, link);
|
||||||
}
|
}
|
||||||
|
pthread_mutex_unlock(&g_lvol_stores_mutex);
|
||||||
|
|
||||||
free(lvs);
|
free(lvs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,13 +715,16 @@ spdk_lvs_rename(struct spdk_lvol_store *lvs, const char *new_name,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check if new or new_name is already used in other lvs */
|
/* Check if new or new_name is already used in other lvs */
|
||||||
|
pthread_mutex_lock(&g_lvol_stores_mutex);
|
||||||
TAILQ_FOREACH(tmp, &g_lvol_stores, link) {
|
TAILQ_FOREACH(tmp, &g_lvol_stores, link) {
|
||||||
if (!strncmp(new_name, tmp->name, SPDK_LVS_NAME_MAX) ||
|
if (!strncmp(new_name, tmp->name, SPDK_LVS_NAME_MAX) ||
|
||||||
!strncmp(new_name, tmp->new_name, SPDK_LVS_NAME_MAX)) {
|
!strncmp(new_name, tmp->new_name, SPDK_LVS_NAME_MAX)) {
|
||||||
|
pthread_mutex_unlock(&g_lvol_stores_mutex);
|
||||||
cb_fn(cb_arg, -EEXIST);
|
cb_fn(cb_arg, -EEXIST);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
pthread_mutex_unlock(&g_lvol_stores_mutex);
|
||||||
|
|
||||||
req = calloc(1, sizeof(*req));
|
req = calloc(1, sizeof(*req));
|
||||||
if (!req) {
|
if (!req) {
|
||||||
|
Loading…
Reference in New Issue
Block a user