X-Git-Url: http://git.tuebingen.mpg.de/?p=dss.git;a=blobdiff_plain;f=snap.h;h=27045a3ca5542ad1c3a72b7b3ed667ab5b583fd2;hp=5c2f20b2885e19919afabff1369908fdb6c5bf18;hb=HEAD;hpb=9b972ea107540e54633b0e94dec210a6e1649f8d diff --git a/snap.h b/snap.h index 5c2f20b..27045a3 100644 --- a/snap.h +++ b/snap.h @@ -1,26 +1,21 @@ -/* - * Copyright (C) 2008-2009 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* SPDX-License-Identifier: GPL-2.0 */ /** The possible states for snapshot creation/removal. */ -enum hook_status { - /** We are ready to take the next snapshot. */ - HS_READY, - /** The pre-create/pre-remove hook has been started. */ - HS_PRE_RUNNING, - /** The pre-create/pre-remove hook exited successfully. */ - HS_PRE_SUCCESS, - /** The rsync/rm process is running. */ - HS_RUNNING, - /** The rsync/rm process exited successfully. */ - HS_SUCCESS, - /** The rsync/rm process needs to be restarted. */ - HS_NEEDS_RESTART, - /** The post-create/post-remove hook has been started. */ - HS_POST_RUNNING, -}; +#define HOOK_STATUS_ARRAY \ + HSA_ITEM(HS_READY, "ready for action"), \ + HSA_ITEM(HS_PRE_RUNNING, "pre-hook running"), \ + HSA_ITEM(HS_PRE_SUCCESS, "pre-hook completed successfully"), \ + HSA_ITEM(HS_RUNNING, "in progress"), \ + HSA_ITEM(HS_SUCCESS, "process terminated successfully"), \ + HSA_ITEM(HS_NEEDS_RESTART, "restart needed"), \ + HSA_ITEM(HS_POST_RUNNING, "post-hook running") + + +#define HSA_ITEM(x, y) x +enum hook_status {HOOK_STATUS_ARRAY}; +#undef HSA_ITEM +#define HSA_ITEM(x, y) y + /** * The status of a snapshot. @@ -37,7 +32,7 @@ enum snapshot_status_flags { /** The rsync process terminated successfully. */ SS_COMPLETE = 1, /** The rm process is running to remove this snapshot. */ - SS_BEING_DELETED = 2, + SS_BEING_DELETED = 2 }; /** Describes one snapshot. */ @@ -88,11 +83,12 @@ __malloc char *incomplete_name(int64_t start); __malloc char *being_deleted_name(struct snapshot *s); int complete_name(int64_t start, int64_t end, char **result); __malloc char *name_of_newest_complete_snapshot(struct snapshot_list *sl); +int num_complete_snapshots(struct snapshot_list *sl); /** * Get the newest snapshot in a snapshot list. */ -_static_inline_ struct snapshot *get_newest_snapshot(struct snapshot_list *sl) +static inline struct snapshot *get_newest_snapshot(struct snapshot_list *sl) { if (!sl->num_snapshots) return NULL;