Commit dcb296a3 authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

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: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I05280371326ce9582e8452a7753a7990072f25b7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15506


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
parent 7aa2cc29
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -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;
		}
	}