bdevperf: create bdevperf_test() to only perform tests

Separated out bdevperf_test() from bdevperf_run(),
so that in future RPC can directly call running the tests.

All global setup done at start of the application remains
in bdevperf_run().

This is series for adding RPC to bdevperf app.

Change-Id: I85950d4941d4325486a7dcf89f9766dcdd302657
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/460443
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Tomasz Zawadzki 2019-07-03 07:53:17 -04:00 committed by Darek Stojaczyk
parent 162df57723
commit 8c433333af

View File

@ -1110,32 +1110,17 @@ verify_test_params(struct spdk_app_opts *opts)
return 0; return 0;
} }
static void static int
bdevperf_run(void *arg1) bdevperf_test(void)
{ {
uint32_t i; uint32_t i;
struct io_target *target; struct io_target *target;
struct spdk_event *event; struct spdk_event *event;
int rc; int rc;
rc = blockdev_heads_init();
if (rc) {
spdk_app_stop(1);
return;
}
bdevperf_construct_targets();
if (g_target_count == 0) {
fprintf(stderr, "No valid bdevs found.\n");
spdk_app_stop(1);
return;
}
rc = bdevperf_construct_targets_tasks(); rc = bdevperf_construct_targets_tasks();
if (rc) { if (rc) {
spdk_app_stop(1); return rc;
return;
} }
printf("Running I/O for %" PRIu64 " seconds...\n", g_time_in_usec / 1000000); printf("Running I/O for %" PRIu64 " seconds...\n", g_time_in_usec / 1000000);
@ -1148,17 +1133,45 @@ bdevperf_run(void *arg1)
g_show_performance_period_in_usec); g_show_performance_period_in_usec);
} }
g_master_core = spdk_env_get_current_core();
/* Send events to start all I/O */ /* Send events to start all I/O */
for (i = 0; i < spdk_env_get_core_count(); i++) { for (i = 0; i < spdk_env_get_core_count(); i++) {
target = g_head[i]; target = g_head[i];
if (target == NULL) { if (target == NULL) {
break; return -1;
} }
event = spdk_event_allocate(target->lcore, bdevperf_submit_on_core, event = spdk_event_allocate(target->lcore, bdevperf_submit_on_core,
target, NULL); target, NULL);
spdk_event_call(event); spdk_event_call(event);
} }
return 0;
}
static void
bdevperf_run(void *arg1)
{
int rc;
rc = blockdev_heads_init();
if (rc) {
spdk_app_stop(1);
return;
}
g_master_core = spdk_env_get_current_core();
bdevperf_construct_targets();
if (g_target_count == 0) {
fprintf(stderr, "No valid bdevs found.\n");
spdk_app_stop(1);
return;
}
rc = bdevperf_test();
if (rc) {
spdk_app_stop(1);
return;
}
} }
static void static void