cluster: STABLE3 - fence_drac: Split fence agents drac/drac5 to separate directories
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: a8ec3710d0e4e53bf466a1214e7c20d0f402b7e4
Parent: e97692e42ffb901388ad2586ca93e91f6c509c8a
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Sep 23 15:22:57 2009 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Sep 23 15:22:57 2009 +0200
fence_drac: Split fence agents drac/drac5 to separate directories
Fence agents fence_drac/fence_drac5 were only one that resides in same
directory. This patch creates new directory drac5/ were fence_drac5 was
moved.
---
fence/agents/drac/Makefile | 2 +-
fence/agents/drac/fence_drac5.py | 131 -------------------------------------
fence/agents/drac5/Makefile | 5 ++
fence/agents/drac5/fence_drac5.py | 131 +++++++++++++++++++++++++++++++++++++
4 files changed, 137 insertions(+), 132 deletions(-)
diff --git a/fence/agents/drac/Makefile b/fence/agents/drac/Makefile
index 9a752ae..826744e 100644
--- a/fence/agents/drac/Makefile
+++ b/fence/agents/drac/Makefile
@@ -1,5 +1,5 @@
include ../../../make/defines.mk
-TARGET= fence_drac fence_drac5
+TARGET= fence_drac
include $(OBJDIR)/make/fencebuild.mk
diff --git a/fence/agents/drac/fence_drac5.py b/fence/agents/drac/fence_drac5.py
deleted file mode 100755
index 231fd06..0000000
--- a/fence/agents/drac/fence_drac5.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/python
-
-#####
-##
-## The Following Agent Has Been Tested On:
-##
-## DRAC Version Firmware
-## +-----------------+---------------------------+
-## DRAC 5 1.0 (Build 06.05.12)
-## DRAC 5 1.21 (Build 07.05.04)
-##
-## @note: drac_version was removed
-#####
-
-import sys, re, pexpect, exceptions
-sys.path.append("@FENCEAGENTSLIBDIR@")
-from fencing import *
-
-#BEGIN_VERSION_GENERATION
-RELEASE_VERSION="New Drac5 Agent - test release on steroids"
-REDHAT_COPYRIGHT=""
-BUILD_DATE="March, 2008"
-#END_VERSION_GENERATION
-
-def get_power_status(conn, options):
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("racadm serveraction powerstatus -m " + options["-m"])
- elif options["model"] == "DRAC 5":
- conn.sendline("racadm serveraction powerstatus")
-
- conn.log_expect(options, options["-c"], SHELL_TIMEOUT)
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
- status = re.compile("(^|: )(ON|OFF|Powering ON|Powering OFF)\s*$", re.IGNORECASE | re.MULTILINE).search(conn.before).group(2)
- if status.lower().strip() in ["on", "powering on", "powering off"]:
- return "on"
- else:
- return "off"
-
-def set_power_status(conn, options):
- action = {
- 'on' : "powerup",
- 'off': "powerdown"
- }[options["-o"]]
-
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("racadm serveraction " + action + " -m " + options["-m"])
- elif options["model"] == "DRAC 5":
- conn.sendline("racadm serveraction " + action)
- conn.log_expect(options, options["-c"], POWER_TIMEOUT)
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
-def get_list_devices(conn, options):
- outlets = { }
-
- try:
- if options["model"] == "DRAC CMC":
- conn.sendline("getmodinfo")
-
- list_re = re.compile("^([^\s]*?)\s+Present\s*(ON|OFF)\s*.*$")
- for line in conn.before.splitlines():
- if (list_re.search(line)):
- outlets[list_re.search(line).group(1)] = ("", list_re.search(line).group(2))
- conn.log_expect(options, options["-c"], POWER_TIMEOUT)
- elif options["model"] == "DRAC 5":
- ## DRAC 5 can be used only for one computer
- pass
- except pexpect.EOF:
- fail(EC_CONNECTION_LOST)
- except pexpect.TIMEOUT:
- fail(EC_TIMED_OUT)
-
- return outlets
-
-def main():
- device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug",
- "action", "ipaddr", "login", "passwd", "passwd_script",
- "cmd_prompt", "secure", "drac_version", "module_name",
- "separator", "inet4_only", "inet6_only", "ipport" ]
-
- atexit.register(atexit_handler)
-
- options = check_input(device_opt, process_input(device_opt))
-
- ##
- ## Fence agent specific defaults
- #####
- if 0 == options.has_key("-c"):
- options["-c"] = "\$"
-
- show_docs(options)
-
- ##
- ## Operate the fencing device
- ######
- conn = fence_login(options)
-
- if conn.before.find("CMC") >= 0:
- if 0 == options.has_key("-m") and 0 == ["monitor", "list"].count(option["-o"].lower()):
- fail_usage("Failed: You have to enter module name (-m)")
-
- options["model"]="DRAC CMC"
- elif conn.before.find("DRAC 5") >= 0:
- options["model"]="DRAC 5"
- else:
- ## Assume this is DRAC 5 by default as we don't want to break anything
- options["model"]="DRAC 5"
-
- fence_action(conn, options, set_power_status, get_power_status, get_list_devices)
-
- ##
- ## Logout from system
- ######
- try:
- conn.sendline("exit")
- conn.close()
- except exceptions.OSError:
- pass
- except pexpect.ExceptionPexpect:
- pass
-
-if __name__ == "__main__":
- main()
diff --git a/fence/agents/drac5/Makefile b/fence/agents/drac5/Makefile
new file mode 100644
index 0000000..5388cf8
--- /dev/null
+++ b/fence/agents/drac5/Makefile
@@ -0,0 +1,5 @@
+include ../../../make/defines.mk
+
+TARGET= fence_drac5
+
+include $(OBJDIR)/make/fencebuild.mk
diff --git a/fence/agents/drac5/fence_drac5.py b/fence/agents/drac5/fence_drac5.py
new file mode 100755
index 0000000..231fd06
--- /dev/null
+++ b/fence/agents/drac5/fence_drac5.py
@@ -0,0 +1,131 @@
+#!/usr/bin/python
+
+#####
+##
+## The Following Agent Has Been Tested On:
+##
+## DRAC Version Firmware
+## +-----------------+---------------------------+
+## DRAC 5 1.0 (Build 06.05.12)
+## DRAC 5 1.21 (Build 07.05.04)
+##
+## @note: drac_version was removed
+#####
+
+import sys, re, pexpect, exceptions
+sys.path.append("@FENCEAGENTSLIBDIR@")
+from fencing import *
+
+#BEGIN_VERSION_GENERATION
+RELEASE_VERSION="New Drac5 Agent - test release on steroids"
+REDHAT_COPYRIGHT=""
+BUILD_DATE="March, 2008"
+#END_VERSION_GENERATION
+
+def get_power_status(conn, options):
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("racadm serveraction powerstatus -m " + options["-m"])
+ elif options["model"] == "DRAC 5":
+ conn.sendline("racadm serveraction powerstatus")
+
+ conn.log_expect(options, options["-c"], SHELL_TIMEOUT)
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+ status = re.compile("(^|: )(ON|OFF|Powering ON|Powering OFF)\s*$", re.IGNORECASE | re.MULTILINE).search(conn.before).group(2)
+ if status.lower().strip() in ["on", "powering on", "powering off"]:
+ return "on"
+ else:
+ return "off"
+
+def set_power_status(conn, options):
+ action = {
+ 'on' : "powerup",
+ 'off': "powerdown"
+ }[options["-o"]]
+
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("racadm serveraction " + action + " -m " + options["-m"])
+ elif options["model"] == "DRAC 5":
+ conn.sendline("racadm serveraction " + action)
+ conn.log_expect(options, options["-c"], POWER_TIMEOUT)
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+def get_list_devices(conn, options):
+ outlets = { }
+
+ try:
+ if options["model"] == "DRAC CMC":
+ conn.sendline("getmodinfo")
+
+ list_re = re.compile("^([^\s]*?)\s+Present\s*(ON|OFF)\s*.*$")
+ for line in conn.before.splitlines():
+ if (list_re.search(line)):
+ outlets[list_re.search(line).group(1)] = ("", list_re.search(line).group(2))
+ conn.log_expect(options, options["-c"], POWER_TIMEOUT)
+ elif options["model"] == "DRAC 5":
+ ## DRAC 5 can be used only for one computer
+ pass
+ except pexpect.EOF:
+ fail(EC_CONNECTION_LOST)
+ except pexpect.TIMEOUT:
+ fail(EC_TIMED_OUT)
+
+ return outlets
+
+def main():
+ device_opt = [ "help", "version", "agent", "quiet", "verbose", "debug",
+ "action", "ipaddr", "login", "passwd", "passwd_script",
+ "cmd_prompt", "secure", "drac_version", "module_name",
+ "separator", "inet4_only", "inet6_only", "ipport" ]
+
+ atexit.register(atexit_handler)
+
+ options = check_input(device_opt, process_input(device_opt))
+
+ ##
+ ## Fence agent specific defaults
+ #####
+ if 0 == options.has_key("-c"):
+ options["-c"] = "\$"
+
+ show_docs(options)
+
+ ##
+ ## Operate the fencing device
+ ######
+ conn = fence_login(options)
+
+ if conn.before.find("CMC") >= 0:
+ if 0 == options.has_key("-m") and 0 == ["monitor", "list"].count(option["-o"].lower()):
+ fail_usage("Failed: You have to enter module name (-m)")
+
+ options["model"]="DRAC CMC"
+ elif conn.before.find("DRAC 5") >= 0:
+ options["model"]="DRAC 5"
+ else:
+ ## Assume this is DRAC 5 by default as we don't want to break anything
+ options["model"]="DRAC 5"
+
+ fence_action(conn, options, set_power_status, get_power_status, get_list_devices)
+
+ ##
+ ## Logout from system
+ ######
+ try:
+ conn.sendline("exit")
+ conn.close()
+ except exceptions.OSError:
+ pass
+ except pexpect.ExceptionPexpect:
+ pass
+
+if __name__ == "__main__":
+ main()
14 years, 7 months
fence-agents: master - fence_apc: fence_apc fails to fence node - Unable to obtain plug status
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/fence-agents.git?p=fence-agents.git;a=com...
Commit: 3c931231267aa1030b0ee2a2cc1e95271f76ecd5
Parent: 0b69dfb351d7d509f2ca27a4676c6a179e0a9af4
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Sep 23 13:55:18 2009 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Sep 23 14:00:18 2009 +0200
fence_apc: fence_apc fails to fence node - Unable to obtain plug status
New firmware allows new ouput:
1- Outlet 1:1 shell-01 ON Graceful Shutdown
Resolves: bz#517860
---
fence/agents/apc/fence_apc.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fence/agents/apc/fence_apc.py b/fence/agents/apc/fence_apc.py
index e4a3e3d..a48877e 100755
--- a/fence/agents/apc/fence_apc.py
+++ b/fence/agents/apc/fence_apc.py
@@ -70,7 +70,7 @@ def get_power_status(conn, options):
while True:
exp_result = conn.log_expect(options, [ options["-c"], "Press <ENTER>" ], SHELL_TIMEOUT)
lines = conn.before.split("\n");
- show_re = re.compile('^\s*(\d+)- (.*?)\s+(ON|OFF)\s*$')
+ show_re = re.compile('^\s*(\d+)- (.*?)\s+(ON|OFF)\s*')
for x in lines:
res = show_re.search(x)
if (res != None):
14 years, 7 months
cluster: STABLE3 - fence_apc: fence_apc fails to fence node - Unable to obtain plug status
by Marek Grác
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: e97692e42ffb901388ad2586ca93e91f6c509c8a
Parent: 0ca4ceac557b8ec2e106135366b137451ab33f8e
Author: Marek 'marx' Grac <mgrac(a)redhat.com>
AuthorDate: Wed Sep 23 13:55:18 2009 +0200
Committer: Marek 'marx' Grac <mgrac(a)redhat.com>
CommitterDate: Wed Sep 23 13:55:18 2009 +0200
fence_apc: fence_apc fails to fence node - Unable to obtain plug status
New firmware allows new ouput:
1- Outlet 1:1 shell-01 ON Graceful Shutdown
Resolves: bz#517860
---
fence/agents/apc/fence_apc.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fence/agents/apc/fence_apc.py b/fence/agents/apc/fence_apc.py
index e4a3e3d..a48877e 100755
--- a/fence/agents/apc/fence_apc.py
+++ b/fence/agents/apc/fence_apc.py
@@ -70,7 +70,7 @@ def get_power_status(conn, options):
while True:
exp_result = conn.log_expect(options, [ options["-c"], "Press <ENTER>" ], SHELL_TIMEOUT)
lines = conn.before.split("\n");
- show_re = re.compile('^\s*(\d+)- (.*?)\s+(ON|OFF)\s*$')
+ show_re = re.compile('^\s*(\d+)- (.*?)\s+(ON|OFF)\s*')
for x in lines:
res = show_re.search(x)
if (res != None):
14 years, 7 months
gfs1-utils: master - gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
by Abhijith Das
Gitweb: http://git.fedorahosted.org/git/gfs1-utils.git?p=gfs1-utils.git;a=commitd...
Commit: f43bed574e1f6f9dcf33a7a94b04a7e809986ba3
Parent: 68cffac61e089e0232fdfbf1fd3b17d47314b814
Author: Abhijith Das <adas(a)redhat.com>
AuthorDate: Tue Sep 22 14:43:52 2009 -0500
Committer: Abhijith Das <adas(a)redhat.com>
CommitterDate: Tue Sep 22 14:55:40 2009 -0500
gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
Patch to manage racing gfs_creates when selinux is in permissive mode.
With selinux in permissive mode, I've been able to hit this bug pretty easily.
It arises when two processes (on different nodes) race each other to create the
same file. Upon successful creation of the inode, security xattr for it needs
to be written when selinux is in permissive mode.
One of the racing processes creates the inode and succeeds in acquiring an
EXclusive lock on it to set the xattr. The other process fails to actually
create the inode (seeing that it exists by now), and does a lookup (which
returns a SHared lock) instead to complete the operation. However, this process
goes on and incorrectly attempts to write xattr, which fails with the above
assert because it doesn't hold an EX lock on the inode.
The process on the second node should not be attempting to write xattrs since
it did not create the inode in the first place. This patch ensures that.
---
gfs-kernel/src/gfs/ops_inode.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gfs-kernel/src/gfs/ops_inode.c b/gfs-kernel/src/gfs/ops_inode.c
index 400ec13..bac215c 100644
--- a/gfs-kernel/src/gfs/ops_inode.c
+++ b/gfs-kernel/src/gfs/ops_inode.c
@@ -140,7 +140,7 @@ gfs_create(struct inode *dir, struct dentry *dentry,
if (!inode)
error = -ENOMEM;
- else
+ else if (new)
error = gfs_security_init(dip, ip);
gfs_glock_dq_uninit(&d_gh);
14 years, 7 months
cluster: STABLE3 - gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
by Abhijith Das
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 0ca4ceac557b8ec2e106135366b137451ab33f8e
Parent: 3fc6abaa49589137955cdcf489bf54d0f8220530
Author: Abhijith Das <adas(a)redhat.com>
AuthorDate: Tue Sep 22 14:43:52 2009 -0500
Committer: Abhijith Das <adas(a)redhat.com>
CommitterDate: Tue Sep 22 14:49:41 2009 -0500
gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
Patch to manage racing gfs_creates when selinux is in permissive mode.
With selinux in permissive mode, I've been able to hit this bug pretty easily.
It arises when two processes (on different nodes) race each other to create the
same file. Upon successful creation of the inode, security xattr for it needs
to be written when selinux is in permissive mode.
One of the racing processes creates the inode and succeeds in acquiring an
EXclusive lock on it to set the xattr. The other process fails to actually
create the inode (seeing that it exists by now), and does a lookup (which
returns a SHared lock) instead to complete the operation. However, this process
goes on and incorrectly attempts to write xattr, which fails with the above
assert because it doesn't hold an EX lock on the inode.
The process on the second node should not be attempting to write xattrs since
it did not create the inode in the first place. This patch ensures that.
---
gfs-kernel/src/gfs/ops_inode.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gfs-kernel/src/gfs/ops_inode.c b/gfs-kernel/src/gfs/ops_inode.c
index 400ec13..bac215c 100644
--- a/gfs-kernel/src/gfs/ops_inode.c
+++ b/gfs-kernel/src/gfs/ops_inode.c
@@ -140,7 +140,7 @@ gfs_create(struct inode *dir, struct dentry *dentry,
if (!inode)
error = -ENOMEM;
- else
+ else if (new)
error = gfs_security_init(dip, ip);
gfs_glock_dq_uninit(&d_gh);
14 years, 7 months
cluster: STABLE2 - gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
by Abhijith Das
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: defbc63a9c88389327ceee3410ca4efeec089254
Parent: 87c6039736fb05560f664d15cbb762936ba8b492
Author: Abhijith Das <adas(a)redhat.com>
AuthorDate: Tue Sep 22 14:43:52 2009 -0500
Committer: Abhijith Das <adas(a)redhat.com>
CommitterDate: Tue Sep 22 14:48:55 2009 -0500
gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
Patch to manage racing gfs_creates when selinux is in permissive mode.
With selinux in permissive mode, I've been able to hit this bug pretty easily.
It arises when two processes (on different nodes) race each other to create the
same file. Upon successful creation of the inode, security xattr for it needs
to be written when selinux is in permissive mode.
One of the racing processes creates the inode and succeeds in acquiring an
EXclusive lock on it to set the xattr. The other process fails to actually
create the inode (seeing that it exists by now), and does a lookup (which
returns a SHared lock) instead to complete the operation. However, this process
goes on and incorrectly attempts to write xattr, which fails with the above
assert because it doesn't hold an EX lock on the inode.
The process on the second node should not be attempting to write xattrs since
it did not create the inode in the first place. This patch ensures that.
---
gfs-kernel/src/gfs/ops_inode.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gfs-kernel/src/gfs/ops_inode.c b/gfs-kernel/src/gfs/ops_inode.c
index 400ec13..bac215c 100644
--- a/gfs-kernel/src/gfs/ops_inode.c
+++ b/gfs-kernel/src/gfs/ops_inode.c
@@ -140,7 +140,7 @@ gfs_create(struct inode *dir, struct dentry *dentry,
if (!inode)
error = -ENOMEM;
- else
+ else if (new)
error = gfs_security_init(dip, ip);
gfs_glock_dq_uninit(&d_gh);
14 years, 7 months
cluster: RHEL55 - gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
by Abhijith Das
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 2f850ac3c4c34a4c972e5f7624694c61cb28d73f
Parent: ca7c9e3bc4dafe47303e90a4a74b76ad29050e39
Author: Abhijith Das <adas(a)redhat.com>
AuthorDate: Tue Sep 22 14:43:52 2009 -0500
Committer: Abhijith Das <adas(a)redhat.com>
CommitterDate: Tue Sep 22 14:43:52 2009 -0500
gfs-kernel: Bug 471258 - fatal: assertion "gfs_glock_is_locked_by_me(gl) && gfs_glock_is_held_excl(gl)" failed
Patch to manage racing gfs_creates when selinux is in permissive mode.
With selinux in permissive mode, I've been able to hit this bug pretty easily.
It arises when two processes (on different nodes) race each other to create the
same file. Upon successful creation of the inode, security xattr for it needs
to be written when selinux is in permissive mode.
One of the racing processes creates the inode and succeeds in acquiring an
EXclusive lock on it to set the xattr. The other process fails to actually
create the inode (seeing that it exists by now), and does a lookup (which
returns a SHared lock) instead to complete the operation. However, this process
goes on and incorrectly attempts to write xattr, which fails with the above
assert because it doesn't hold an EX lock on the inode.
The process on the second node should not be attempting to write xattrs since
it did not create the inode in the first place. This patch ensures that.
---
gfs-kernel/src/gfs/ops_inode.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/gfs-kernel/src/gfs/ops_inode.c b/gfs-kernel/src/gfs/ops_inode.c
index bff5aa0..ae836dc 100644
--- a/gfs-kernel/src/gfs/ops_inode.c
+++ b/gfs-kernel/src/gfs/ops_inode.c
@@ -152,7 +152,7 @@ gfs_create(struct inode *dir, struct dentry *dentry,
if (!inode)
error = -ENOMEM;
- else
+ else if (new)
error = gfs_security_init(dip, ip);
gfs_glock_dq_uninit(&d_gh);
14 years, 7 months
dlm: master - dlm_controld: change default enable_quorum to 0
by David Teigland
Gitweb: http://git.fedorahosted.org/git/dlm.git?p=dlm.git;a=commitdiff;h=47d2b45a...
Commit: 47d2b45af016d154258e9b7d5249dfe2c31ecffc
Parent: aeee6d80225cc0dfa8fa8a567603d31dfee5bc84
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Tue Sep 22 11:45:10 2009 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Tue Sep 22 11:46:14 2009 -0500
dlm_controld: change default enable_quorum to 0
Fencing waits for quorum when necessary, and dlm_controld waits
for fencing. So, there's no reason that dlm_controld needs to
wait for quorum itself, apart from the possible expectation of
users/apps that a lockspace (and cluster fs) will not be enabled
in an inquorate cluster.
Not waiting for quorum does allow a lockspace (and cluster fs)
to be fully enabled/started/recovered in an inquorate cluster as
long as there is no fencing outstanding. The big advantage
is that broader shutdown is possible in an inquorate cluster,
i.e. lockspaces (and cluster fs's) can be left (unmounted) in
an inquorate cluster.
Shutting down a node involves the others disabling/enabling the
lockspace, and the enabling step is what will block on quorum,
which then prevents the shutdown on those nodes.
Signed-off-by: David Teigland <teigland(a)redhat.com>
---
group/dlm_controld/config.h | 2 +-
group/dlm_controld/cpg.c | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/group/dlm_controld/config.h b/group/dlm_controld/config.h
index d67dce0..9a643d6 100644
--- a/group/dlm_controld/config.h
+++ b/group/dlm_controld/config.h
@@ -6,7 +6,7 @@
#define DEFAULT_DEBUG_LOGFILE 0
#define DEFAULT_ENABLE_FENCING 1
-#define DEFAULT_ENABLE_QUORUM 1
+#define DEFAULT_ENABLE_QUORUM 0
#define DEFAULT_ENABLE_DEADLK 0
#define DEFAULT_ENABLE_PLOCK 1
#define DEFAULT_PLOCK_DEBUG 0
diff --git a/group/dlm_controld/cpg.c b/group/dlm_controld/cpg.c
index cf249c2..1eff685 100644
--- a/group/dlm_controld/cpg.c
+++ b/group/dlm_controld/cpg.c
@@ -748,9 +748,15 @@ static int wait_conditions_done(struct lockspace *ls)
return 0;
}
- /* even though fencing also waits for quorum, checking fencing isn't
- sufficient because we don't want to start new lockspaces in an
- inquorate cluster */
+ /* fencing waits for quorum, so we don't need to check quorum for any
+ reasons related to safety or protection, so enable_quorum defaults
+ to 0. This does mean that lockspaces (and cluster fs's) can be
+ started/enabled in an inquorate cluster if there are no outstanding
+ fencing operations. Some users or apps may want lockspaces/fs's to
+ only be enabled in a quorate cluster; enable_quorum can be set to 1
+ to get that behavior. The main advantage of not waiting for quorum
+ here is to allow lockspaces to be shut down (and cluster fs's
+ unmounted) in an inquorate cluster. */
if (!check_quorum_done(ls)) {
poll_quorum++;
14 years, 7 months
cluster: STABLE3 - dlm_controld: change default enable_quorum to 0
by David Teigland
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 3fc6abaa49589137955cdcf489bf54d0f8220530
Parent: d549c89d2aadb902977dc8a972e81bb56ebbb3bf
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Tue Sep 22 11:04:07 2009 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Tue Sep 22 11:41:47 2009 -0500
dlm_controld: change default enable_quorum to 0
Fencing waits for quorum when necessary, and dlm_controld waits
for fencing. So, there's no reason that dlm_controld needs to
wait for quorum itself, apart from the possible expectation of
users/apps that a lockspace (and cluster fs) will not be enabled
in an inquorate cluster.
Not waiting for quorum does allow a lockspace (and cluster fs)
to be fully enabled/started/recovered in an inquorate cluster as
long as there is no fencing outstanding. The big advantage
is that broader shutdown is possible in an inquorate cluster,
i.e. lockspaces (and cluster fs's) can be left (unmounted) in
an inquorate cluster.
Shutting down a node involves the others disabling/enabling the
lockspace, and the enabling step is what will block on quorum,
which then prevents the shutdown on those nodes.
Signed-off-by: David Teigland <teigland(a)redhat.com>
---
group/dlm_controld/config.h | 2 +-
group/dlm_controld/cpg.c | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/group/dlm_controld/config.h b/group/dlm_controld/config.h
index e498ec8..19a0bf8 100644
--- a/group/dlm_controld/config.h
+++ b/group/dlm_controld/config.h
@@ -7,7 +7,7 @@
#define DEFAULT_GROUPD_COMPAT 0
#define DEFAULT_DEBUG_LOGFILE 0
#define DEFAULT_ENABLE_FENCING 1
-#define DEFAULT_ENABLE_QUORUM 1
+#define DEFAULT_ENABLE_QUORUM 0
#define DEFAULT_ENABLE_DEADLK 0
#define DEFAULT_ENABLE_PLOCK 1
#define DEFAULT_PLOCK_DEBUG 0
diff --git a/group/dlm_controld/cpg.c b/group/dlm_controld/cpg.c
index cf249c2..1eff685 100644
--- a/group/dlm_controld/cpg.c
+++ b/group/dlm_controld/cpg.c
@@ -748,9 +748,15 @@ static int wait_conditions_done(struct lockspace *ls)
return 0;
}
- /* even though fencing also waits for quorum, checking fencing isn't
- sufficient because we don't want to start new lockspaces in an
- inquorate cluster */
+ /* fencing waits for quorum, so we don't need to check quorum for any
+ reasons related to safety or protection, so enable_quorum defaults
+ to 0. This does mean that lockspaces (and cluster fs's) can be
+ started/enabled in an inquorate cluster if there are no outstanding
+ fencing operations. Some users or apps may want lockspaces/fs's to
+ only be enabled in a quorate cluster; enable_quorum can be set to 1
+ to get that behavior. The main advantage of not waiting for quorum
+ here is to allow lockspaces to be shut down (and cluster fs's
+ unmounted) in an inquorate cluster. */
if (!check_quorum_done(ls)) {
poll_quorum++;
14 years, 7 months
cluster: STABLE3 - release script: rename gfs1-utils to gfs-utils
by Fabio M. Di Nitto
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: d549c89d2aadb902977dc8a972e81bb56ebbb3bf
Parent: 161b6d3d7db0b34046c6e4b8c6c5818e655e549e
Author: Fabio M. Di Nitto <fdinitto(a)redhat.com>
AuthorDate: Tue Sep 22 17:56:28 2009 +0200
Committer: Fabio M. Di Nitto <fdinitto(a)redhat.com>
CommitterDate: Tue Sep 22 17:56:28 2009 +0200
release script: rename gfs1-utils to gfs-utils
Signed-off-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
make/release.mk | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/make/release.mk b/make/release.mk
index dcda14d..421bcbc 100644
--- a/make/release.mk
+++ b/make/release.mk
@@ -47,10 +47,10 @@ RGMPROJECT=rgmanager
RGMPV=$(RGMPROJECT)-$(VERSION)
RGMTGZ=$(TEST)$(RGMPV).tar.gz
-# gfs1-utils
-GFS1PROJECT=gfs1-utils
-GFS1PV=$(GFS1PROJECT)-$(VERSION)
-GFS1TGZ=$(TEST)$(GFS1PV).tar.gz
+# gfs-utils
+GFSPROJECT=gfs-utils
+GFSPV=$(GFSPROJECT)-$(VERSION)
+GFSTGZ=$(TEST)$(GFSPV).tar.gz
all: tag tarballs
@@ -67,7 +67,7 @@ tarballs: master-tarball
tarballs: fence-agents-tarball
tarballs: resource-agents-tarball
tarballs: rgmanager-tarball
-tarballs: gfs1-tarball
+tarballs: gfs-tarball
master-tarball:
git archive \
@@ -128,23 +128,23 @@ rgmanager-tarball: master-tarball
> ../$(RGMTGZ)
rm -rf $(RGMPV)
-gfs1-tarball: master-tarball
+gfs-tarball: master-tarball
tar zxpf ../$(MASTERTGZ)
- mv $(MASTERPROJECT)-$(VERSION) $(GFS1PV)
- cd $(GFS1PV) && \
+ mv $(MASTERPROJECT)-$(VERSION) $(GFSPV)
+ cd $(GFSPV) && \
rm -rf bindings cman common config contrib dlm fence group \
rgmanager gfs2
- tar cp $(GFS1PV) | \
+ tar cp $(GFSPV) | \
gzip -9 \
- > ../$(GFS1TGZ)
- rm -rf $(GFS1PV)
+ > ../$(GFSTGZ)
+ rm -rf $(GFSPV)
publish:
git push --tags origin
scp ../$(MASTERTGZ) \
../$(FENCETGZ) \
../$(RASTGZ) \
- ../$(GFS1TGZ) \
+ ../$(GFSTGZ) \
../$(RGMTGZ) \
fedorahosted.org:$(MASTERPROJECT)
git log $(MASTERPROJECT)-$(OLDVER)..$(MASTERPV) | \
14 years, 7 months