summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python_pgms/.INFO.swpbin0 -> 4096 bytes
-rw-r--r--python_pgms/INFO1
-rw-r--r--python_pgms/gsyncd_mtab_race/mtab_gsync.py29
3 files changed, 30 insertions, 0 deletions
diff --git a/python_pgms/.INFO.swp b/python_pgms/.INFO.swp
new file mode 100644
index 0000000..a4f1647
--- /dev/null
+++ b/python_pgms/.INFO.swp
Binary files differ
diff --git a/python_pgms/INFO b/python_pgms/INFO
index dcfa97f..5dbce14 100644
--- a/python_pgms/INFO
+++ b/python_pgms/INFO
@@ -1,2 +1,3 @@
python_pgms/cloud-on-fly ---> cloud seed programs which is used for testing glusterfs of versions < 3.1.x
+python_pgms/gsyncd_mtab_race ---> Bug 2690 for more details. Invoke it as mtab_gsync.py <vol-name>
diff --git a/python_pgms/gsyncd_mtab_race/mtab_gsync.py b/python_pgms/gsyncd_mtab_race/mtab_gsync.py
new file mode 100644
index 0000000..c2fe7e6
--- /dev/null
+++ b/python_pgms/gsyncd_mtab_race/mtab_gsync.py
@@ -0,0 +1,29 @@
+#!/usr/bin/env python
+
+import os, sys, tempfile, select, time
+
+def connect(vol, sleeptime=None):
+ d = tempfile.mkdtemp()
+ try:
+ argv = ["glusterfs", "-LDEBUG", "-l/tmp/gl0.log", '-s', "localhost",
+ '--volfile-id', vol, '--client-pid=-1', d]
+ if os.spawnvp(os.P_WAIT, argv[0], argv):
+ raise RuntimeError("command failed: " + " ".join(argv))
+ print >> sys.stderr, 'auxiliary glusterfs mount in place'
+ os.chdir(d)
+ argv = ['umount', '-l', d]
+ if sleeptime != None:
+ time.sleep(sleeptime)
+ if os.spawnvp(os.P_WAIT, argv[0], argv):
+ raise RuntimeError("command failed: " + " ".join(argv))
+ finally:
+ try:
+ os.rmdir(d)
+ except:
+ print >> sys.stderr, 'stale mount possibly left behind on ' + d
+ print >> sys.stderr, 'auxiliary glusterfs mount prepared'
+
+args = sys.argv[1:2]
+if len(sys.argv) > 2:
+ args.append(float(sys.argv[2]))
+connect(*args)