diff options
Diffstat (limited to 'xlators')
-rwxr-xr-x | xlators/features/marker/utils/gsyncd.in | 50 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.c | 2 |
2 files changed, 51 insertions, 1 deletions
diff --git a/xlators/features/marker/utils/gsyncd.in b/xlators/features/marker/utils/gsyncd.in index c34fea1a1..a7af8c0b0 100755 --- a/xlators/features/marker/utils/gsyncd.in +++ b/xlators/features/marker/utils/gsyncd.in @@ -3,5 +3,53 @@ prefix="@prefix@" exec_prefix="@exec_prefix@" libexecdir=`eval echo "@libexecdir@"` +sbindir=`eval echo "@sbindir@"` -exec @PYTHON@ "$libexecdir"/glusterfs/python/syncdaemon/gsyncd.py "$@" +gluster="$sbindir"/gluster + +# glusterd service autodetection + +config_wanted=1 +if [ "$_GLUSTERD_CALLED_" = 1 ]; then + # OK, we know glusterd called us, no need to look for further config + config_wanted=0 + # ... altough this conclusion should not inherit to our children + unset _GLUSTERD_CALLED_ +else + # look for a -c option -- if present, we are already configured. + + for a in "$@"; do + # -c found, see if it has an argument + if [ "$one_more_arg" = 1 ]; then + if echo "$a" | grep -qv ^-; then + config_wanted=0 + break + fi + one_more_arg=0 + fi + + if [ "$a" = -c ] || [ "$a" = --config-file ]; then + one_more_arg=1 + continue + fi + + if echo $a | grep -qE '^(-c.|--config-file=)'; then + config_wanted=0; + break + fi + done + +fi + +if [ $config_wanted = 1 ]; then + wd="`${gluster} system:: getwd`" + if [ $? -eq 0 ]; then + config_file="$wd/geo-replication/gsyncd.conf" + fi +fi + +if [ -z "$config_file" ]; then + exec @PYTHON@ "$libexecdir"/glusterfs/python/syncdaemon/gsyncd.py "$@" +else + exec @PYTHON@ "$libexecdir"/glusterfs/python/syncdaemon/gsyncd.py -c "$config_file" "$@" +fi diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c index 9048edc26..4d98fafd7 100644 --- a/xlators/mgmt/glusterd/src/glusterd.c +++ b/xlators/mgmt/glusterd/src/glusterd.c @@ -238,6 +238,8 @@ configure_syncaemon (xlator_t *this, const char *workdir) char cmd[4096] = {0,}; int blen = 0; + setenv ("_GLUSTERD_CALLED_", "1", 1); + snprintf (voldir, PATH_MAX, "%s/"GEOREP, workdir); ret = mkdir (voldir, 0777); if ((-1 == ret) && (errno != EEXIST)) { |