From 59b9ab45a01d52e197ab6f76fd71e64910396d57 Mon Sep 17 00:00:00 2001 From: Csaba Henk Date: Tue, 12 Apr 2011 02:47:45 +0000 Subject: temporary workaround for mtab update race thingy Signed-off-by: Csaba Henk Signed-off-by: Anand Avati BUG: 2690 (race between mtab updates of mount and umount) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2690 --- xlators/features/marker/utils/syncdaemon/resource.py | 1 + xlators/mgmt/glusterd/src/glusterd-op-sm.c | 1 + xlators/mgmt/glusterd/src/glusterd-rebalance.c | 2 ++ 3 files changed, 4 insertions(+) (limited to 'xlators') diff --git a/xlators/features/marker/utils/syncdaemon/resource.py b/xlators/features/marker/utils/syncdaemon/resource.py index f157b1907..d172462a7 100644 --- a/xlators/features/marker/utils/syncdaemon/resource.py +++ b/xlators/features/marker/utils/syncdaemon/resource.py @@ -411,6 +411,7 @@ class GLUSTER(AbstractUrl, SlaveLocal, SlaveRemote): raise RuntimeError("command failed: " + " ".join(argv)) logging.debug('auxiliary glusterfs mount in place') os.chdir(d) + time.sleep(0.2) # XXX temporary workaround argv = ['umount', '-l', d] if os.spawnvp(os.P_WAIT, argv[0], argv): raise RuntimeError("command failed: " + " ".join(argv)) diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index cdf9973aa..8d1cd639f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -4143,6 +4143,7 @@ glusterd_quota_child_waitpid (void *arg) child_info = (glusterd_quota_child_info_t *)arg; #ifdef GF_LINUX_HOST_OS + usleep (200000); snprintf (cmd, sizeof (cmd), "umount -l %s", child_info->mountdir); system (cmd); diff --git a/xlators/mgmt/glusterd/src/glusterd-rebalance.c b/xlators/mgmt/glusterd/src/glusterd-rebalance.c index fec0a1b2e..59d4963d4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-rebalance.c +++ b/xlators/mgmt/glusterd/src/glusterd-rebalance.c @@ -339,6 +339,7 @@ out: gf_log ("rebalance", GF_LOG_INFO, "rebalance on %s complete", defrag->mount); + usleep (200000); snprintf (cmd_str, 1024, "umount -l %s", defrag->mount); ret = system (cmd_str); LOCK_DESTROY (&defrag->lock); @@ -577,6 +578,7 @@ glusterd_handle_defrag_start (glusterd_volinfo_t *volinfo, char *op_errstr, ret = pthread_create (&defrag->th, NULL, glusterd_defrag_start, volinfo); if (ret) { + usleep (200000); snprintf (cmd_str, sizeof (cmd_str), "umount -l %s", defrag->mount); if (system (cmd_str)) gf_log("glusterd", GF_LOG_DEBUG, "command: %s " -- cgit