From e481921863d91dfce5550ce9722e99129f5979c2 Mon Sep 17 00:00:00 2001 From: Sachin Pandit Date: Mon, 17 Mar 2014 09:42:16 +0530 Subject: glusterd/snapshot : Restore fix. Copy the snapshot present in origin volume to the restored volume. Change-Id: Icea9f712ae062b50b570d27b85cd231903446198 BUG: 1077142 Signed-off-by: Sachin Pandit Reviewed-on: http://review.gluster.org/7282 Reviewed-by: Vijaikumar Mallikarjuna Reviewed-by: Rajesh Joseph Tested-by: Rajesh Joseph --- xlators/mgmt/glusterd/src/glusterd-volgen.c | 7 +++++++ xlators/mgmt/glusterd/src/glusterd.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 24a70eb41..4c4dbd735 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -4127,6 +4127,8 @@ gd_restore_snap_volume (glusterd_volinfo_t *orig_vol, glusterd_snap_t *snap = NULL; xlator_t *this = NULL; glusterd_conf_t *conf = NULL; + glusterd_volinfo_t *temp_volinfo = NULL; + glusterd_volinfo_t *voliter = NULL; this = THIS; GF_ASSERT (this); @@ -4162,6 +4164,11 @@ gd_restore_snap_volume (glusterd_volinfo_t *orig_vol, new_volinfo->snap_max_hard_limit = orig_vol->snap_max_hard_limit; new_volinfo->is_volume_restored = _gf_true; + list_for_each_entry_safe (voliter, temp_volinfo, + &orig_vol->snap_volumes, snapvol_list) { + list_add_tail (&voliter->snapvol_list, + &new_volinfo->snap_volumes); + } /* Copy the snap vol info to the new_volinfo.*/ ret = glusterd_snap_volinfo_restore (new_volinfo, snap_vol); if (ret) { diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index bcc376a6d..7e065b77b 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -306,6 +306,9 @@ struct glusterd_volinfo_ { glusterd_volinfo_t->snap_volumes */ struct list_head bricks; struct list_head snap_volumes; + /* TODO : Need to remove this, as this + * is already part of snapshot object. + */ glusterd_volume_status status; int sub_count; /* backward compatibility */ int stripe_count; -- cgit