From c77bc554d2ad0e23cb1c2418f70a6027f1775b37 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 27 Jan 2023 10:52:17 +0900 Subject: [PATCH] module/bdev: Use error_response() rather than bool_response(false) for JSON RPCs For JSON RPC, boolean response with false value may not be regarded as error. Previously many cases were replaced to use spdk_jsonrpc_send_error_response() explicitly. However, this pattern did not become established and new bdev modules used spdk_jsonrpc_send_bool_response() with false. Once again, replace remaining cases in this patch. Signed-off-by: Shuhei Matsumoto Change-Id: Ie8858bc8ff7c36bc3a829977044a91d459db76f2 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16555 Reviewed-by: Aleksey Marchuk Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- module/bdev/compress/vbdev_compress_rpc.c | 7 ++++++- module/bdev/daos/bdev_daos_rpc.c | 7 ++++++- module/bdev/ftl/bdev_ftl_rpc.c | 17 +++++++++++++---- module/bdev/nvme/bdev_nvme_rpc.c | 7 ++++++- module/bdev/passthru/vbdev_passthru_rpc.c | 1 + module/bdev/xnvme/bdev_xnvme_rpc.c | 7 ++++++- module/bdev/zone_block/vbdev_zone_block_rpc.c | 7 ++++++- .../external_code/passthru/vbdev_passthru_rpc.c | 8 +++++++- 8 files changed, 51 insertions(+), 10 deletions(-) diff --git a/module/bdev/compress/vbdev_compress_rpc.c b/module/bdev/compress/vbdev_compress_rpc.c index 2c12fb97e..2a76fe55d 100644 --- a/module/bdev/compress/vbdev_compress_rpc.c +++ b/module/bdev/compress/vbdev_compress_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2018 Intel Corporation. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -153,7 +154,11 @@ _rpc_bdev_compress_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + } } static void diff --git a/module/bdev/daos/bdev_daos_rpc.c b/module/bdev/daos/bdev_daos_rpc.c index 50b639dd1..a369230e1 100644 --- a/module/bdev/daos/bdev_daos_rpc.c +++ b/module/bdev/daos/bdev_daos_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (c) croit GmbH. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -108,7 +109,11 @@ rpc_bdev_daos_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + } } static void diff --git a/module/bdev/ftl/bdev_ftl_rpc.c b/module/bdev/ftl/bdev_ftl_rpc.c index b9db0df00..83e55d467 100644 --- a/module/bdev/ftl/bdev_ftl_rpc.c +++ b/module/bdev/ftl/bdev_ftl_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2020 Intel Corporation. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -142,7 +143,11 @@ rpc_bdev_ftl_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + } } static void @@ -190,7 +195,11 @@ rpc_bdev_ftl_unmap_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + } } static void @@ -300,14 +309,14 @@ rpc_bdev_ftl_get_stats(struct spdk_jsonrpc_request *request, stats = calloc(1, sizeof(struct ftl_stats)); if (!stats) { - spdk_jsonrpc_send_bool_response(request, false); + spdk_jsonrpc_send_error_response(request, -ENOMEM, spdk_strerror(ENOMEM)); goto invalid; } rc = bdev_ftl_get_stats(attrs.name, _rpc_bdev_ftl_get_stats, request, stats); if (rc) { free(stats); - spdk_jsonrpc_send_bool_response(request, false); + spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); goto invalid; } diff --git a/module/bdev/nvme/bdev_nvme_rpc.c b/module/bdev/nvme/bdev_nvme_rpc.c index a5908f7b6..3d9108aa7 100644 --- a/module/bdev/nvme/bdev_nvme_rpc.c +++ b/module/bdev/nvme/bdev_nvme_rpc.c @@ -1222,7 +1222,12 @@ _rpc_bdev_nvme_reset_controller_cb(void *_ctx) { struct rpc_bdev_nvme_reset_controller_ctx *ctx = _ctx; - spdk_jsonrpc_send_bool_response(ctx->request, ctx->success); + if (ctx->success) { + spdk_jsonrpc_send_bool_response(ctx->request, true); + } else { + spdk_jsonrpc_send_error_response(ctx->request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, + "Controller reset failed"); + } free(ctx); } diff --git a/module/bdev/passthru/vbdev_passthru_rpc.c b/module/bdev/passthru/vbdev_passthru_rpc.c index 6fad37e8b..82560199c 100644 --- a/module/bdev/passthru/vbdev_passthru_rpc.c +++ b/module/bdev/passthru/vbdev_passthru_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2018 Intel Corporation. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ diff --git a/module/bdev/xnvme/bdev_xnvme_rpc.c b/module/bdev/xnvme/bdev_xnvme_rpc.c index f061a9b8d..5144ca5df 100644 --- a/module/bdev/xnvme/bdev_xnvme_rpc.c +++ b/module/bdev/xnvme/bdev_xnvme_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (c) Samsung Electronics Co., Ltd. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -95,7 +96,11 @@ _rpc_bdev_xnvme_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + } } static void diff --git a/module/bdev/zone_block/vbdev_zone_block_rpc.c b/module/bdev/zone_block/vbdev_zone_block_rpc.c index 59b5ca023..7b991efa5 100644 --- a/module/bdev/zone_block/vbdev_zone_block_rpc.c +++ b/module/bdev/zone_block/vbdev_zone_block_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2019 Intel Corporation. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -89,7 +90,11 @@ _rpc_delete_zone_block_cb(void *cb_ctx, int rc) { struct spdk_jsonrpc_request *request = cb_ctx; - spdk_jsonrpc_send_bool_response(request, rc == 0); + if (rc == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); + } } static void diff --git a/test/external_code/passthru/vbdev_passthru_rpc.c b/test/external_code/passthru/vbdev_passthru_rpc.c index 07074401b..5f169c003 100644 --- a/test/external_code/passthru/vbdev_passthru_rpc.c +++ b/test/external_code/passthru/vbdev_passthru_rpc.c @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright (C) 2020 Intel Corporation. + * Copyright (c) 2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved. * All rights reserved. */ @@ -83,7 +84,12 @@ rpc_bdev_passthru_delete_cb(void *cb_arg, int bdeverrno) { struct spdk_jsonrpc_request *request = cb_arg; - spdk_jsonrpc_send_bool_response(request, bdeverrno == 0); + if (bdeverrno == 0) { + spdk_jsonrpc_send_bool_response(request, true); + } else { + spdk_jsonrpc_send_error_response(request, bdeverrno, spdk_strerror(-bdeverrno)); + + } } static void