From 89ee5a13bff9dd893420c1ceaf832efa761ade1c Mon Sep 17 00:00:00 2001 From: paul luse Date: Thu, 3 Mar 2022 23:44:08 +0000 Subject: [PATCH] module/bdev/compress: print a reasonable message on create error Specifically when a compress bdev already exists on the supplied base. Before this you'd get a bunch of nasty messages providing really no clue as to what was wrong. Signed-off-by: paul luse Change-Id: I8cce8902909659fba0e9613891c7ef8ebe4b06d0 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11806 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- module/bdev/compress/vbdev_compress.c | 8 ++++++++ module/bdev/compress/vbdev_compress_rpc.c | 6 +++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/module/bdev/compress/vbdev_compress.c b/module/bdev/compress/vbdev_compress.c index 207f396ba..2cf73445e 100644 --- a/module/bdev/compress/vbdev_compress.c +++ b/module/bdev/compress/vbdev_compress.c @@ -1525,11 +1525,19 @@ comp_bdev_ch_destroy_cb(void *io_device, void *ctx_buf) int create_compress_bdev(const char *bdev_name, const char *pm_path, uint32_t lb_size) { + struct vbdev_compress *comp_bdev = NULL; + if ((lb_size != 0) && (lb_size != LB_SIZE_4K) && (lb_size != LB_SIZE_512B)) { SPDK_ERRLOG("Logical block size must be 512 or 4096\n"); return -EINVAL; } + TAILQ_FOREACH(comp_bdev, &g_vbdev_comp, link) { + if (strcmp(bdev_name, comp_bdev->base_bdev->name) == 0) { + SPDK_ERRLOG("Bass bdev %s already being used for a compress bdev\n", bdev_name); + return -EBUSY; + } + } return vbdev_init_reduce(bdev_name, pm_path, lb_size); } diff --git a/module/bdev/compress/vbdev_compress_rpc.c b/module/bdev/compress/vbdev_compress_rpc.c index 99626270b..df2d1b525 100644 --- a/module/bdev/compress/vbdev_compress_rpc.c +++ b/module/bdev/compress/vbdev_compress_rpc.c @@ -186,7 +186,11 @@ rpc_bdev_compress_create(struct spdk_jsonrpc_request *request, rc = create_compress_bdev(req.base_bdev_name, req.pm_path, req.lb_size); if (rc != 0) { - spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); + if (rc == -EBUSY) { + spdk_jsonrpc_send_error_response(request, rc, "Base bdev already in use for compression."); + } else { + spdk_jsonrpc_send_error_response(request, rc, spdk_strerror(-rc)); + } goto cleanup; }