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 static void
bdevperf_test_done(void *ctx) bdevperf_test_done(void *ctx)
{ {
@ -405,10 +414,7 @@ bdevperf_test_done(void *ctx)
free(task); free(task);
} }
spdk_bit_array_free(&job->outstanding); bdevperf_job_free(job);
spdk_zipf_free(&job->zipf);
free(job->name);
free(job);
} }
printf("\r ==================================================================================\n"); 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)); job->name = strdup(spdk_bdev_get_name(bdev));
if (!job->name) { if (!job->name) {
fprintf(stderr, "Unable to allocate memory for job name.\n"); fprintf(stderr, "Unable to allocate memory for job name.\n");
free(job); bdevperf_job_free(job);
return -ENOMEM; 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) { 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", 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); job->io_size, spdk_bdev_get_name(bdev), data_block_size);
free(job->name); bdevperf_job_free(job);
free(job);
return -ENOTSUP; return -ENOTSUP;
} }
if (job->unmap && !spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) { 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)); printf("Skipping %s because it does not support unmap\n", spdk_bdev_get_name(bdev));
free(job->name); bdevperf_job_free(job);
free(job);
return -ENOTSUP; return -ENOTSUP;
} }
@ -1380,8 +1384,7 @@ bdevperf_construct_job(struct spdk_bdev *bdev, struct job_config *config,
if (job->outstanding == NULL) { if (job->outstanding == NULL) {
SPDK_ERRLOG("Could not create outstanding array bitmap for bdev %s\n", SPDK_ERRLOG("Could not create outstanding array bitmap for bdev %s\n",
spdk_bdev_get_name(bdev)); spdk_bdev_get_name(bdev));
free(job->name); bdevperf_job_free(job);
free(job);
return -ENOMEM; return -ENOMEM;
} }
} }