[Ocfs2-tools-devel] [PATCH 3/7] o2cb.init: Cleanup userdlm domains during o2cb offline
Sunil Mushran
sunil.mushran at oracle.com
Thu Mar 17 17:31:47 PDT 2011
The o2cb init service now cleans up userdlm domains during offline. It also
creates /var/lock/susbsys/o2cb to ensure the service is stopped during shutdown.
Signed-off-by: Sunil Mushran <sunil.mushran at oracle.com>
---
vendor/common/o2cb.init.sh | 73 +++++++++++++++++++++++++++++++++++++++++---
1 files changed, 68 insertions(+), 5 deletions(-)
diff --git a/vendor/common/o2cb.init.sh b/vendor/common/o2cb.init.sh
index b11abee..4857aff 100644
--- a/vendor/common/o2cb.init.sh
+++ b/vendor/common/o2cb.init.sh
@@ -32,6 +32,8 @@ OCFS2_SYS_DIR="/sys/fs/ocfs2"
LOADED_PLUGINS_FILE="${OCFS2_SYS_DIR}/loaded_cluster_plugins"
CLUSTER_STACK_FILE="${OCFS2_SYS_DIR}/cluster_stack"
DLMFS_CAPABILITIES_FILE='/sys/module/ocfs2_dlmfs/parameters/capabilities'
+DLMFS_DIR="/dlm"
+DLMFS_MAGIC="76a9f425"
if [ -f /etc/sysconfig/o2cb ]
then
@@ -82,6 +84,21 @@ configfs_path()
fi
}
+touch_lockfile()
+{
+ if [ -d /var/lock/subsys ]
+ then
+ touch /var/lock/subsys/o2cb
+ fi
+}
+
+remove_lockfile()
+{
+ if [ -e /var/lock/subsys/o2cb ]
+ then
+ rm /var/lock/subsys/o2cb
+ fi
+}
#
# if_fail()
@@ -910,13 +927,51 @@ load_stack_o2cb()
fi
fi
- mount_filesystem "ocfs2_dlmfs" "/dlm"
+ mount_filesystem "ocfs2_dlmfs" $DLMFS_DIR
if_fail $?
return 0
}
#
+# Return the list of userdlm domains
+#
+userdlm_domains()
+{
+ magic=$(stat -f --printf="%t" ${DLMFS_DIR})
+ if [ "x$magic" = "x$DLMFS_MAGIC" ]
+ then
+ ls ${DLMFS_DIR}
+ fi
+}
+
+#
+# Print userdlm domains
+#
+userdlm_status()
+{
+ [ -n "$(userdlm_domains)" ] && {
+ echo "Active userdlm domains: " $(userdlm_domains)
+ }
+}
+
+#
+# Force removes all userdlm domains
+#
+clean_userdlm_domains()
+{
+ for domain in $(userdlm_domains)
+ do
+ domain_path="${DLMFS_DIR}/${domain}"
+ magic=$(stat -f --printf="%t" ${domain_path})
+ if [ "x$magic" = "x$DLMFS_MAGIC" ]
+ then
+ rm -rf ${domain_path}
+ fi
+ done
+}
+
+#
# dlmfs_user_capable()
# Check if dlmfs supports user stacks.
#
@@ -978,7 +1033,7 @@ load_stack_user()
if dlmfs_user_capable
then
- mount_filesystem "ocfs2_dlmfs" "/dlm"
+ mount_filesystem "ocfs2_dlmfs" $DLMFS_DIR
if_fail $?
fi
@@ -1035,7 +1090,7 @@ unload_stack_o2cb()
fi
fi
- unmount_filesystem "ocfs2_dlmfs" "/dlm"
+ unmount_filesystem "ocfs2_dlmfs" $DLMFS_DIR
if_fail $?
unload_stack_plugins
@@ -1058,7 +1113,7 @@ unload_stack_user()
exit 1
fi
- unmount_filesystem "ocfs2_dlmfs" "/dlm"
+ unmount_filesystem "ocfs2_dlmfs" $DLMFS_DIR
if_fail $?
unload_stack_plugins
@@ -1090,7 +1145,7 @@ status_stack_plugin()
status_stack_o2cb()
{
status_stack_plugin
- status_filesystem "ocfs2_dlmfs" "/dlm"
+ status_filesystem "ocfs2_dlmfs" $DLMFS_DIR
}
status_stack_user()
@@ -1178,6 +1233,8 @@ load()
{
PLUGIN="$(select_stack_plugin)"
+ touch_lockfile
+
# XXX: SPECIAL CASE! We must load configfs for configfs_path() to work
load_filesystem "configfs"
if_fail $?
@@ -1546,6 +1603,8 @@ offline()
FORCE=0
fi
+ clean_userdlm_domains
+
offline_$PLUGIN "$CLUSTER" "$FORCE"
unload_filesystem "ocfs2"
@@ -1569,6 +1628,8 @@ unload()
unload_stack_$PLUGIN
+ remove_lockfile
+
# Only unmount configfs if there are no other users
if [ -z "$(ls -1 "$(configfs_path)" 2>/dev/null)" ]
then
@@ -1662,6 +1723,8 @@ status()
fi
online_status "$CLUSTER"
+
+ userdlm_status
}
--
1.7.1
More information about the Ocfs2-tools-devel
mailing list