From 48201f4faeef3602cb095bf47d14deebf91899ba Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Sun, 4 May 2014 01:34:08 +0530 Subject: gsyncd / geo-rep: Partial support for Non-root geo-replication. This patch enables geo-replication to be run as an unprivileged user. As of now, this is just the partial support, but is very close to achieve full functionality. Current limitation * Geo-replication executed Gluster CLI commands on the slave via SSH. On a non-root setup, Gluster CLI would run as an unprivileged user, failing to execute the command. As a workaround (for testing), setuid(2) Gluster CLI executable or use the glusterd option to accept commands by unprivileged CLI process. The nature of cli commands are "system::" commands (for key management) and remote volume info fetching. Remote volume info fetching has been modified to use --remote-host gluster cli option rather than ssh and remote cli execution. Change-Id: Ica89e2ba9b7f48fd6e1c876c477d7822dc693617 BUG: 1077452 Signed-off-by: Venky Shankar Reviewed-on: http://review.gluster.org/7658 Tested-by: Gluster Build System --- xlators/mgmt/glusterd/src/glusterd-utils.c | 31 +++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c') diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 9923ffd0617..ab65895ed8d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6541,21 +6541,22 @@ glusterd_restart_bricks (glusterd_conf_t *conf) int _local_gsyncd_start (dict_t *this, char *key, data_t *value, void *data) { - char *path_list = NULL; - char *slave = NULL; - char *slave_ip = NULL; - char *slave_vol = NULL; - char *statefile = NULL; - char buf[1024] = "faulty"; - int uuid_len = 0; - int ret = 0; - int ret_status = 0; - char uuid_str[64] = {0}; - glusterd_volinfo_t *volinfo = NULL; + char *path_list = NULL; + char *slave = NULL; + char *slave_ip = NULL; + char *slave_vol = NULL; + char *slave_host = NULL; + char *statefile = NULL; + char buf[1024] = "faulty"; + int uuid_len = 0; + int ret = 0; + int ret_status = 0; + char uuid_str[64] = {0}; + glusterd_volinfo_t *volinfo = NULL; char confpath[PATH_MAX] = ""; - char *op_errstr = NULL; - glusterd_conf_t *priv = NULL; - gf_boolean_t is_template_in_use = _gf_false; + char *op_errstr = NULL; + glusterd_conf_t *priv = NULL; + gf_boolean_t is_template_in_use = _gf_false; GF_ASSERT (THIS); priv = THIS->private; @@ -6576,7 +6577,7 @@ _local_gsyncd_start (dict_t *this, char *key, data_t *value, void *data) ret = glusterd_get_local_brickpaths (volinfo, &path_list); /*Generating the conf file path needed by gsyncd */ - ret = glusterd_get_slave_info (slave, &slave_ip, + ret = glusterd_get_slave_info (slave, &slave_ip, &slave_host, &slave_vol, &op_errstr); if (ret) { gf_log ("", GF_LOG_ERROR, -- cgit