summaryrefslogtreecommitdiffstats
path: root/xlators/features/snapview-server
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/features/snapview-server')
-rw-r--r--xlators/features/snapview-server/src/snapview-server-helpers.c98
-rw-r--r--xlators/features/snapview-server/src/snapview-server.h5
2 files changed, 62 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);