Commit 2dc74a00 authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Jim Harris
Browse files

raid: free base bdev earlier during removal



The base bdev can be freed before unquiescing the raid bdev. This also
assures that it is freed even if unquiesce fails.

Signed-off-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I8d215e34d059cefdbc5c51f22578c518873f6819
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/23148


Reviewed-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarMateusz Kozlowski <mateusz.kozlowski@solidigm.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 6518a98d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1936,8 +1936,6 @@ raid_bdev_remove_base_bdev_on_unquiesced(void *ctx, int status)
		goto out;
	}

	raid_bdev_free_base_bdev_resource(base_info);

	if (raid_bdev->sb) {
		struct raid_bdev_superblock *sb = raid_bdev->sb;
		uint8_t slot = raid_bdev_base_bdev_slot(base_info);
@@ -1988,6 +1986,8 @@ raid_bdev_channels_remove_base_bdev_done(struct spdk_io_channel_iter *i, int sta
	struct raid_base_bdev_info *base_info = spdk_io_channel_iter_get_ctx(i);
	struct raid_bdev *raid_bdev = base_info->raid_bdev;

	raid_bdev_free_base_bdev_resource(base_info);

	spdk_bdev_unquiesce(&raid_bdev->bdev, &g_raid_if, raid_bdev_remove_base_bdev_on_unquiesced,
			    base_info);
}