Blob Blame History Raw
From 0f3b3f4e3c24c391e8a9ed2a44e32c7499c50fa4 Mon Sep 17 00:00:00 2001
From: Avra Sengupta <asengupt@redhat.com>
Date: Sun, 5 Jul 2015 12:21:31 +0530
Subject: [PATCH 204/212] glusterd/shared_storage: Use /var/lib/glusterd/ss_brick as shared storage's brick

The brick path we use to create shared storage is
/var/run/gluster/ss_brick.

The problem with using this brick path is /var/run/gluster
is a tmpfs and all the brick/shared storage data will be wiped
off when the node restarts. Hence using /var/lib/glusterd/ss_brick
as the brick path for shared storage volume as this brick and
the shared storage volume is internally created by us (albeit on
user's request), and contains only internal state data and no user data.

>Reviewed-on: http://review.gluster.org/11533
Change-Id: I808d1aa3e204a5d2022086d23bdbfdd44a2cfb1c
BUG: 1223205
Signed-off-by: Avra Sengupta <asengupt@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/52414
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
Tested-by: Rajesh Joseph <rjoseph@redhat.com>
---
 .../set/post/S32gluster_enable_shared_storage.sh   |    2 +-
 xlators/mgmt/glusterd/src/glusterd-op-sm.c         |    9 ++++-----
 xlators/mgmt/glusterd/src/glusterd.c               |   10 +++-------
 xlators/mgmt/glusterd/src/glusterd.h               |    8 ++++----
 4 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/extras/hook-scripts/set/post/S32gluster_enable_shared_storage.sh b/extras/hook-scripts/set/post/S32gluster_enable_shared_storage.sh
index 68bc44d..9080219 100755
--- a/extras/hook-scripts/set/post/S32gluster_enable_shared_storage.sh
+++ b/extras/hook-scripts/set/post/S32gluster_enable_shared_storage.sh
@@ -74,7 +74,7 @@ create_cmd="gluster --mode=script --wignore volume create \
 # Adding the brick names in the command
 for i in "${connected_peer[@]}"
 do
-    create_cmd=$create_cmd" "$i:/var/run/gluster/ss_brick
+    create_cmd=$create_cmd" "$i:"$GLUSTERD_WORKDIR"/ss_brick
 done
 
 if [ "$option" == "disable" ]; then
diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
index c8acc86..4619f57 100644
--- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c
+++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c
@@ -56,7 +56,6 @@
 #include <signal.h>
 #include <sys/wait.h>
 
-extern char ss_brick_path[PATH_MAX];
 extern char local_node_hostname[PATH_MAX];
 static int
 glusterd_set_shared_storage (dict_t *dict, char *key, char *value,
@@ -2245,12 +2244,12 @@ glusterd_set_shared_storage (dict_t *dict, char *key, char *value,
         /* Re-create the brick path so as to be *
          * able to re-use it                    *
          */
-        ret = recursive_rmdir (ss_brick_path);
+        ret = recursive_rmdir (GLUSTER_SHARED_STORAGE_BRICK_DIR);
         if (ret) {
                 snprintf (errstr, PATH_MAX,
                           "Failed to remove shared "
                           "storage brick(%s). "
-                          "Reason: %s", ss_brick_path,
+                          "Reason: %s", GLUSTER_SHARED_STORAGE_BRICK_DIR,
                           strerror (errno));
                 gf_msg (this->name, GF_LOG_ERROR, errno,
                         GD_MSG_DIR_OP_FAILED, "%s", errstr);
@@ -2258,12 +2257,12 @@ glusterd_set_shared_storage (dict_t *dict, char *key, char *value,
                 goto out;
         }
 
-        ret = mkdir_p (ss_brick_path, 0777, _gf_true);
+        ret = mkdir_p (GLUSTER_SHARED_STORAGE_BRICK_DIR, 0777, _gf_true);
         if (-1 == ret) {
                 snprintf (errstr, PATH_MAX,
                           "Failed to create shared "
                           "storage brick(%s). "
-                          "Reason: %s", ss_brick_path,
+                          "Reason: %s", GLUSTER_SHARED_STORAGE_BRICK_DIR,
                           strerror (errno));
                 gf_msg (this->name, GF_LOG_ERROR, errno,
                         GD_MSG_CREATE_DIR_FAILED, "%s", errstr);
diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
index 4203705..9754e8b 100644
--- a/xlators/mgmt/glusterd/src/glusterd.c
+++ b/xlators/mgmt/glusterd/src/glusterd.c
@@ -68,7 +68,6 @@ extern struct rpc_clnt_program gd_brick_prog;
 extern struct rpcsvc_program glusterd_mgmt_hndsk_prog;
 
 extern char snap_mount_dir[PATH_MAX];
-char ss_brick_path[PATH_MAX];
 
 rpcsvc_cbk_program_t glusterd_cbk_prog = {
         .progname  = "Gluster Callback",
@@ -1445,18 +1444,15 @@ init (xlator_t *this)
         snprintf (snap_mount_dir, sizeof(snap_mount_dir), "%s%s",
                   var_run_dir, GLUSTERD_DEFAULT_SNAPS_BRICK_DIR);
 
-        ret = glusterd_init_var_run_dirs (this, var_run_dir,
-                                      GLUSTER_SHARED_STORAGE_BRICK_DIR);
+        ret = mkdir_p (GLUSTER_SHARED_STORAGE_BRICK_DIR, 0777,
+                       _gf_true);
         if (ret) {
                 gf_msg (this->name, GF_LOG_CRITICAL, 0,
-                        GD_MSG_VAR_RUN_DIR_INIT_FAIL, "Unable to create "
+                        GD_MSG_DIR_OP_FAILED, "Unable to create "
                         "shared storage brick");
                 exit (1);
         }
 
-        snprintf (ss_brick_path, sizeof(ss_brick_path), "%s%s",
-                  var_run_dir, GLUSTER_SHARED_STORAGE_BRICK_DIR);
-
         snprintf (cmd_log_filename, PATH_MAX, "%s/cmd_history.log",
                   DEFAULT_LOG_FILE_DIRECTORY);
         ret = gf_cmd_log_init (cmd_log_filename);
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h
index cfe7a7b..c72c569 100644
--- a/xlators/mgmt/glusterd/src/glusterd.h
+++ b/xlators/mgmt/glusterd/src/glusterd.h
@@ -513,10 +513,10 @@ typedef enum {
 #define GLUSTERD_MISSED_SNAPS_LIST_FILE "missed_snaps_list"
 #define GLUSTERD_VOL_SNAP_DIR_PREFIX "snaps"
 
-#define GLUSTERD_DEFAULT_SNAPS_BRICK_DIR        "/gluster/snaps"
-#define GLUSTER_SHARED_STORAGE_BRICK_DIR        "/gluster/ss_brick"
-#define GLUSTERD_VAR_RUN_DIR                    "/var/run"
-#define GLUSTERD_RUN_DIR                        "/run"
+#define GLUSTERD_DEFAULT_SNAPS_BRICK_DIR     "/gluster/snaps"
+#define GLUSTER_SHARED_STORAGE_BRICK_DIR     GLUSTERD_DEFAULT_WORKDIR"/ss_brick"
+#define GLUSTERD_VAR_RUN_DIR                 "/var/run"
+#define GLUSTERD_RUN_DIR                     "/run"
 
 /* definitions related to replace brick */
 #define RB_CLIENT_MOUNTPOINT    "rb_mount"
-- 
1.7.1