Currently, sheepdog is using a word "snapshot" as a terminology for
vdi state synchronization during node joining
(e.g. SD_OP_VDI_STATE_SNAPSHOT_CTL). It is confusing because the word
snapshot resembles snapshot of VDIs.

This patch changes the terminology to checkpoint based on the famous
textbook:
http://www.cs.cornell.edu/projects/quicksilver/public_pdfs/History.pdf

Signed-off-by: Hitoshi Mitake <mitake.hito...@lab.ntt.co.jp>
---
 include/internal_proto.h |  2 +-
 include/sheepdog_proto.h |  2 +-
 sheep/group.c            | 24 +++++++++---------
 sheep/ops.c              | 22 ++++++++---------
 sheep/sheep_priv.h       |  8 +++---
 sheep/vdi.c              | 63 ++++++++++++++++++++++++------------------------
 6 files changed, 61 insertions(+), 60 deletions(-)

diff --git a/include/internal_proto.h b/include/internal_proto.h
index a1a073d..b3cbbc5 100644
--- a/include/internal_proto.h
+++ b/include/internal_proto.h
@@ -108,7 +108,7 @@
 #define SD_OP_ALLOW_INODE_UPDATE      0xC4
 #define SD_OP_REPAIR_REPLICA   0xC5
 #define SD_OP_OIDS_EXIST       0xC6
-#define SD_OP_VDI_STATE_SNAPSHOT_CTL  0xC7
+#define SD_OP_VDI_STATE_CHECKPOINT_CTL  0xC7
 #define SD_OP_INODE_COHERENCE 0xC8
 #define SD_OP_READ_DEL_VDIS  0xC9
 #define SD_OP_GET_RECOVERY      0xCA
