On 2014年09月11日 10:23, Hitoshi Mitake wrote:
At Wed, 10 Sep 2014 15:51:55 +0800,
Ruoyu wrote:
This patch fix the problem as below.

this is the first cluster snapshot I try to save, but I forgot to snapshot
the vdi:

dog cluster snapshot save first cluster_snapshots

Object not found. It may be caused by:
1. The cluster is empty.
2. All VDIs of the cluster don't have snapshots.

and that's right!

Then I take vdi snapshot and save cluster snapshot, then remove vdi snapshots.
Now I try to make the same mistake

dog cluster snapshot save second cluster_snapshots
100.0 % [=====] 4 / 4

There are no vdi snapshots and dog doesn't complain about it!
It did it only the first time.

Reported-by: Valerio Pachera <siri...@gmail.com>
Signed-off-by: Ruoyu <lian...@ucweb.com>
---
  dog/cluster.c   | 8 ++++++--
  dog/farm/farm.h | 1 +
  2 files changed, 7 insertions(+), 2 deletions(-)
Applied this series, thanks. BTW, could you provide a cover letter for
seriesed patches?
OK.
May I ask a question? How to add a cover letter for seriesed patches?

Thanks,
Hitoshi

diff --git a/dog/cluster.c b/dog/cluster.c
index 7c4856d..e42bc54 100644
--- a/dog/cluster.c
+++ b/dog/cluster.c
@@ -365,6 +365,9 @@ static void fill_object_tree(uint32_t vid, const char 
*name, const char *tag,
                        return;
        }
+ if (i->name[0] != '\0')
+               opt->nr_snapshot++;
+
        /* fill vdi object id */
        object_tree_insert(vdi_oid, i->nr_copies, i->copy_policy);
@@ -417,14 +420,15 @@ static int save_snapshot(int argc, char **argv)
                goto out;
        }
+ opt.nr_snapshot = 0;
        opt.count = argc - optind;
        opt.name = argv + optind;
        if (parse_vdi(fill_object_tree, SD_INODE_SIZE,
                        &opt, false) != SD_RES_SUCCESS)
                goto out;
- if (object_tree_size() == 0) {
-               sd_err("Object not found. It may be caused by:");
+       if (opt.nr_snapshot == 0) {
+               sd_err("Cannot execute. It may be caused by:");
                if (opt.count > 0) {
                        sd_err("1. The specified VDIs are not found.");
                        sd_err("2. The specified VDIs don't have snapshots.");
diff --git a/dog/farm/farm.h b/dog/farm/farm.h
index 745aa15..f4ec47f 100644
--- a/dog/farm/farm.h
+++ b/dog/farm/farm.h
@@ -50,6 +50,7 @@ struct snap_log {
  };
struct vdi_option {
+       int nr_snapshot;
        int count;
        char **name;
        void (*func)(struct sd_inode *inode);
--
1.8.3.2


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


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

Reply via email to