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

Needed in upcoming patches.

Signed-off-by: paul luse <paul.e.luse@intel.com>
Change-Id: I0db6f2e4aa99e9c1e3b1080dc63e50291a6f5938
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465825
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
paul luse 2019-08-20 17:39:03 -04:00 committed by Jim Harris
parent ffc17e6e94
commit a480b18eda
3 changed files with 12 additions and 17 deletions

View File

@ -1461,17 +1461,21 @@ error_bdev_name:
} }
void 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; 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); cb_fn(cb_arg, -ENODEV);
return; return;
} }
comp_bdev = SPDK_CONTAINEROF(bdev, struct vbdev_compress, comp_bdev);
/* Save these for after the vol is destroyed. */ /* Save these for after the vol is destroyed. */
comp_bdev->delete_cb_fn = cb_fn; comp_bdev->delete_cb_fn = cb_fn;
comp_bdev->delete_cb_arg = cb_arg; comp_bdev->delete_cb_arg = cb_arg;

View File

@ -61,11 +61,11 @@ int create_compress_bdev(const char *bdev_name, const char *pm_path);
/** /**
* Delete compress bdev. * 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_fn Function to call after deletion.
* \param cb_arg Argument to pass to cb_fn. * \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); void *cb_arg);
#endif /* SPDK_VBDEV_COMPRESS_H */ #endif /* SPDK_VBDEV_COMPRESS_H */

View File

@ -172,25 +172,16 @@ spdk_rpc_bdev_compress_delete(struct spdk_jsonrpc_request *request,
const struct spdk_json_val *params) const struct spdk_json_val *params)
{ {
struct rpc_delete_compress req = {NULL}; struct rpc_delete_compress req = {NULL};
struct spdk_bdev *bdev;
if (spdk_json_decode_object(params, rpc_delete_compress_decoders, if (spdk_json_decode_object(params, rpc_delete_compress_decoders,
SPDK_COUNTOF(rpc_delete_compress_decoders), SPDK_COUNTOF(rpc_delete_compress_decoders),
&req)) { &req)) {
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR, spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INTERNAL_ERROR,
"spdk_json_decode_object failed"); "spdk_json_decode_object failed");
goto cleanup; } else {
bdev_compress_delete(req.name, _spdk_rpc_bdev_compress_delete_cb, request);
} }
bdev = spdk_bdev_get_by_name(req.name);
if (bdev == NULL) {
spdk_jsonrpc_send_error_response(request, ENODEV, spdk_strerror(-ENODEV));
goto cleanup;
}
bdev_compress_delete(bdev, _spdk_rpc_bdev_compress_delete_cb, request);
cleanup:
free_rpc_delete_compress(&req); free_rpc_delete_compress(&req);
} }
SPDK_RPC_REGISTER("bdev_compress_delete", spdk_rpc_bdev_compress_delete, SPDK_RPC_RUNTIME) SPDK_RPC_REGISTER("bdev_compress_delete", spdk_rpc_bdev_compress_delete, SPDK_RPC_RUNTIME)