lvol: don't return lvs_bdev if it's being destroyed

During hot remove of lvol store some lvols can already be in a process
of removal. We should not start another removal process for lvol that
is already being removed.

Signed-off-by: Maciej Szwed <maciej.szwed@intel.com>
Change-Id: Ifc91e4cee11ee63af04eac3729d014d7c04ff98b
Reviewed-on: https://review.gerrithub.io/390217
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Maciej Szwed 2017-12-04 11:38:24 +01:00 committed by Jim Harris
parent 453f5ae9f6
commit 236f84dae7

View File

@ -73,7 +73,12 @@ vbdev_get_lvs_bdev_by_bdev(struct spdk_bdev *bdev_orig)
while (lvs_bdev != NULL) {
if (lvs_bdev->bdev == bdev_orig) {
return lvs_bdev;
if (lvs_bdev->req != NULL) {
/* We do not allow access to lvs that are being destroyed */
return NULL;
} else {
return lvs_bdev;
}
}
lvs_bdev = vbdev_lvol_store_next(lvs_bdev);
}