summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd.h
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd.h')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index 26e9b0c0d..e804c9ce8 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -154,6 +154,7 @@ typedef struct {
dict_t *opts;
synclock_t big_lock;
gf_boolean_t restart_done;
+ struct list_head snap_cg;
} glusterd_conf_t;
@@ -263,11 +264,13 @@ struct glusterd_replace_brick_ {
typedef struct glusterd_replace_brick_ glusterd_replace_brick_t;
struct glusterd_volinfo_ {
+ gf_lock_t lock;
char volname[GLUSTERD_MAX_VOLUME_NAME];
int type;
int brick_count;
struct list_head vol_list;
struct list_head bricks;
+ struct list_head snaps;
glusterd_volume_status status;
int sub_count; /* backward compatibility */
int stripe_count;
@@ -310,6 +313,44 @@ struct glusterd_volinfo_ {
int client_op_version;
};
+typedef enum gd_snap_status_ {
+ GD_SNAP_STATUS_NONE,
+ GD_SNAP_STATUS_INIT,
+ GD_SNAP_STATUS_IN_USE,
+ GD_SNAP_STATUS_DECOMMISSION,
+ GD_SNAP_STATUS_RESTORED,
+} gd_snap_status_t;
+
+
+struct glusterd_snap_ {
+ gf_lock_t lock;
+ glusterd_volinfo_t *snap_volume;
+ struct list_head snap_list;
+ char snap_name[256];
+ uuid_t snap_id;
+ uuid_t cg_id;
+ char *description;
+ time_t time_stamp;
+ gd_snap_status_t snap_status;
+};
+
+typedef struct glusterd_snap_ glusterd_snap_t;
+
+struct glusterd_snap_cg_ {
+ gf_lock_t lock;
+ uuid_t cg_id;
+ char cg_name[256];
+ char *description;
+ gd_snap_status_t cg_status;
+ int64_t volume_count;
+ struct list_head cg_list;
+ glusterd_volinfo_t volumes[0];
+};
+
+typedef struct glusterd_snap_cg_ glusterd_snap_cg_t;
+
+
+
typedef enum gd_node_type_ {
GD_NODE_NONE,
GD_NODE_BRICK,
@@ -760,4 +801,41 @@ int32_t glusterd_op_begin_synctask (rpcsvc_request_t *req, glusterd_op_t op,
void *dict);
int32_t
glusterd_defrag_event_notify_handle (dict_t *dict);
+
+/* snapshot */
+glusterd_snap_t*
+glusterd_new_snap_object();
+
+glusterd_snap_cg_t*
+glusterd_new_snap_cg_object(int64_t volume_count);
+
+int32_t
+glusterd_add_snap (glusterd_volinfo_t *volinfo, glusterd_snap_t *snap);
+
+glusterd_snap_t*
+glusterd_remove_snap_by_id (glusterd_volinfo_t *volinfo, uuid_t snap_id);
+
+glusterd_snap_t*
+glusterd_remove_snap_by_name (glusterd_volinfo_t *volinfo, char *snap_name);
+
+glusterd_snap_t*
+glusterd_find_snap_by_name (glusterd_volinfo_t *volinfo, char *snap_name);
+
+glusterd_snap_t*
+glusterd_find_snap_by_id (glusterd_volinfo_t *volinfo, uuid_t snap_id);
+
+int32_t
+glusterd_add_snap_cg (glusterd_conf_t *conf, glusterd_snap_cg_t *cg);
+
+glusterd_snap_cg_t*
+glusterd_remove_snap_cg_by_name (glusterd_conf_t *conf, char *cg_name);
+
+glusterd_snap_cg_t*
+glusterd_remove_snap_cg_by_id (glusterd_conf_t *conf, uuid_t cg_id);
+
+glusterd_snap_cg_t*
+glusterd_find_snap_cg_by_id (glusterd_conf_t *conf, uuid_t cg_id);
+
+glusterd_snap_cg_t*
+glusterd_find_snap_cg_by_name (glusterd_conf_t *conf, char *cg_name);
#endif