1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright (C) 2016 Intel Corporation. 3 * All rights reserved. 4 */ 5 6 #ifndef SPDK_BDEV_RBD_H 7 #define SPDK_BDEV_RBD_H 8 9 #include "spdk/stdinc.h" 10 11 #include "spdk/bdev.h" 12 #include "spdk/rpc.h" 13 14 struct cluster_register_info { 15 char *name; 16 char *user_id; 17 char **config_param; 18 char *config_file; 19 char *key_file; 20 }; 21 22 void bdev_rbd_free_config(char **config); 23 char **bdev_rbd_dup_config(const char *const *config); 24 25 typedef void (*spdk_delete_rbd_complete)(void *cb_arg, int bdeverrno); 26 27 int bdev_rbd_create(struct spdk_bdev **bdev, const char *name, const char *user_id, 28 const char *pool_name, 29 const char *const *config, 30 const char *rbd_name, uint32_t block_size, const char *cluster_name, const struct spdk_uuid *uuid); 31 /** 32 * Delete rbd bdev. 33 * 34 * \param name Name of rbd bdev. 35 * \param cb_fn Function to call after deletion. 36 * \param cb_arg Argument to pass to cb_fn. 37 */ 38 void bdev_rbd_delete(const char *name, spdk_delete_rbd_complete cb_fn, 39 void *cb_arg); 40 41 /** 42 * Resize rbd bdev. 43 * 44 * \param bdev Name of rbd bdev. 45 * \param new_size_in_mb The new size in MiB for this bdev. 46 */ 47 int bdev_rbd_resize(const char *name, const uint64_t new_size_in_mb); 48 49 /** 50 * Create a Rados cluster. 51 * 52 * \param info the info to register the Rados cluster object 53 */ 54 int bdev_rbd_register_cluster(struct cluster_register_info *info); 55 56 /** 57 * Delete a registered cluster. 58 * 59 * \param name the name of the cluster to be deleted. 60 */ 61 int bdev_rbd_unregister_cluster(const char *name); 62 63 /** 64 * Show the cluster info of a given name. If given name is empty, 65 * the info of every registered cluster name will be showed. 66 * 67 * \param request the json request. 68 * \param name the name of the cluster. 69 */ 70 int bdev_rbd_get_clusters_info(struct spdk_jsonrpc_request *request, const char *name); 71 72 #endif /* SPDK_BDEV_RBD_H */ 73