Commit 59d79ec5 authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Tomasz Zawadzki
Browse files

ut/raid: factor out raid io channel create/destroy



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


Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
parent 030dab89
Loading
Loading
Loading
Loading
+37 −0
Original line number Diff line number Diff line
@@ -136,3 +136,40 @@ raid_test_delete_raid_bdev(struct raid_bdev *raid_bdev)
	free(raid_bdev->base_bdev_info);
	free(raid_bdev);
}

static struct raid_bdev_io_channel *
raid_test_create_io_channel(struct raid_bdev *raid_bdev)
{
	struct raid_bdev_io_channel *raid_ch;
	uint8_t i;

	raid_ch = calloc(1, sizeof(*raid_ch));
	SPDK_CU_ASSERT_FATAL(raid_ch != NULL);

	raid_ch->base_channel = calloc(raid_bdev->num_base_bdevs, sizeof(struct spdk_io_channel *));
	SPDK_CU_ASSERT_FATAL(raid_ch->base_channel != NULL);

	for (i = 0; i < raid_bdev->num_base_bdevs; i++) {
		raid_ch->base_channel[i] = (void *)1;
	}

	if (raid_bdev->module->get_io_channel) {
		raid_ch->module_channel = raid_bdev->module->get_io_channel(raid_bdev);
		SPDK_CU_ASSERT_FATAL(raid_ch->module_channel != NULL);
	}

	return raid_ch;
}

static void
raid_test_destroy_io_channel(struct raid_bdev_io_channel *raid_ch)
{
	free(raid_ch->base_channel);

	if (raid_ch->module_channel) {
		spdk_put_io_channel(raid_ch->module_channel);
		poll_threads();
	}

	free(raid_ch);
}
+15 −22
Original line number Diff line number Diff line
@@ -6,10 +6,9 @@
#include "spdk/stdinc.h"
#include "spdk_internal/cunit.h"
#include "spdk/env.h"
#include "thread/thread_internal.h"
#include "spdk_internal/mock.h"

#include "bdev/raid/bdev_raid.h"
#include "common/lib/ut_multithread.c"

#include "bdev/raid/concat.c"
#include "../common.c"

@@ -317,15 +316,10 @@ submit_and_verify_rw(enum CONCAT_IO_TYPE io_type, struct raid_params *params)
		bdev_io = calloc(1, sizeof(struct spdk_bdev_io) + sizeof(struct raid_bdev_io));
		SPDK_CU_ASSERT_FATAL(bdev_io != NULL);
		raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
		raid_ch = calloc(1, sizeof(struct raid_bdev_io_channel));
		SPDK_CU_ASSERT_FATAL(raid_ch != NULL);
		raid_ch->base_channel = calloc(params->num_base_bdevs,
					       sizeof(struct spdk_io_channel));
		SPDK_CU_ASSERT_FATAL(raid_ch->base_channel != NULL);
		raid_ch = raid_test_create_io_channel(raid_bdev);
		raid_io->raid_ch = raid_ch;
		raid_io->raid_bdev = raid_bdev;
		ch = calloc(1, sizeof(struct spdk_io_channel));
		SPDK_CU_ASSERT_FATAL(ch != NULL);
		ch = (void *)1;

		switch (io_type) {
		case CONCAT_WRITEV:
@@ -358,9 +352,7 @@ submit_and_verify_rw(enum CONCAT_IO_TYPE io_type, struct raid_params *params)
		CU_ASSERT(g_req_records.count == 1);
		CU_ASSERT(g_req_records.md == (void *)0xAEDFEBAC);
		bdev_io_cleanup(bdev_io);
		free(ch);
		free(raid_ch->base_channel);
		free(raid_ch);
		raid_test_destroy_io_channel(raid_ch);
		delete_concat(raid_bdev);
		lba += params->base_bdev_blockcnt;
	}
