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