bdevperf: add bdevperf_job_free() function

Introduce a helper function to properly free everything
associated with a job structure, and then use that
in all of the various error paths to reduce the
number of changes required if/when new strings are
added to the job structure.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I05280371326ce9582e8452a7753a7990072f25b7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15506
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: GangCao <gang.cao@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
This commit is contained in:
Jim Harris 2022-11-17 04:00:55 +00:00 committed by Tomasz Zawadzki
parent 7aa2cc29c0
commit dcb296a32b

View File

@ -361,6 +361,15 @@ free_job_config(void)
}
}
static void
bdevperf_job_free(struct bdevperf_job *job)
{
spdk_bit_array_free(&job->outstanding);
spdk_zipf_free(&job->zipf);
free(job->name);
free(job);
}
static void
bdevperf_test_done(void *ctx)
{
@ -405,10 +414,7 @@ bdevperf_test_done(void *ctx)
free(task);
}
spdk_bit_array_free(&job->outstanding);
spdk_zipf_free(&job->zipf);
free(job->name);
free(job);
bdevperf_job_free(job);
}
printf("\r ==================================================================================\n");
@ -1322,7 +1328,7 @@ bdevperf_construct_job(struct spdk_bdev *bdev, struct job_config *config,
job->name = strdup(spdk_bdev_get_name(bdev));
if (!job->name) {
fprintf(stderr, "Unable to allocate memory for job name.\n");
free(job);
bdevperf_job_free(job);
return -ENOMEM;
}
@ -1340,15 +1346,13 @@ bdevperf_construct_job(struct spdk_bdev *bdev, struct job_config *config,
if ((job->io_size % data_block_size) != 0) {
SPDK_ERRLOG("IO size (%d) is not multiples of data block size of bdev %s (%"PRIu32")\n",
job->io_size, spdk_bdev_get_name(bdev), data_block_size);
free(job->name);
free(job);
bdevperf_job_free(job);
return -ENOTSUP;
}
if (job->unmap && !spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) {
printf("Skipping %s because it does not support unmap\n", spdk_bdev_get_name(bdev));
free(job->name);
free(job);
bdevperf_job_free(job);
return -ENOTSUP;
}
@ -1380,8 +1384,7 @@ bdevperf_construct_job(struct spdk_bdev *bdev, struct job_config *config,
if (job->outstanding == NULL) {
SPDK_ERRLOG("Could not create outstanding array bitmap for bdev %s\n",
spdk_bdev_get_name(bdev));
free(job->name);
free(job);
bdevperf_job_free(job);
return -ENOMEM;
}
}