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:
parent
7aa2cc29c0
commit
dcb296a32b
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user