diff --git a/include/sheepdog_proto.h b/include/sheepdog_proto.h
index 4a6edbe..4b9dacc 100644
--- a/include/sheepdog_proto.h
+++ b/include/sheepdog_proto.h
@@ -198,7 +198,7 @@ struct sd_req {
                struct {
                        uint32_t        get; /* 0 means free, 1 means get */
                        uint32_t        tgt_epoch;
-               } vdi_state_snapshot;
+               } vdi_state_checkpoint;
                struct {
                        /* 1 means validate, 0 means invalidate */
                        uint32_t        vid;
diff --git a/sheep/group.c b/sheep/group.c
index 7c7cb6d..e342453 100644
--- a/sheep/group.c
+++ b/sheep/group.c
@@ -710,18 +710,18 @@ static struct vdi_state 
*do_cinfo_collection_work(uint32_t epoch,
        vs = xcalloc(rlen, sizeof(*vs));
 
 retry:
-       sd_init_req(&hdr, SD_OP_VDI_STATE_SNAPSHOT_CTL);
-       hdr.vdi_state_snapshot.get = 1;
-       hdr.vdi_state_snapshot.tgt_epoch = epoch;
+       sd_init_req(&hdr, SD_OP_VDI_STATE_CHECKPOINT_CTL);
+       hdr.vdi_state_checkpoint.get = 1;
+       hdr.vdi_state_checkpoint.tgt_epoch = epoch;
        hdr.data_length = rlen;
 
        ret = sheep_exec_req(&n->nid, &hdr, (char *)vs);
        if (ret == SD_RES_SUCCESS) {
-               sd_debug("succeed to obtain snapshot of vdi states");
+               sd_debug("succeed to obtain checkpoint of vdi states");
                *nr_vdi_states = rsp->data_length / sizeof(*vs);
                return vs;
        } else if (ret == SD_RES_BUFFER_SMALL) {
-               sd_debug("buffer is small for obtaining snapshot of vdi states,"
+               sd_debug("buffer is small for obtaining checkpoint of vdi 
states,"
                         " doubling it (%lu -> %lu)", rlen * sizeof(*vs),
                         rlen * 2 * sizeof(*vs));
                rlen *= 2;
@@ -729,7 +729,7 @@ retry:
                goto retry;
        }
 
-       sd_err("failed to obtain snapshot of vdi states from node %s",
+       sd_err("failed to obtain checkpoint of vdi states from node %s",
               node_to_str(n));
        return NULL;
 }
@@ -756,7 +756,7 @@ static void cinfo_collection_work(struct work *work)
                        goto get_succeed;
        }
 
-       panic("getting a snapshot of vdi state at epoch %d failed", w->epoch);
+       panic("getting a checkpoint of vdi state at epoch %d failed", w->epoch);
 
 get_succeed:
        w->nr_vdi_states = nr_vdi_states;
@@ -768,13 +768,13 @@ get_succeed:
                if (node_is_local(n))
                        continue;
 
-               sd_init_req(&hdr, SD_OP_VDI_STATE_SNAPSHOT_CTL);
-               hdr.vdi_state_snapshot.get = 0;
-               hdr.vdi_state_snapshot.tgt_epoch = w->epoch;
+               sd_init_req(&hdr, SD_OP_VDI_STATE_CHECKPOINT_CTL);
+               hdr.vdi_state_checkpoint.get = 0;
+               hdr.vdi_state_checkpoint.tgt_epoch = w->epoch;
 
                ret = sheep_exec_req(&n->nid, &hdr, (char *)vs);
                if (ret != SD_RES_SUCCESS)
-                       sd_err("error at freeing a snapshot of vdi state"
+                       sd_err("error at freeing a checkpoint of vdi state"
                               " at epoch %d", w->epoch);
        }
 
@@ -906,7 +906,7 @@ static void update_cluster_info(const struct cluster_info 
*cinfo,
                }
        } else {
                if (0 < cinfo->epoch && cinfo->status == SD_STATUS_OK)
-                       take_vdi_state_snapshot(cinfo->epoch - 1);
+                       create_vdi_state_checkpoint(cinfo->epoch - 1);
        }
 
        sockfd_cache_add(&joined->nid);
diff --git a/sheep/ops.c b/sheep/ops.c
index 7b92f8c..223994c 100644
--- a/sheep/ops.c
+++ b/sheep/ops.c
@@ -1454,30 +1454,30 @@ static int cluster_release_vdi_main(const struct sd_req 
*req,
        return SD_RES_SUCCESS;
 }
 
-static int local_vdi_state_snapshot_ctl(const struct sd_req *req,
+static int local_vdi_state_checkpoint_ctl(const struct sd_req *req,
                                        struct sd_rsp *rsp, void *data,
                                        const struct sd_node *sender)
 {
-       bool get = !!req->vdi_state_snapshot.get;
-       int epoch = req->vdi_state_snapshot.tgt_epoch;
+       bool get = !!req->vdi_state_checkpoint.get;
+       int epoch = req->vdi_state_checkpoint.tgt_epoch;
        int ret, length = 0;
 
-       sd_info("%s vdi state snapshot at epoch %d",
+       sd_info("%s vdi state checkpoint at epoch %d",
                get ? "getting" : "freeing", epoch);
 
        if (get) {
-               ret = get_vdi_state_snapshot(epoch, data, req->data_length,
-                                            &length);
+               ret = get_vdi_state_checkpoint(epoch, data, req->data_length,
+                                              &length);
                if (ret == SD_RES_SUCCESS)
                        rsp->data_length = length;
                else {
-                       sd_info("failed to get vdi state snapshot: %s",
+                       sd_info("failed to get vdi state checkpoint: %s",
                               sd_strerror(ret));
 
                        return ret;
                }
        } else
-               free_vdi_state_snapshot(epoch);
+               free_vdi_state_checkpoint(epoch);
 
        return SD_RES_SUCCESS;
 }
@@ -1948,10 +1948,10 @@ static struct sd_op_template sd_ops[] = {
                .process_work = local_repair_replica,
        },
 
-       [SD_OP_VDI_STATE_SNAPSHOT_CTL] = {
-               .name = "VDI_STATE_SNAPSHOT_CTL",
+       [SD_OP_VDI_STATE_CHECKPOINT_CTL] = {
+               .name = "VDI_STATE_CHECKPOINT_CTL",
                .type = SD_OP_TYPE_LOCAL,
-               .process_main = local_vdi_state_snapshot_ctl,
+               .process_main = local_vdi_state_checkpoint_ctl,
        },
 
        [SD_OP_GET_CLUSTER_DEFAULT] = {
diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h
index 7becf6e..8c173a9 100644
--- a/sheep/sheep_priv.h
+++ b/sheep/sheep_priv.h
@@ -371,10 +371,10 @@ int sd_create_hyper_volume(const char *name, uint32_t 
*vdi_id);
 bool vdi_lock(uint32_t vid, const struct node_id *owner, int type);
 bool vdi_unlock(uint32_t vid, const struct node_id *owner, int type);
 void apply_vdi_lock_state(struct vdi_state *vs);
-void take_vdi_state_snapshot(int epoch);
-int get_vdi_state_snapshot(int epoch, void *data, int data_len_max,
-                          int *data_len_result);
-void free_vdi_state_snapshot(int epoch);
+void create_vdi_state_checkpoint(int epoch);
+int get_vdi_state_checkpoint(int epoch, void *data, int data_len_max,
+                            int *data_len_result);
+void free_vdi_state_checkpoint(int epoch);
 void log_vdi_op_lock(uint32_t vid, const struct node_id *owner, int type);
 void log_vdi_op_unlock(uint32_t vid, const struct node_id *owner, int type);
 void play_logged_vdi_ops(void);
diff --git a/sheep/vdi.c b/sheep/vdi.c
index 7f6cf67..aeb6e68 100644
--- a/sheep/vdi.c
+++ b/sheep/vdi.c
@@ -2118,83 +2118,84 @@ out:
        return ret;
 }
 
-struct vdi_state_snapshot {
+struct vdi_state_checkpoint {
        int epoch, nr_vs;
        struct vdi_state *vs;
 
        struct list_node list;
 };
 
-static LIST_HEAD(vdi_state_snapshot_list);
+static LIST_HEAD(vdi_state_checkpoint_list);
 
-main_fn void take_vdi_state_snapshot(int epoch)
+main_fn void create_vdi_state_checkpoint(int epoch)
 {
        /*
-        * take a snapshot of current vdi state and associate it with
+        * take a checkpoint of current vdi state and associate it with
         * the given epoch
         */
-       struct vdi_state_snapshot *snapshot;
+       struct vdi_state_checkpoint *checkpoint;
 
-       list_for_each_entry(snapshot, &vdi_state_snapshot_list, list) {
-               if (snapshot->epoch == epoch) {
-                       sd_debug("duplicate snapshot of epoch %d", epoch);
+       list_for_each_entry(checkpoint, &vdi_state_checkpoint_list, list) {
+               if (checkpoint->epoch == epoch) {
+                       sd_debug("duplicate checkpoint of epoch %d", epoch);
                        return;
                }
 
        }
 
-       snapshot = xzalloc(sizeof(*snapshot));
-       snapshot->epoch = epoch;
-       snapshot->vs = fill_vdi_state_list_with_alloc(&snapshot->nr_vs);
-       INIT_LIST_NODE(&snapshot->list);
-       list_add_tail(&snapshot->list, &vdi_state_snapshot_list);
+       checkpoint = xzalloc(sizeof(*checkpoint));
+       checkpoint->epoch = epoch;
+       checkpoint->vs = fill_vdi_state_list_with_alloc(&checkpoint->nr_vs);
+       INIT_LIST_NODE(&checkpoint->list);
+       list_add_tail(&checkpoint->list, &vdi_state_checkpoint_list);
 
-       sd_debug("taking a snapshot of vdi state at epoch %d succeed", epoch);
-       sd_debug("a number of vdi state: %d", snapshot->nr_vs);
+       sd_debug("creating a checkpoint of vdi state at epoch %d succeed",
+                epoch);
+       sd_debug("a number of vdi state: %d", checkpoint->nr_vs);
 }
 
-main_fn int get_vdi_state_snapshot(int epoch, void *data, int data_len_max,
-                                  int *data_len_result)
+main_fn int get_vdi_state_checkpoint(int epoch, void *data, int data_len_max,
+                                    int *data_len_result)
 {
-       struct vdi_state_snapshot *snapshot;
+       struct vdi_state_checkpoint *checkpoint;
        int len;
 
-       list_for_each_entry(snapshot, &vdi_state_snapshot_list, list) {
-               if (snapshot->epoch == epoch)
+       list_for_each_entry(checkpoint, &vdi_state_checkpoint_list, list) {
+               if (checkpoint->epoch == epoch)
                        goto found;
        }
 
-       sd_info("get request for not prepared vdi state snapshot, epoch: %d",
+       sd_info("get request for not prepared vdi state checkpoint, epoch: %d",
                epoch);
        return SD_RES_AGAIN;
 
 found:
-       len = sizeof(*snapshot->vs) * snapshot->nr_vs;
+       len = sizeof(*checkpoint->vs) * checkpoint->nr_vs;
        if (data_len_max < len) {
                sd_info("maximum allowed length: %d, required length: %d",
                        data_len_max, len);
                return SD_RES_BUFFER_SMALL;
        }
 
-       memcpy(data, snapshot->vs, len);
+       memcpy(data, checkpoint->vs, len);
        return SD_RES_SUCCESS;
 }
 
-main_fn void free_vdi_state_snapshot(int epoch)
+main_fn void free_vdi_state_checkpoint(int epoch)
 {
-       struct vdi_state_snapshot *snapshot;
+       struct vdi_state_checkpoint *checkpoint;
 
-       list_for_each_entry(snapshot, &vdi_state_snapshot_list, list) {
-               if (snapshot->epoch == epoch) {
-                       list_del(&snapshot->list);
-                       free(snapshot->vs);
-                       free(snapshot);
+       list_for_each_entry(checkpoint, &vdi_state_checkpoint_list, list) {
+               if (checkpoint->epoch == epoch) {
+                       list_del(&checkpoint->list);
+                       free(checkpoint->vs);
+                       free(checkpoint);
 
                        return;
                }
        }
 
-       panic("invalid free request for vdi state snapshot, epoch: %d", epoch);
+       panic("invalid free request for vdi state checkpoint, epoch: %d", 
epoch);
 }
 
 static int clean_matched_obj(uint64_t oid, const char *path,
-- 
1.9.1

-- 
sheepdog mailing list
sheepdog@lists.wpkg.org
https://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to