diff options
author | Sachin Pandit <spandit@redhat.com> | 2014-10-21 07:57:22 +0530 |
---|---|---|
committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2014-11-12 03:20:10 -0800 |
commit | 70b0c7b725408fc82969e15dcf67cd352b0fb68b (patch) | |
tree | 52afb0d6aeec158cebdef6901a3cc6404e5e2c2d /xlators | |
parent | a5e5813aeec36dbbfaa3b9821618d24972a1bf2f (diff) |
USS : Display only the activated snapshots
Instead of displaying all the snapshots in the uss world,
it is better if we display only the activated snapshots.
Change-Id: I70d3ec212b62ec15956ae3e826bc4201d8dedd17
BUG: 1155042
Signed-off-by: Sachin Pandit <spandit@redhat.com>
Reviewed-on: http://review.gluster.org/8958
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/features/snapview-server/src/snapview-server-helpers.c | 98 | ||||
-rw-r--r-- | xlators/features/snapview-server/src/snapview-server.h | 5 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-snapshot.c | 6 |
3 files changed, 68 insertions, 41 deletions
diff --git a/xlators/features/snapview-server/src/snapview-server-helpers.c b/xlators/features/snapview-server/src/snapview-server-helpers.c index 0817e145e26..46e7d49a036 100644 --- a/xlators/features/snapview-server/src/snapview-server-helpers.c +++ b/xlators/features/snapview-server/src/snapview-server-helpers.c @@ -395,8 +395,9 @@ out: return; } +/* priv->snaplist_lock should be held before calling this function */ snap_dirent_t * -svs_get_snap_dirent (xlator_t *this, const char *name) +__svs_get_snap_dirent (xlator_t *this, const char *name) { svs_private_t *private = NULL; int i = 0; @@ -404,45 +405,36 @@ svs_get_snap_dirent (xlator_t *this, const char *name) snap_dirent_t *tmp_dirent = NULL; snap_dirent_t *dirent = NULL; - GF_VALIDATE_OR_GOTO ("snapview-server", this, out); - GF_VALIDATE_OR_GOTO (this->name, this->private, out); - GF_VALIDATE_OR_GOTO (this->name, name, out); - private = this->private; - LOCK (&private->snaplist_lock); - { - dirents = private->dirents; - if (!dirents) { - goto unlock; - } + dirents = private->dirents; + if (!dirents) { + goto out; + } - tmp_dirent = dirents; - for (i = 0; i < private->num_snaps; i++) { - if (!strcmp (tmp_dirent->name, name)) { - dirent = tmp_dirent; - break; - } - tmp_dirent++; + tmp_dirent = dirents; + for (i = 0; i < private->num_snaps; i++) { + if (!strcmp (tmp_dirent->name, name)) { + dirent = tmp_dirent; + break; } + tmp_dirent++; } -unlock: - UNLOCK (&private->snaplist_lock); -out: + out: return dirent; } glfs_t * -svs_initialise_snapshot_volume (xlator_t *this, const char *name) +__svs_initialise_snapshot_volume (xlator_t *this, const char *name) { - svs_private_t *priv = NULL; - int32_t ret = -1; - snap_dirent_t *dirent = NULL; - char volname[PATH_MAX] = {0, }; - glfs_t *fs = NULL; - int loglevel = GF_LOG_INFO; - char logfile[PATH_MAX] = {0, }; + svs_private_t *priv = NULL; + int32_t ret = -1; + snap_dirent_t *dirent = NULL; + char volname[PATH_MAX] = {0, }; + glfs_t *fs = NULL; + int loglevel = GF_LOG_INFO; + char logfile[PATH_MAX] = {0, }; GF_VALIDATE_OR_GOTO ("snapview-server", this, out); GF_VALIDATE_OR_GOTO (this->name, this->private, out); @@ -450,10 +442,10 @@ svs_initialise_snapshot_volume (xlator_t *this, const char *name) priv = this->private; - dirent = svs_get_snap_dirent (this, name); + dirent = __svs_get_snap_dirent (this, name); if (!dirent) { - gf_log (this->name, GF_LOG_ERROR, "snap entry for name %s " - "not found", name); + gf_log (this->name, GF_LOG_ERROR, "snap entry for " + "name %s not found", name); goto out; } @@ -466,6 +458,7 @@ svs_initialise_snapshot_volume (xlator_t *this, const char *name) snprintf (volname, sizeof (volname), "/snaps/%s/%s", dirent->name, dirent->snap_volname); + fs = glfs_new (volname); if (!fs) { gf_log (this->name, GF_LOG_ERROR, @@ -483,13 +476,6 @@ svs_initialise_snapshot_volume (xlator_t *this, const char *name) goto out; } - ret = glfs_init (fs); - if (ret) { - gf_log (this->name, GF_LOG_ERROR, "initing the " - "fs for %s failed", dirent->name); - goto out; - } - snprintf (logfile, sizeof (logfile), DEFAULT_SVD_LOG_FILE_DIRECTORY "/%s-%s.log", name, dirent->uuid); @@ -501,6 +487,13 @@ svs_initialise_snapshot_volume (xlator_t *this, const char *name) goto out; } + ret = glfs_init (fs); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "initing the " + "fs for %s failed", dirent->name); + goto out; + } + ret = 0; out: @@ -509,8 +502,33 @@ out: fs = NULL; } - if (fs) + if (fs) { dirent->fs = fs; + } + + return fs; +} + +glfs_t * +svs_initialise_snapshot_volume (xlator_t *this, const char *name) +{ + glfs_t *fs = NULL; + svs_private_t *priv = NULL; + + GF_VALIDATE_OR_GOTO ("snapview-server", this, out); + GF_VALIDATE_OR_GOTO (this->name, this->private, out); + GF_VALIDATE_OR_GOTO (this->name, name, out); + + priv = this->private; + + LOCK (&priv->snaplist_lock); + { + fs = __svs_initialise_snapshot_volume (this, name); + } + UNLOCK (&priv->snaplist_lock); + + +out: return fs; } diff --git a/xlators/features/snapview-server/src/snapview-server.h b/xlators/features/snapview-server/src/snapview-server.h index 47effb19758..6033c0e250f 100644 --- a/xlators/features/snapview-server/src/snapview-server.h +++ b/xlators/features/snapview-server/src/snapview-server.h @@ -214,8 +214,11 @@ svs_get_latest_snapshot (xlator_t *this); glfs_t * svs_initialise_snapshot_volume (xlator_t *this, const char *name); +glfs_t * +__svs_initialise_snapshot_volume (xlator_t *this, const char *name); + snap_dirent_t * -svs_get_snap_dirent (xlator_t *this, const char *name); +__svs_get_snap_dirent (xlator_t *this, const char *name); int svs_mgmt_init (xlator_t *this); diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c index 99addd165c8..4d4b7df673e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c @@ -7443,6 +7443,8 @@ glusterd_snapshot_postvalidate (dict_t *dict, int32_t op_ret, char **op_errstr, break; case GF_SNAP_OPTION_TYPE_ACTIVATE: case GF_SNAP_OPTION_TYPE_DEACTIVATE: + glusterd_fetchsnap_notify (this); + break; case GF_SNAP_OPTION_TYPE_STATUS: case GF_SNAP_OPTION_TYPE_CONFIG: case GF_SNAP_OPTION_TYPE_INFO: @@ -8212,6 +8214,10 @@ glusterd_snapshot_get_volnames_uuids (dict_t *dict, list_for_each_entry_safe (snap_vol, tmp_vol, &volinfo->snap_volumes, snapvol_list) { + + if (GLUSTERD_STATUS_STARTED != snap_vol->status) + continue; + snapcount++; /* Set Snap Name */ |