@@ -412,14 +404,11 @@ submit_and_verify_null_payload(enum CONCAT_IO_TYPE io_type, struct raid_params *
	bdev_io = calloc(1, sizeof(struct spdk_bdev_io) + sizeof(struct raid_bdev_io));
	SPDK_CU_ASSERT_FATAL(bdev_io != NULL);
	raid_io = (struct raid_bdev_io *)bdev_io->driver_ctx;
	raid_ch = calloc(1, sizeof(struct raid_bdev_io_channel));
	SPDK_CU_ASSERT_FATAL(raid_ch != NULL);
	raid_ch->base_channel = calloc(params->num_base_bdevs,
				       sizeof(struct spdk_io_channel));
	SPDK_CU_ASSERT_FATAL(raid_ch->base_channel != NULL);
	raid_ch = raid_test_create_io_channel(raid_bdev);
	raid_io->raid_ch = raid_ch;
	raid_io->raid_bdev = raid_bdev;
	ch = calloc(1, sizeof(struct spdk_io_channel));
	ch = (void *)1;

	SPDK_CU_ASSERT_FATAL(ch != NULL);

	switch (io_type) {
@@ -459,9 +448,7 @@ submit_and_verify_null_payload(enum CONCAT_IO_TYPE io_type, struct raid_params *
		CU_ASSERT(g_req_records.io_type[1] == io_type);
	}
	bdev_io_cleanup(bdev_io);
	free(ch);
	free(raid_ch->base_channel);
	free(raid_ch);
	raid_test_destroy_io_channel(raid_ch);
	delete_concat(raid_bdev);
}

@@ -494,7 +481,13 @@ main(int argc, char **argv)
	CU_ADD_TEST(suite, test_concat_rw);
	CU_ADD_TEST(suite, test_concat_null_payload);

	allocate_threads(1);
	set_thread(0);

	num_failures = spdk_ut_run_tests(argc, argv, NULL);
	CU_cleanup_registry();

	free_threads();

	return num_failures;
}
+7 −21
Original line number Diff line number Diff line
@@ -162,31 +162,14 @@ run_for_each_raid1_config(void (*test_fn)(struct raid_bdev *raid_bdev,

	RAID_PARAMS_FOR_EACH(params) {
		struct raid1_info *r1_info;
		struct raid_bdev_io_channel raid_ch = { 0 };
		int i;
		struct raid_bdev_io_channel *raid_ch;

		r1_info = create_raid1(params);
		raid_ch = raid_test_create_io_channel(r1_info->raid_bdev);

		raid_ch.base_channel = calloc(params->num_base_bdevs, sizeof(struct spdk_io_channel *));
		SPDK_CU_ASSERT_FATAL(raid_ch.base_channel != NULL);
		for (i = 0; i < params->num_base_bdevs; i++) {
			raid_ch.base_channel[i] = calloc(1, sizeof(*raid_ch.base_channel));
			SPDK_CU_ASSERT_FATAL(raid_ch.base_channel[i] != NULL);
		}

		raid_ch.module_channel = raid1_get_io_channel(r1_info->raid_bdev);
		SPDK_CU_ASSERT_FATAL(raid_ch.module_channel);

		test_fn(r1_info->raid_bdev, &raid_ch);

		spdk_put_io_channel(raid_ch.module_channel);
		poll_threads();

		for (i = 0; i < params->num_base_bdevs; i++) {
			free(raid_ch.base_channel[i]);
		}
		free(raid_ch.base_channel);
		test_fn(r1_info->raid_bdev, raid_ch);

		raid_test_destroy_io_channel(raid_ch);
		delete_raid1(r1_info);
	}
}
@@ -270,5 +253,8 @@ main(int argc, char **argv)

	num_failures = spdk_ut_run_tests(argc, argv, NULL);
	CU_cleanup_registry();

	free_threads();

	return num_failures;
}
+6 −19
Original line number Diff line number Diff line
@@ -907,31 +907,18 @@ run_for_each_raid5f_config(void (*test_fn)(struct raid_bdev *raid_bdev,

	RAID_PARAMS_FOR_EACH(params) {
		struct raid5f_info *r5f_info;
		struct raid_bdev_io_channel raid_ch = { 0 };
		int i;
		struct raid_bdev_io_channel *raid_ch;

		r5f_info = create_raid5f(params);
		raid_ch = raid_test_create_io_channel(r5f_info->raid_bdev);

		raid_ch.base_channel = calloc(params->num_base_bdevs, sizeof(struct spdk_io_channel *));
		SPDK_CU_ASSERT_FATAL(raid_ch.base_channel != NULL);

		for (i = 0; i < params->num_base_bdevs; i++) {
			if (g_test_degraded && i == 0) {
				continue;
			}
			raid_ch.base_channel[i] = (void *)1;
		if (g_test_degraded) {
			raid_ch->base_channel[0] = NULL;
		}

		raid_ch.module_channel = raid5f_get_io_channel(r5f_info->raid_bdev);
		SPDK_CU_ASSERT_FATAL(raid_ch.module_channel);

		test_fn(r5f_info->raid_bdev, &raid_ch);

		spdk_put_io_channel(raid_ch.module_channel);
		poll_threads();

		free(raid_ch.base_channel);
		test_fn(r5f_info->raid_bdev, raid_ch);

		raid_test_destroy_io_channel(raid_ch);
		delete_raid5f(r5f_info);
	}
}