Commit ed43989a authored by Vasilii Ivanov's avatar Vasilii Ivanov Committed by Konrad Sztyber
Browse files

bdev/crypto: support resize of base bdev



Add handling of SPDK_BDEV_EVENT_RESIZE event for crypto bdev.
After obtaining it, resize crypto bdev to base bdev size and
pass RESIZE event furter down the bdev stack.

Fixes #3549

Change-Id: Ie2827622e39f5ac820fa0372a36fd1a0377c9ebf
Signed-off-by: default avatarVasilii Ivanov <iwanovvvasilij@gmail.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25195


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent a4931da0
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -673,6 +673,18 @@ vbdev_crypto_base_bdev_hotremove_cb(struct spdk_bdev *bdev_find)
	}
}

static void
vbdev_crypto_base_bdev_resize_cb(struct spdk_bdev *bdev_find)
{
	struct vbdev_crypto *crypto_bdev;

	TAILQ_FOREACH(crypto_bdev, &g_vbdev_crypto, link) {
		if (bdev_find == crypto_bdev->base_bdev) {
			spdk_bdev_notify_blockcnt_change(&crypto_bdev->crypto_bdev, bdev_find->blockcnt);
		}
	}
}

/* Called when the underlying base bdev triggers asynchronous event such as bdev removal. */
static void
vbdev_crypto_base_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev,
@@ -682,6 +694,9 @@ vbdev_crypto_base_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev
	case SPDK_BDEV_EVENT_REMOVE:
		vbdev_crypto_base_bdev_hotremove_cb(bdev);
		break;
	case SPDK_BDEV_EVENT_RESIZE:
		vbdev_crypto_base_bdev_resize_cb(bdev);
		break;
	default:
		SPDK_NOTICELOG("Unsupported bdev event: type %d\n", type);
		break;
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ DEFINE_STUB(spdk_accel_get_buf_align, uint8_t,
DEFINE_STUB(spdk_accel_get_opc_memory_domains, int, (enum spdk_accel_opcode opcode,
		struct spdk_memory_domain **domains,
		int array_size), 0);
DEFINE_STUB(spdk_bdev_notify_blockcnt_change, int, (struct spdk_bdev *bdev, uint64_t size), 0);

/* global vars and setup/cleanup functions used for all test functions */
struct spdk_bdev_io *g_base_io;