|
|
7c2869 |
From f30ea46871ea2b9a9923c13c9e9e85f2db813eb8 Mon Sep 17 00:00:00 2001
|
|
|
7c2869 |
From: Atin Mukherjee <amukherj@redhat.com>
|
|
|
7c2869 |
Date: Tue, 24 Apr 2018 20:12:02 +0530
|
|
|
7c2869 |
Subject: [PATCH 657/657] Revert "geo-rep: Remove lazy umount and use mount
|
|
|
7c2869 |
namespaces"
|
|
|
7c2869 |
|
|
|
7c2869 |
This reverts commit 1747de037b7fa7513d5a3755d273002076165784 to make the
|
|
|
7c2869 |
RHEL6 build
|
|
|
7c2869 |
|
|
|
7c2869 |
BUG: 1556680
|
|
|
7c2869 |
Change-Id: I6d7ddbaff0191782f78c7192dd175ae48b00bbf8
|
|
|
7c2869 |
Signed-off-by: Kotresh HR <khiremat@redhat.com>
|
|
|
7c2869 |
Reviewed-on: https://code.engineering.redhat.com/gerrit/136717
|
|
|
7c2869 |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
7c2869 |
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
|
7c2869 |
---
|
|
|
7c2869 |
geo-replication/syncdaemon/gconf.py | 3 ---
|
|
|
7c2869 |
geo-replication/syncdaemon/gsyncd.py | 14 +++++-------
|
|
|
7c2869 |
geo-replication/syncdaemon/monitor.py | 38 ++++++++++++--------------------
|
|
|
7c2869 |
geo-replication/syncdaemon/resource.py | 16 ++------------
|
|
|
7c2869 |
geo-replication/syncdaemon/syncdutils.py | 18 +--------------
|
|
|
7c2869 |
glusterfs.spec.in | 4 ----
|
|
|
7c2869 |
6 files changed, 23 insertions(+), 70 deletions(-)
|
|
|
7c2869 |
|
|
|
7c2869 |
diff --git a/geo-replication/syncdaemon/gconf.py b/geo-replication/syncdaemon/gconf.py
|
|
|
7c2869 |
index 2280f44..97395b4 100644
|
|
|
7c2869 |
--- a/geo-replication/syncdaemon/gconf.py
|
|
|
7c2869 |
+++ b/geo-replication/syncdaemon/gconf.py
|
|
|
7c2869 |
@@ -28,8 +28,5 @@ class GConf(object):
|
|
|
7c2869 |
active_earlier = False
|
|
|
7c2869 |
passive_earlier = False
|
|
|
7c2869 |
mgmt_lock_fd = None
|
|
|
7c2869 |
- mountbroker = False
|
|
|
7c2869 |
- mount_point = None
|
|
|
7c2869 |
- mbr_umount_cmd = []
|
|
|
7c2869 |
|
|
|
7c2869 |
gconf = GConf()
|
|
|
7c2869 |
diff --git a/geo-replication/syncdaemon/gsyncd.py b/geo-replication/syncdaemon/gsyncd.py
|
|
|
7c2869 |
index 96256cf..f9471e4 100644
|
|
|
7c2869 |
--- a/geo-replication/syncdaemon/gsyncd.py
|
|
|
7c2869 |
+++ b/geo-replication/syncdaemon/gsyncd.py
|
|
|
7c2869 |
@@ -269,8 +269,6 @@ def main_i():
|
|
|
7c2869 |
type=str, action='callback', callback=store_abs)
|
|
|
7c2869 |
op.add_option('--georep-session-working-dir', metavar='STATF',
|
|
|
7c2869 |
type=str, action='callback', callback=store_abs)
|
|
|
7c2869 |
- op.add_option('--access-mount', default=False, action='store_true')
|
|
|
7c2869 |
- op.add_option('--slave-access-mount', default=False, action='store_true')
|
|
|
7c2869 |
op.add_option('--ignore-deletes', default=False, action='store_true')
|
|
|
7c2869 |
op.add_option('--isolated-slave', default=False, action='store_true')
|
|
|
7c2869 |
op.add_option('--use-rsync-xattrs', default=False, action='store_true')
|
|
|
7c2869 |
@@ -416,7 +414,7 @@ def main_i():
|
|
|
7c2869 |
o.get_opt_string() not in ('--version', '--help'))]
|
|
|
7c2869 |
remote_tunables = ['listen', 'go_daemon', 'timeout',
|
|
|
7c2869 |
'session_owner', 'config_file', 'use_rsync_xattrs',
|
|
|
7c2869 |
- 'local_id', 'local_node', 'slave_access_mount']
|
|
|
7c2869 |
+ 'local_id', 'local_node']
|
|
|
7c2869 |
rq_remote_tunables = {'listen': True}
|
|
|
7c2869 |
|
|
|
7c2869 |
# precedence for sources of values: 1) commandline, 2) cfg file, 3)
|
|
|
7c2869 |
@@ -750,15 +748,15 @@ def main_i():
|
|
|
7c2869 |
else:
|
|
|
7c2869 |
log_file = gconf.log_file
|
|
|
7c2869 |
if be_monitor:
|
|
|
7c2869 |
- gconf.label = 'monitor'
|
|
|
7c2869 |
+ label = 'monitor'
|
|
|
7c2869 |
elif be_agent:
|
|
|
7c2869 |
- gconf.label = gconf.local_path
|
|
|
7c2869 |
+ label = gconf.local_path
|
|
|
7c2869 |
elif remote:
|
|
|
7c2869 |
# master
|
|
|
7c2869 |
- gconf.label = gconf.local_path
|
|
|
7c2869 |
+ label = gconf.local_path
|
|
|
7c2869 |
else:
|
|
|
7c2869 |
- gconf.label = 'slave'
|
|
|
7c2869 |
- startup(go_daemon=go_daemon, log_file=log_file, label=gconf.label)
|
|
|
7c2869 |
+ label = 'slave'
|
|
|
7c2869 |
+ startup(go_daemon=go_daemon, log_file=log_file, label=label)
|
|
|
7c2869 |
resource.Popen.init_errhandler()
|
|
|
7c2869 |
|
|
|
7c2869 |
if be_agent:
|
|
|
7c2869 |
diff --git a/geo-replication/syncdaemon/monitor.py b/geo-replication/syncdaemon/monitor.py
|
|
|
7c2869 |
index 087a202..dc0211e 100644
|
|
|
7c2869 |
--- a/geo-replication/syncdaemon/monitor.py
|
|
|
7c2869 |
+++ b/geo-replication/syncdaemon/monitor.py
|
|
|
7c2869 |
@@ -24,7 +24,7 @@ import random
|
|
|
7c2869 |
from gconf import gconf
|
|
|
7c2869 |
from syncdutils import select, waitpid, errno_wrap
|
|
|
7c2869 |
from syncdutils import set_term_handler, is_host_local, GsyncdError
|
|
|
7c2869 |
-from syncdutils import escape, Thread, finalize, memoize, boolify
|
|
|
7c2869 |
+from syncdutils import escape, Thread, finalize, memoize
|
|
|
7c2869 |
from syncdutils import gf_event, EVENT_GEOREP_FAULTY
|
|
|
7c2869 |
|
|
|
7c2869 |
from gsyncdstatus import GeorepStatus, set_monitor_status
|
|
|
7c2869 |
@@ -301,29 +301,19 @@ class Monitor(object):
|
|
|
7c2869 |
os.close(pr)
|
|
|
7c2869 |
os.close(ra)
|
|
|
7c2869 |
os.close(wa)
|
|
|
7c2869 |
- args_to_worker = argv + ['--feedback-fd', str(pw),
|
|
|
7c2869 |
- '--local-path', w[0]['dir'],
|
|
|
7c2869 |
- '--local-node', w[0]['host'],
|
|
|
7c2869 |
- '--local-node-id',
|
|
|
7c2869 |
- w[0]['uuid'],
|
|
|
7c2869 |
- '--local-id',
|
|
|
7c2869 |
- '.' + escape(w[0]['dir']),
|
|
|
7c2869 |
- '--rpc-fd',
|
|
|
7c2869 |
- ','.join([str(rw), str(ww),
|
|
|
7c2869 |
- str(ra), str(wa)]),
|
|
|
7c2869 |
- '--subvol-num', str(w[2])]
|
|
|
7c2869 |
-
|
|
|
7c2869 |
- if w[3]:
|
|
|
7c2869 |
- args_to_worker.append('--is-hottier')
|
|
|
7c2869 |
- args_to_worker += ['--resource-remote', remote_host]
|
|
|
7c2869 |
-
|
|
|
7c2869 |
- access_mount = boolify(gconf.access_mount)
|
|
|
7c2869 |
- if access_mount:
|
|
|
7c2869 |
- os.execv(sys.executable, args_to_worker)
|
|
|
7c2869 |
- else:
|
|
|
7c2869 |
- unshare_cmd = ['unshare', '-m', '--propagation', 'private']
|
|
|
7c2869 |
- cmd = unshare_cmd + args_to_worker
|
|
|
7c2869 |
- os.execvp("unshare", cmd)
|
|
|
7c2869 |
+ os.execv(sys.executable, argv + ['--feedback-fd', str(pw),
|
|
|
7c2869 |
+ '--local-path', w[0]['dir'],
|
|
|
7c2869 |
+ '--local-node', w[0]['host'],
|
|
|
7c2869 |
+ '--local-node-id',
|
|
|
7c2869 |
+ w[0]['uuid'],
|
|
|
7c2869 |
+ '--local-id',
|
|
|
7c2869 |
+ '.' + escape(w[0]['dir']),
|
|
|
7c2869 |
+ '--rpc-fd',
|
|
|
7c2869 |
+ ','.join([str(rw), str(ww),
|
|
|
7c2869 |
+ str(ra), str(wa)]),
|
|
|
7c2869 |
+ '--subvol-num', str(w[2])] +
|
|
|
7c2869 |
+ (['--is-hottier'] if w[3] else []) +
|
|
|
7c2869 |
+ ['--resource-remote', remote_host])
|
|
|
7c2869 |
|
|
|
7c2869 |
cpids.add(cpid)
|
|
|
7c2869 |
agents.add(apid)
|
|
|
7c2869 |
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py
|
|
|
7c2869 |
index 39d537b..943e3ec 100644
|
|
|
7c2869 |
--- a/geo-replication/syncdaemon/resource.py
|
|
|
7c2869 |
+++ b/geo-replication/syncdaemon/resource.py
|
|
|
7c2869 |
@@ -989,8 +989,6 @@ class SlaveRemote(object):
|
|
|
7c2869 |
extra_opts += ['--local-node', ln]
|
|
|
7c2869 |
if boolify(gconf.use_rsync_xattrs):
|
|
|
7c2869 |
extra_opts.append('--use-rsync-xattrs')
|
|
|
7c2869 |
- if boolify(gconf.slave_access_mount):
|
|
|
7c2869 |
- extra_opts.append('--slave-access-mount')
|
|
|
7c2869 |
po = Popen(rargs + gconf.remote_gsyncd.split() + extra_opts +
|
|
|
7c2869 |
['-N', '--listen', '--timeout', str(gconf.timeout),
|
|
|
7c2869 |
slave],
|
|
|
7c2869 |
@@ -1260,7 +1258,6 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):
|
|
|
7c2869 |
def __init__(self, params):
|
|
|
7c2869 |
self.params = params
|
|
|
7c2869 |
self.mntpt = None
|
|
|
7c2869 |
- self.umount_cmd = []
|
|
|
7c2869 |
|
|
|
7c2869 |
@classmethod
|
|
|
7c2869 |
def get_glusterprog(cls):
|
|
|
7c2869 |
@@ -1351,16 +1348,13 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):
|
|
|
7c2869 |
assert(mntdata[-1] == '\0')
|
|
|
7c2869 |
mntpt = mntdata[:-1]
|
|
|
7c2869 |
assert(mntpt)
|
|
|
7c2869 |
- if mounted and gconf.label == 'slave' \
|
|
|
7c2869 |
- and not boolify(gconf.slave_access_mount):
|
|
|
7c2869 |
+ if mounted:
|
|
|
7c2869 |
po = self.umount_l(mntpt)
|
|
|
7c2869 |
po.terminate_geterr(fail_on_err=False)
|
|
|
7c2869 |
if po.returncode != 0:
|
|
|
7c2869 |
po.errlog()
|
|
|
7c2869 |
rv = po.returncode
|
|
|
7c2869 |
- if gconf.label == 'slave' \
|
|
|
7c2869 |
- and not boolify(gconf.slave_access_mount):
|
|
|
7c2869 |
- self.cleanup_mntpt(mntpt)
|
|
|
7c2869 |
+ self.cleanup_mntpt(mntpt)
|
|
|
7c2869 |
except:
|
|
|
7c2869 |
logging.exception('mount cleanup failure:')
|
|
|
7c2869 |
rv = 200
|
|
|
7c2869 |
@@ -1380,7 +1374,6 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):
|
|
|
7c2869 |
|
|
|
7c2869 |
def make_mount_argv(self):
|
|
|
7c2869 |
self.mntpt = tempfile.mkdtemp(prefix='gsyncd-aux-mount-')
|
|
|
7c2869 |
- gconf.mount_point = self.mntpt
|
|
|
7c2869 |
return [self.get_glusterprog()] + \
|
|
|
7c2869 |
['--' + p for p in self.params] + [self.mntpt]
|
|
|
7c2869 |
|
|
|
7c2869 |
@@ -1412,11 +1405,6 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote):
|
|
|
7c2869 |
|
|
|
7c2869 |
def handle_mounter(self, po):
|
|
|
7c2869 |
self.mntpt = po.stdout.readline()[:-1]
|
|
|
7c2869 |
- gconf.mount_point = self.mntpt
|
|
|
7c2869 |
- gconf.mountbroker = True
|
|
|
7c2869 |
- self.umount_cmd = self.make_cli_argv() + ['umount']
|
|
|
7c2869 |
- gconf.mbr_umount_cmd = self.umount_cmd
|
|
|
7c2869 |
-
|
|
|
7c2869 |
po.stdout.close()
|
|
|
7c2869 |
sup(self, po)
|
|
|
7c2869 |
if po.returncode != 0:
|
|
|
7c2869 |
diff --git a/geo-replication/syncdaemon/syncdutils.py b/geo-replication/syncdaemon/syncdutils.py
|
|
|
7c2869 |
index 8dc6c96..a22289e 100644
|
|
|
7c2869 |
--- a/geo-replication/syncdaemon/syncdutils.py
|
|
|
7c2869 |
+++ b/geo-replication/syncdaemon/syncdutils.py
|
|
|
7c2869 |
@@ -16,7 +16,6 @@ import fcntl
|
|
|
7c2869 |
import shutil
|
|
|
7c2869 |
import logging
|
|
|
7c2869 |
import socket
|
|
|
7c2869 |
-import subprocess
|
|
|
7c2869 |
from threading import Lock, Thread as baseThread
|
|
|
7c2869 |
from errno import EACCES, EAGAIN, EPIPE, ENOTCONN, ECONNABORTED
|
|
|
7c2869 |
from errno import EINTR, ENOENT, EPERM, ESTALE, EBUSY, errorcode
|
|
|
7c2869 |
@@ -189,6 +188,7 @@ def grabpidfile(fname=None, setpid=True):
|
|
|
7c2869 |
|
|
|
7c2869 |
final_lock = Lock()
|
|
|
7c2869 |
|
|
|
7c2869 |
+
|
|
|
7c2869 |
def finalize(*a, **kw):
|
|
|
7c2869 |
"""all those messy final steps we go trough upon termination
|
|
|
7c2869 |
|
|
|
7c2869 |
@@ -233,22 +233,6 @@ def finalize(*a, **kw):
|
|
|
7c2869 |
if sys.exc_info()[0] == OSError:
|
|
|
7c2869 |
pass
|
|
|
7c2869 |
|
|
|
7c2869 |
- """ Unmount if not done """
|
|
|
7c2869 |
- if gconf.mount_point:
|
|
|
7c2869 |
- if gconf.mountbroker:
|
|
|
7c2869 |
- umount_cmd = gconf.mbr_umount_cmd + [gconf.mount_point, 'lazy']
|
|
|
7c2869 |
- else:
|
|
|
7c2869 |
- umount_cmd = ['umount', '-l', gconf.mount_point]
|
|
|
7c2869 |
- p0 = subprocess.Popen(umount_cmd, stderr=subprocess.PIPE)
|
|
|
7c2869 |
- _, errdata = p0.communicate()
|
|
|
7c2869 |
- if p0.returncode == 0:
|
|
|
7c2869 |
- try:
|
|
|
7c2869 |
- os.rmdir(gconf.mount_point)
|
|
|
7c2869 |
- except OSError:
|
|
|
7c2869 |
- pass
|
|
|
7c2869 |
- else:
|
|
|
7c2869 |
- pass
|
|
|
7c2869 |
-
|
|
|
7c2869 |
if gconf.log_exit:
|
|
|
7c2869 |
logging.info("exiting.")
|
|
|
7c2869 |
sys.stdout.flush()
|
|
|
7c2869 |
diff --git a/glusterfs.spec.in b/glusterfs.spec.in
|
|
|
7c2869 |
index d1aa3ea..fc9125b 100644
|
|
|
7c2869 |
--- a/glusterfs.spec.in
|
|
|
7c2869 |
+++ b/glusterfs.spec.in
|
|
|
7c2869 |
@@ -439,7 +439,6 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
|
|
|
7c2869 |
Requires: %{name}-server%{?_isa} = %{version}-%{release}
|
|
|
7c2869 |
Requires: python python-ctypes
|
|
|
7c2869 |
Requires: rsync
|
|
|
7c2869 |
-Requires: util-linux
|
|
|
7c2869 |
|
|
|
7c2869 |
%description geo-replication
|
|
|
7c2869 |
GlusterFS is a distributed file-system capable of scaling to several
|
|
|
7c2869 |
@@ -2068,9 +2067,6 @@ fi
|
|
|
7c2869 |
%endif
|
|
|
7c2869 |
|
|
|
7c2869 |
%changelog
|
|
|
7c2869 |
-* Thu Mar 22 2018 Kotresh HR <khiremat@redhat.com>
|
|
|
7c2869 |
-- Added util-linux as dependency to georeplication rpm (#1544382)
|
|
|
7c2869 |
-
|
|
|
7c2869 |
* Wed Dec 20 2017 Milind Changire <mchangir@redhat.com>
|
|
|
7c2869 |
- Remove ExclusiveArch directive to help building on non-x86_64 arches (#1527772)
|
|
|
7c2869 |
|
|
|
7c2869 |
--
|
|
|
7c2869 |
1.8.3.1
|
|
|
7c2869 |
|