Commit 32c96c17 authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Tomasz Zawadzki
Browse files

lib/bdev: don't allow quiesce on unregistered bdevs



A bdev in this state is not able to service IO so quiesce is
meaningless. Also, lba range locking should not be used at this point
because it needs the bdev IO channel, which may have been unregistered.

Change-Id: I9bcde2304c36859b5bbf849f1ff0bf7bea87d618
Signed-off-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@solidigm.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26493


Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
parent 3be29571
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -10811,6 +10811,13 @@ _spdk_bdev_quiesce(struct spdk_bdev *bdev, struct spdk_bdev_module *module,
		return -EINVAL;
	}

	spdk_spin_lock(&bdev->internal.spinlock);
	if (bdev->internal.status == SPDK_BDEV_STATUS_REMOVING && TAILQ_EMPTY(&bdev->internal.open_descs)) {
		spdk_spin_unlock(&bdev->internal.spinlock);
		return -ENODEV;
	}
	spdk_spin_unlock(&bdev->internal.spinlock);

	if (unquiesce) {
		struct lba_range *range;