Commit a480b18e authored by paul luse's avatar paul luse Committed by Jim Harris
Browse files

bdev/compress: update internal delete function to delete by name



Needed in upcoming patches.

Signed-off-by: default avatarpaul luse <paul.e.luse@intel.com>
Change-Id: I0db6f2e4aa99e9c1e3b1080dc63e50291a6f5938
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465825


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBroadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent ffc17e6e
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -1461,17 +1461,21 @@ error_bdev_name:
}

void
bdev_compress_delete(struct spdk_bdev *bdev, spdk_delete_compress_complete cb_fn, void *cb_arg)
bdev_compress_delete(const char *name, spdk_delete_compress_complete cb_fn, void *cb_arg)
{
	struct vbdev_compress *comp_bdev = NULL;

	if (!bdev || bdev->module != &compress_if) {
	TAILQ_FOREACH(comp_bdev, &g_vbdev_comp, link) {
		if (strcmp(name, comp_bdev->comp_bdev.name) == 0) {
			break;
		}
	}

	if (comp_bdev == NULL) {
		cb_fn(cb_arg, -ENODEV);
		return;
	}

	comp_bdev = SPDK_CONTAINEROF(bdev, struct vbdev_compress, comp_bdev);

	/* Save these for after the vol is destroyed. */
	comp_bdev->delete_cb_fn = cb_fn;
	comp_bdev->delete_cb_arg = cb_arg;
+2 −2
Original line number Diff line number Diff line
@@ -61,11 +61,11 @@ int create_compress_bdev(const char *bdev_name, const char *pm_path);
/**
 * Delete compress bdev.
 *
 * \param bdev Pointer to compression bdev.
 * \param bdev_name Bdev on which compression bdev will be deleted.
 * \param cb_fn Function to call after deletion.
 * \param cb_arg Argument to pass to cb_fn.
 */
void bdev_compress_delete(struct spdk_bdev *bdev, spdk_delete_compress_complete cb_fn,
void bdev_compress_delete(const char *bdev_name, spdk_delete_compress_complete cb_fn,
			  void *cb_arg);

#endif /* SPDK_VBDEV_COMPRESS_H */
+2 −11
Original line number Diff line number Diff line
@@ -172,25 +172,16 @@ spdk_rpc_bdev_compress_delete(struct spdk_jsonrpc_request *request,
			      const struct spdk_json_val *params)
{
	struct rpc_delete_compress req = {NULL};
	struct spdk_bdev *bdev;

	if (spdk_json_decode_object(params, rpc_delete_compress_decoders,
				    SPDK_COUNTOF(rpc_delete_compress_decoders),
				    &req)) {
		spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
						 "spdk_json_decode_object failed");
		goto cleanup;
	}

	bdev = spdk_bdev_get_by_name(req.name);
	if (bdev == NULL) {
		spdk_jsonrpc_send_error_response(request, ENODEV, spdk_strerror(-ENODEV));
		goto cleanup;
	} else {
		bdev_compress_delete(req.name, _spdk_rpc_bdev_compress_delete_cb, request);
	}

	bdev_compress_delete(bdev, _spdk_rpc_bdev_compress_delete_cb, request);

cleanup:
	free_rpc_delete_compress(&req);
}
SPDK_RPC_REGISTER("bdev_compress_delete", spdk_rpc_bdev_compress_delete, SPDK_RPC_RUNTIME)