xref: /spdk/module/bdev/rbd/bdev_rbd.h (revision 8afdeef3becfe9409cc9e7372bd0bc10e8b7d46d)
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 	char *core_mask;
21 };
22 
23 void bdev_rbd_free_config(char **config);
24 char **bdev_rbd_dup_config(const char *const *config);
25 
26 typedef void (*spdk_delete_rbd_complete)(void *cb_arg, int bdeverrno);
27 
28 int bdev_rbd_create(struct spdk_bdev **bdev, const char *name, const char *user_id,
29 		    const char *pool_name,
30 		    const char *const *config,
31 		    const char *rbd_name, uint32_t block_size, const char *cluster_name, const struct spdk_uuid *uuid);
32 /**
33  * Delete rbd bdev.
34  *
35  * \param name Name of rbd bdev.
36  * \param cb_fn Function to call after deletion.
37  * \param cb_arg Argument to pass to cb_fn.
38  */
39 void bdev_rbd_delete(const char *name, spdk_delete_rbd_complete cb_fn,
40 		     void *cb_arg);
41 
42 /**
43  * Resize rbd bdev.
44  *
45  * \param bdev Name of rbd bdev.
46  * \param new_size_in_mb The new size in MiB for this bdev.
47  */
48 int bdev_rbd_resize(const char *name, const uint64_t new_size_in_mb);
49 
50 /**
51  * Create a Rados cluster.
52  *
53  * \param info the info to register the Rados cluster object
54  */
55 int bdev_rbd_register_cluster(struct cluster_register_info *info);
56 
57 /**
58  * Delete a registered cluster.
59  *
60  * \param name the name of the cluster to be deleted.
61  */
62 int bdev_rbd_unregister_cluster(const char *name);
63 
64 /**
65  * Show the cluster info of a given name. If given name is empty,
66  * the info of every registered cluster name will be showed.
67  *
68  * \param request the json request.
69  * \param name the name of the cluster.
70  */
71 int bdev_rbd_get_clusters_info(struct spdk_jsonrpc_request *request, const char *name);
72 
73 #endif /* SPDK_BDEV_RBD_H */
74