nvme: fix json response on failed construct_nvme_bdev RPCs
spdk_jsonrpc_send_error_response() is documented as a shorthand for spdk_jsonrpc_begin_result() + end result, but we used to call it already after doing spdk_jsonrpc_begin_result(), which makes the response completely invalid. Fix it by deferring the initial spdk_jsonrpc_begin_result() until after we did our error checking. While here, remove the NULL checks from that function. After recent jsonrpc changes it can never return NULL. Change-Id: Ibb69803d4e6ce6516817673eec6626dcfc4f1abf Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/464174 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
1917d3b413
commit
4a713238b7
@ -217,16 +217,12 @@ spdk_rpc_construct_nvme_bdev_done(void *cb_ctx, int rc)
|
|||||||
struct spdk_json_write_ctx *w;
|
struct spdk_json_write_ctx *w;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
w = spdk_jsonrpc_begin_result(request);
|
|
||||||
if (w == NULL) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters");
|
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, "Invalid parameters");
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w = spdk_jsonrpc_begin_result(request);
|
||||||
spdk_json_write_array_begin(w);
|
spdk_json_write_array_begin(w);
|
||||||
for (i = 0; i < ctx->count; i++) {
|
for (i = 0; i < ctx->count; i++) {
|
||||||
spdk_json_write_string(w, ctx->names[i]);
|
spdk_json_write_string(w, ctx->names[i]);
|
||||||
|
Loading…
Reference in New Issue
Block a user