Commit d1fd0d13 authored by Ben Walker's avatar Ben Walker Committed by Tomasz Zawadzki
Browse files

bdev: Remove module_link from spdk_bdev_io



This is no longer used.

Change-Id: I11adf75d18669ae950eced57d52a97bc5b453de4
Signed-off-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21938


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
parent a3bc7320
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -914,9 +914,6 @@ struct spdk_bdev_io {
		} zone_mgmt;
	} u;

	/** It may be used by modules to put the bdev_io into its own list. */
	TAILQ_ENTRY(spdk_bdev_io) module_link;

	/**
	 *  Fields that are used internally by the bdev subsystem.  Bdev modules
	 *  must not read or write to these fields.
+21 −6
Original line number Diff line number Diff line
@@ -126,8 +126,12 @@ struct ut_expected_io {
	TAILQ_ENTRY(ut_expected_io)	link;
};

struct bdev_ut_io {
	TAILQ_ENTRY(bdev_ut_io)		link;
};

struct bdev_ut_channel {
	TAILQ_HEAD(, spdk_bdev_io)	outstanding_io;
	TAILQ_HEAD(, bdev_ut_io)	outstanding_io;
	uint32_t			outstanding_io_count;
	TAILQ_HEAD(, ut_expected_io)	expected_io;
};
@@ -200,6 +204,7 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
	struct ut_expected_io *expected_io;
	struct iovec *iov, *expected_iov;
	struct spdk_bdev_io *bio_to_abort;
	struct bdev_ut_io *bio;
	int i;

	g_bdev_io = bdev_io;
@@ -241,9 +246,10 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)

	if (bdev_io->type == SPDK_BDEV_IO_TYPE_ABORT) {
		if (g_io_exp_status == SPDK_BDEV_IO_STATUS_SUCCESS) {
			TAILQ_FOREACH(bio_to_abort, &ch->outstanding_io, module_link) {
			TAILQ_FOREACH(bio, &ch->outstanding_io, link) {
				bio_to_abort = spdk_bdev_io_from_ctx(bio);
				if (bio_to_abort == bdev_io->u.abort.bio_to_abort) {
					TAILQ_REMOVE(&ch->outstanding_io, bio_to_abort, module_link);
					TAILQ_REMOVE(&ch->outstanding_io, bio, link);
					ch->outstanding_io_count--;
					spdk_bdev_io_complete(bio_to_abort, SPDK_BDEV_IO_STATUS_FAILED);
					break;
@@ -297,7 +303,7 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
		bdev_io->u.bdev.seek.offset = g_seek_hole_offset;
	}

	TAILQ_INSERT_TAIL(&ch->outstanding_io, bdev_io, module_link);
	TAILQ_INSERT_TAIL(&ch->outstanding_io, (struct bdev_ut_io *)bdev_io->driver_ctx, link);
	ch->outstanding_io_count++;

	expected_io = TAILQ_FIRST(&ch->expected_io);
@@ -366,6 +372,7 @@ static uint32_t
stub_complete_io(uint32_t num_to_complete)
{
	struct bdev_ut_channel *ch = g_bdev_ut_channel;
	struct bdev_ut_io *bio;
	struct spdk_bdev_io *bdev_io;
	static enum spdk_bdev_io_status io_status;
	uint32_t num_completed = 0;
@@ -374,8 +381,9 @@ stub_complete_io(uint32_t num_to_complete)
		if (TAILQ_EMPTY(&ch->outstanding_io)) {
			break;
		}
		bdev_io = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, bdev_io, module_link);
		bio = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, bio, link);
		bdev_io = spdk_bdev_io_from_ctx(bio);
		ch->outstanding_io_count--;
		io_status = g_io_exp_status == SPDK_BDEV_IO_STATUS_SUCCESS ? SPDK_BDEV_IO_STATUS_SUCCESS :
			    g_io_exp_status;
@@ -488,12 +496,19 @@ vbdev_ut_module_fini(void)
{
}

static int
vbdev_ut_get_ctx_size(void)
{
	return sizeof(struct bdev_ut_io);
}

struct spdk_bdev_module vbdev_ut_if = {
	.name = "vbdev_ut",
	.module_init = vbdev_ut_module_init,
	.module_fini = vbdev_ut_module_fini,
	.examine_config = vbdev_ut_examine_config,
	.examine_disk = vbdev_ut_examine_disk,
	.get_ctx_size = vbdev_ut_get_ctx_size,
};

SPDK_BDEV_MODULE_REGISTER(bdev_ut, &bdev_ut_if)
+28 −11
Original line number Diff line number Diff line
@@ -73,8 +73,12 @@ struct ut_bdev {
	void			*io_target;
};

struct ut_bdev_io {
	TAILQ_ENTRY(ut_bdev_io)		link;
};

struct ut_bdev_channel {
	TAILQ_HEAD(, spdk_bdev_io)	outstanding_io;
	TAILQ_HEAD(, ut_bdev_io)	outstanding_io;
	uint32_t			outstanding_cnt;
	uint32_t			avail_cnt;
	struct spdk_thread		*thread;
@@ -160,13 +164,13 @@ static void
stub_reset_channel(void *ctx)
{
	struct ut_bdev_channel *ch = ctx;
	struct spdk_bdev_io *io;
	struct ut_bdev_io *bio;

	while (!TAILQ_EMPTY(&ch->outstanding_io)) {
		io = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, io, module_link);
		bio = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, bio, link);
		ch->outstanding_cnt--;
		spdk_bdev_io_complete(io, SPDK_BDEV_IO_STATUS_ABORTED);
		spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bio), SPDK_BDEV_IO_STATUS_ABORTED);
		ch->avail_cnt++;
	}
}
@@ -176,6 +180,7 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
{
	struct ut_bdev_channel *ch = spdk_io_channel_get_ctx(_ch), *tmp_ch;
	struct spdk_bdev_io *io;
	struct ut_bdev_io *bio;

	if (bdev_io->type == SPDK_BDEV_IO_TYPE_RESET) {
		TAILQ_FOREACH(tmp_ch, &g_ut_channels, link) {
@@ -186,9 +191,10 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
			}
		}
	} else if (bdev_io->type == SPDK_BDEV_IO_TYPE_ABORT) {
		TAILQ_FOREACH(io, &ch->outstanding_io, module_link) {
		TAILQ_FOREACH(bio, &ch->outstanding_io, link) {
			io = spdk_bdev_io_from_ctx(bio);
			if (io == bdev_io->u.abort.bio_to_abort) {
				TAILQ_REMOVE(&ch->outstanding_io, io, module_link);
				TAILQ_REMOVE(&ch->outstanding_io, bio, link);
				ch->outstanding_cnt--;
				spdk_bdev_io_complete(io, SPDK_BDEV_IO_STATUS_ABORTED);
				ch->avail_cnt++;
@@ -203,7 +209,7 @@ stub_submit_request(struct spdk_io_channel *_ch, struct spdk_bdev_io *bdev_io)
	}

	if (ch->avail_cnt > 0) {
		TAILQ_INSERT_TAIL(&ch->outstanding_io, bdev_io, module_link);
		TAILQ_INSERT_TAIL(&ch->outstanding_io, (struct ut_bdev_io *)bdev_io->driver_ctx, link);
		ch->outstanding_cnt++;
		ch->avail_cnt--;
	} else {
@@ -216,6 +222,7 @@ stub_complete_io(void *io_target, uint32_t num_to_complete)
{
	struct spdk_io_channel *_ch = spdk_get_io_channel(io_target);
	struct ut_bdev_channel *ch = spdk_io_channel_get_ctx(_ch);
	struct ut_bdev_io *bio;
	struct spdk_bdev_io *io;
	bool complete_all = (num_to_complete == 0);
	uint32_t num_completed = 0;
@@ -224,8 +231,9 @@ stub_complete_io(void *io_target, uint32_t num_to_complete)
		if (TAILQ_EMPTY(&ch->outstanding_io)) {
			break;
		}
		io = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, io, module_link);
		bio = TAILQ_FIRST(&ch->outstanding_io);
		TAILQ_REMOVE(&ch->outstanding_io, bio, link);
		io = spdk_bdev_io_from_ctx(bio);
		ch->outstanding_cnt--;
		spdk_bdev_io_complete(io, SPDK_BDEV_IO_STATUS_SUCCESS);
		ch->avail_cnt++;
@@ -274,6 +282,12 @@ fini_start(void)
	g_fini_start_called = true;
}

static int
get_ctx_size(void)
{
	return sizeof(struct ut_bdev_io);
}

struct spdk_bdev_module bdev_ut_if = {
	.name = "bdev_ut",
	.module_init = module_init,
@@ -281,6 +295,7 @@ struct spdk_bdev_module bdev_ut_if = {
	.async_init = true,
	.init_complete = init_complete,
	.fini_start = fini_start,
	.get_ctx_size = get_ctx_size,
};

SPDK_BDEV_MODULE_REGISTER(bdev_ut, &bdev_ut_if)
@@ -834,10 +849,12 @@ count_queued_resets(void *io_target)
{
	struct spdk_io_channel *_ch = spdk_get_io_channel(io_target);
	struct ut_bdev_channel *ch = spdk_io_channel_get_ctx(_ch);
	struct ut_bdev_io *bio;
	struct spdk_bdev_io *io;
	uint32_t submitted_resets = 0;

	TAILQ_FOREACH(io, &ch->outstanding_io, module_link) {
	TAILQ_FOREACH(bio, &ch->outstanding_io, link) {
		io = spdk_bdev_io_from_ctx(bio);
		if (io->type == SPDK_BDEV_IO_TYPE_RESET) {
			submitted_resets++;
		}