xref: /spdk/module/bdev/rbd/bdev_rbd.h (revision 307b8c112ffd90a26d53dd15fad67bd9038ef526)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (c) 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