Commit e734bb9f authored by Jim Harris's avatar Jim Harris
Browse files

blob: change spdk_blob_close parameter to spdk_blob *



Using the ** paradigm is a bit problematic for asynchronous
routines that could fail.  Currently we were inconsistent in
that some error paths would zero the pointer while others
did not.  So make this just a plain pointer, which simplifies
the API and its implementation.

Signed-off-by: default avatarJim Harris <james.r.harris@intel.com>
Change-Id: I67147931c6e8350896a4505022a6a314655de3d3

Reviewed-on: https://review.gerrithub.io/391482


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 40af6d6f
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -56,6 +56,9 @@ spdk_bs_md_delete_blob => spdk_bs_delete_blob
spdk_bs_md_iter_first => spdk_bs_iter_first
spdk_bs_md_iter_next => spdk_bs_iter_next

The function signature of spdk_blob_close has changed.  It now takes a struct spdk_blob * argument
rather than struct spdk_blob **.

## v17.10: Logical Volumes

### New dependencies
+7 −7
Original line number Diff line number Diff line
@@ -286,7 +286,7 @@ sync_cb(void *arg1, int bserrno)
		return;
	}

	spdk_blob_close(&cli_context->blob, close_cb, cli_context);
	spdk_blob_close(cli_context->blob, close_cb, cli_context);
}

/*
@@ -602,7 +602,7 @@ read_dump_cb(void *arg1, int bserrno)
		/* done reading */
		printf("\nFile write complete (to %s).\n", cli_context->file);
		fclose(cli_context->fp);
		spdk_blob_close(&cli_context->blob, close_cb, cli_context);
		spdk_blob_close(cli_context->blob, close_cb, cli_context);
	}
}

@@ -650,7 +650,7 @@ write_imp_cb(void *arg1, int bserrno)
		/* done writing */
		printf("\nBlob import complete (from %s).\n", cli_context->file);
		fclose(cli_context->fp);
		spdk_blob_close(&cli_context->blob, close_cb, cli_context);
		spdk_blob_close(cli_context->blob, close_cb, cli_context);
	}
}

@@ -680,7 +680,7 @@ dump_imp_open_cb(void *cb_arg, struct spdk_blob *blob, int bserrno)
					    ALIGN_4K, NULL);
	if (cli_context->buff == NULL) {
		printf("Error in allocating memory\n");
		spdk_blob_close(&cli_context->blob, close_cb, cli_context);
		spdk_blob_close(cli_context->blob, close_cb, cli_context);
		return;
	}
	printf("Working");
@@ -690,7 +690,7 @@ dump_imp_open_cb(void *cb_arg, struct spdk_blob *blob, int bserrno)
		cli_context->fp = fopen(cli_context->file, "w");
		if (cli_context->fp == NULL) {
			printf("Error in opening file\n");
			spdk_blob_close(&cli_context->blob, close_cb, cli_context);
			spdk_blob_close(cli_context->blob, close_cb, cli_context);
			return;
		}

@@ -702,7 +702,7 @@ dump_imp_open_cb(void *cb_arg, struct spdk_blob *blob, int bserrno)
		cli_context->fp = fopen(cli_context->file, "r");
		if (cli_context->fp == NULL) {
			printf("Error in opening file\n");
			spdk_blob_close(&cli_context->blob, close_cb, cli_context);
			spdk_blob_close(cli_context->blob, close_cb, cli_context);
			return;
		}

@@ -750,7 +750,7 @@ write_cb(void *arg1, int bserrno)
	} else {
		/* done writing */
		printf("\nBlob fill complete (with 0x%x).\n", cli_context->fill_value);
		spdk_blob_close(&cli_context->blob, close_cb, cli_context);
		spdk_blob_close(cli_context->blob, close_cb, cli_context);
	}
}

+1 −1
Original line number Diff line number Diff line
@@ -168,7 +168,7 @@ read_complete(void *arg1, int bserrno)
	}

	/* Now let's close it and delete the blob in the callback. */
	spdk_blob_close(&hello_context->blob, delete_blob, hello_context);
	spdk_blob_close(hello_context->blob, delete_blob, hello_context);
}

/*
+1 −1
Original line number Diff line number Diff line
@@ -232,7 +232,7 @@ int spdk_blob_resize(struct spdk_blob *blob, size_t sz);
void spdk_blob_sync_md(struct spdk_blob *blob, spdk_blob_op_complete cb_fn, void *cb_arg);

/* Close a blob. This will automatically sync. */
void spdk_blob_close(struct spdk_blob **blob, spdk_blob_op_complete cb_fn, void *cb_arg);
void spdk_blob_close(struct spdk_blob *blob, spdk_blob_op_complete cb_fn, void *cb_arg);

struct spdk_io_channel *spdk_bs_alloc_io_channel(struct spdk_blob_store *bs);

+1 −1
Original line number Diff line number Diff line
@@ -840,7 +840,7 @@ _vbdev_lvs_examine_finish(void *cb_arg, struct spdk_lvol *lvol, int lvolerrno)
		SPDK_ERRLOG("Cannot create bdev for lvol %s\n", lvol->old_name);
		TAILQ_REMOVE(&lvs->lvols, lvol, link);
		lvs->lvol_count--;
		spdk_blob_close(&lvol->blob, _vbdev_lvol_close_cb, lvs);
		spdk_blob_close(lvol->blob, _vbdev_lvol_close_cb, lvs);
		SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Opening lvol %s failed\n", lvol->old_name);
		free(lvol->old_name);
		free(lvol);
Loading