Update to 1.8.5 (BZ#1436734)

This commit is contained in:
Robin Lee 2018-02-17 00:33:44 +08:00
parent fb04b64600
commit b337b52472
11 changed files with 3412 additions and 611 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
ocfs2-tools-1.4.3.tar.gz
/ocfs2-tools-1.6.3.tar.gz
/ocfs2-tools-1.8.5.tar.gz

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
From 460afefe7c91b90d88e4dc0ed03f894134b9fb6a Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Tue, 6 Feb 2018 16:26:34 +0800
Subject: [PATCH] Update FSF address in ipwidget.py
---
ocfs2console/ocfs2interface/ipwidget.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ocfs2console/ocfs2interface/ipwidget.py b/ocfs2console/ocfs2interface/ipwidget.py
index c4f18212..410345df 100644
--- a/ocfs2console/ocfs2interface/ipwidget.py
+++ b/ocfs2console/ocfs2interface/ipwidget.py
@@ -11,7 +11,7 @@
#
# You should have received a copy of the GNU Library Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Modified by Manish Singh <manish.singh@oracle.com>
--
2.13.6

View File

@ -0,0 +1,86 @@
From 0ffd58b223e24779420130522ea8ee359505f493 Mon Sep 17 00:00:00 2001
From: Gang He <ghe@suse.com>
Date: Mon, 4 Sep 2017 14:08:59 +0800
Subject: [PATCH] fsck.ocfs2: fix compile error when glibc upgrade
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When glibc upgrade to glibc-2.26.90-14, there was a compile error in fsck.ocfs2,
the compile error messages like,
In file included from /usr/include/string.h:431:0,
from ../include/ocfs2/ocfs2.h:41,
from pass4.c:32:
include/strings.h:37:1: error: unknown type name errcode_t; did you mean mode_t?
errcode_t o2fsck_strings_insert(o2fsck_strings *strings, char *string,
^~~~~~~~~
mode_t
---
fsck.ocfs2/Makefile | 2 +-
fsck.ocfs2/include/{strings.h => o2fsck_strings.h} | 0
fsck.ocfs2/pass2.c | 2 +-
fsck.ocfs2/pass5.c | 2 +-
fsck.ocfs2/strings.c | 2 +-
5 files changed, 4 insertions(+), 4 deletions(-)
rename fsck.ocfs2/include/{strings.h => o2fsck_strings.h} (100%)
diff --git a/fsck.ocfs2/Makefile b/fsck.ocfs2/Makefile
index 051ed742..baf1994d 100644
--- a/fsck.ocfs2/Makefile
+++ b/fsck.ocfs2/Makefile
@@ -64,7 +64,7 @@ HFILES = include/fsck.h \
include/problem.h \
include/refcount.h \
include/slot_recovery.h \
- include/strings.h \
+ include/o2fsck_strings.h \
include/util.h
diff --git a/fsck.ocfs2/include/strings.h b/fsck.ocfs2/include/o2fsck_strings.h
similarity index 100%
rename from fsck.ocfs2/include/strings.h
rename to fsck.ocfs2/include/o2fsck_strings.h
diff --git a/fsck.ocfs2/pass2.c b/fsck.ocfs2/pass2.c
index 181febb9..a48a50b5 100644
--- a/fsck.ocfs2/pass2.c
+++ b/fsck.ocfs2/pass2.c
@@ -43,7 +43,7 @@
#include "fsck.h"
#include "pass2.h"
#include "problem.h"
-#include "strings.h"
+#include "o2fsck_strings.h"
#include "util.h"
static const char *whoami = "pass2";
diff --git a/fsck.ocfs2/pass5.c b/fsck.ocfs2/pass5.c
index 5c2d899f..bfad1b72 100644
--- a/fsck.ocfs2/pass5.c
+++ b/fsck.ocfs2/pass5.c
@@ -40,7 +40,7 @@
#include "fsck.h"
#include "pass5.h"
#include "problem.h"
-#include "strings.h"
+#include "o2fsck_strings.h"
#include "util.h"
static const char *whoami = "pass5";
diff --git a/fsck.ocfs2/strings.c b/fsck.ocfs2/strings.c
index 4ad37822..8a7a8d9d 100644
--- a/fsck.ocfs2/strings.c
+++ b/fsck.ocfs2/strings.c
@@ -31,7 +31,7 @@
#include "ocfs2/ocfs2.h"
#include "fsck.h"
-#include "strings.h"
+#include "o2fsck_strings.h"
#include "util.h"
struct string_entry {
--
2.13.6

View File

@ -0,0 +1,48 @@
From e686b8013a14b9b28e77bf08457d426f45689e9d Mon Sep 17 00:00:00 2001
From: Robin Lee <cheeselee@fedoraproject.org>
Date: Mon, 29 Jan 2018 15:01:32 +0800
Subject: [PATCH] ocfs2console: explicitly specified link libraries
Signed-off-by: Robin Lee <cheeselee@fedoraproject.org>
---
ocfs2console/ocfs2interface/Makefile | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/ocfs2console/ocfs2interface/Makefile b/ocfs2console/ocfs2interface/Makefile
index 54094559..7c7c9b1c 100644
--- a/ocfs2console/ocfs2interface/Makefile
+++ b/ocfs2console/ocfs2interface/Makefile
@@ -19,6 +19,9 @@ LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb -ldlm_lt
else
LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb
endif
+ifneq ($(BUILD_CMAP_SUPPORT),)
+LIBO2CB_LIBS += -lcmap
+endif
LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
ifdef HAVE_BLKID
@@ -94,16 +97,16 @@ INSTALL_RULES = install-pylib
DIST_FILES = $(PLIST_CFILES) $(PLIST_HFILES) $(GIDLE_CFILES) $(OCFS2_CFILES) $(O2CB_CFILES) $(PYSRC) $(addsuffix .in,$(BUILT_PYSRC))
plistmodule.so: $(PLIST_OBJS) $(LIBOCFS2_DEPS) $(LIBO2DLM_DEPS) $(LIBO2CB_DEPS) $(BLKID_DEPS)
- $(LINK) -shared $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(BLKID_LIBS) $(COM_ERR_LIBS) $(GLIB_LIBS)
+ $(LINK) -shared $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(BLKID_LIBS) $(COM_ERR_LIBS) $(GLIB_LIBS) $(shell python-config --libs)
gidlemodule.so: $(GIDLE_OBJS)
- $(LINK) -shared $(GLIB_LIBS)
+ $(LINK) -shared $(GLIB_LIBS) $(shell python-config --libs)
ocfs2module.so: $(OCFS2_OBJS) $(LIBOCFS2_DEPS) $(LIBO2DLM_DEPS) $(LIBO2CB_DEPS)
- $(LINK) -shared $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(UUID_LIBS)
+ $(LINK) -shared $(LIBOCFS2_LIBS) $(LIBO2DLM_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(UUID_LIBS) $(shell python-config --libs)
o2cbmodule.so: $(O2CB_OBJS) $(LIBO2CB_DEPS)
- $(LINK) -shared $(LIBO2CB_LIBS) $(COM_ERR_LIBS)
+ $(LINK) -shared $(LIBOCFS2_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(shell python-config --libs)
install-pylib:
$(SHELL) $(TOPDIR)/mkinstalldirs $(DESTDIR)$(pyexecdir)/ocfs2interface
--
2.13.6

View File

@ -1,32 +0,0 @@
diff -Nuard ocfs2-tools-1.4.3.orig/ocfs2_controld/Makefile ocfs2-tools-1.4.3/ocfs2_controld/Makefile
--- ocfs2-tools-1.4.3.orig/ocfs2_controld/Makefile 2009-04-14 00:10:40.000000000 +0200
+++ ocfs2-tools-1.4.3/ocfs2_controld/Makefile 2009-09-30 08:22:04.000000000 +0200
@@ -17,7 +17,7 @@
PCMK_INCLUDES = -I/usr/include/pacemaker -I/usr/include/heartbeat/ $(GLIB_CFLAGS)
endif
-INCLUDES = -I$(TOPDIR)/include -I. $(PCMK_INCLUDES)
+INCLUDES = -I/usr/include/libxml2 -I$(TOPDIR)/include -I. $(PCMK_INCLUDES)
LIBO2CB_LIBS = -L$(TOPDIR)/libo2cb -lo2cb
LIBO2CB_DEPS = $(TOPDIR)/libo2cb/libo2cb.a
LIBOCFS2_LIBS = -L$(TOPDIR)/libocfs2 -locfs2
diff -Nuard ocfs2-tools-1.4.3.orig/ocfs2_controld/pacemaker.c ocfs2-tools-1.4.3/ocfs2_controld/pacemaker.c
--- ocfs2-tools-1.4.3.orig/ocfs2_controld/pacemaker.c 2009-05-06 03:36:57.000000000 +0200
+++ ocfs2-tools-1.4.3/ocfs2_controld/pacemaker.c 2009-09-30 08:22:22.000000000 +0200
@@ -22,6 +22,7 @@
#include <bzlib.h>
+#include <corosync/corodefs.h>
#include <pacemaker/crm_config.h>
/* heartbeat support is irrelevant here */
#undef SUPPORT_HEARTBEAT
@@ -155,7 +156,7 @@
crm_log_init("ocfs2_controld", LOG_INFO, FALSE, TRUE, 0, NULL);
if(init_ais_connection(NULL, NULL, NULL, &local_node_uname, &our_nodeid) == FALSE) {
- log_error("Connection to our AIS plugin (%d) failed", CRM_SERVICE);
+ log_error("Connection to our AIS plugin (%d) failed", PCMK_SERVICE);
return -1;
}

View File

@ -1,12 +0,0 @@
diff -ru ocfs2-tools-1.4.3.orig/ocfs2_controld/Makefile ocfs2-tools-1.4.3/ocfs2_controld/Makefile
--- ocfs2-tools-1.4.3.orig/ocfs2_controld/Makefile 2010-02-14 15:03:18.000000000 +0000
+++ ocfs2-tools-1.4.3/ocfs2_controld/Makefile 2010-02-14 15:03:49.000000000 +0000
@@ -67,7 +67,7 @@
ocfs2_controld.pcmk: $(PCMK_DAEMON_OBJS) $(LIBO2CB_DEPS)
$(LINK) $(GLIB_LIBS) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) \
$(OPENAIS_LIBS) $(COROSYNC_LIBS) \
- $(DLMCONTROL_LIBS) -lcrmcluster -lstonithd
+ $(DLMCONTROL_LIBS) -lcrmcluster -lcrmcommon
ocfs2_controld.cman: $(CMAN_DAEMON_OBJS) $(LIBO2CB_DEPS)
$(LINK) $(LIBO2CB_LIBS) $(COM_ERR_LIBS) $(OPENAIS_LIBS) \

View File

@ -1,460 +0,0 @@
diff -Nuard ocfs2-tools-1.4.2.orig/vendor/common/o2cb.ocf ocfs2-tools-1.4.2/vendor/common/o2cb.ocf
--- ocfs2-tools-1.4.2.orig/vendor/common/o2cb.ocf 1970-01-01 01:00:00.000000000 +0100
+++ ocfs2-tools-1.4.2/vendor/common/o2cb.ocf 2009-09-15 06:30:58.000000000 +0200
@@ -0,0 +1,456 @@
+#!/bin/bash
+# Copyright (c) 2008 Andrew Beekhof
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like. Any license provided herein, whether implied or
+# otherwise, applies only to this software file. Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+#
+#######################################################################
+
+# OCF initialization
+. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
+
+# Parameter defaults
+: ${OCF_RESKEY_stack:="pcmk"}
+: ${OCF_RESKEY_sysfs:="/sys/fs"}
+: ${OCF_RESKEY_daemon_timeout:="10"}
+: ${OCF_RESKEY_configfs:="/sys/kernel/config"}
+: ${OCF_RESKEY_CRM_meta_gloablly_unique:="false"}
+
+# Common variables
+DAEMON="/sbin/ocfs2_controld.${OCF_RESKEY_stack}"
+CLUSTER_STACK_FILE="${OCF_RESKEY_sysfs}/ocfs2/cluster_stack"
+LOADED_PLUGINS_FILE="${OCF_RESKEY_sysfs}/ocfs2/loaded_cluster_plugins"
+
+#
+# Check to see if a filesystem driver is loaded.
+# 0 is loaded, 1 is not.
+#
+driver_filesystem() {
+ if [ -z "$1" ]
+ then
+ ocf_log err "driver_filesystem(): Missing an argument"
+ exit 1
+ fi
+ FSNAME="$1"
+
+ FSOUT="$(awk '(NF == 1 && $1 ~ /^'$FSNAME'$/) || $2 ~ /^'$FSNAME'$/{
+ print $1;exit
+ }' /proc/filesystems 2>/dev/null)"
+
+ test -n "$FSOUT"
+ return $?
+}
+
+#
+# Check to see if a filesystem of type $1 is mounted at $2.
+#
+# 0 is mounted, 1 is not.
+#
+check_filesystem()
+{
+ if [ "$#" != "2" -o -z "$1" -o -z "$2" ]
+ then
+ ocf_log err "check_filesystem(): Missing arguments"
+ exit 4
+ fi
+ FSNAME="$1"
+ MOUNTPOINT="$2"
+
+ FULL_MOUNTSEARCH="`echo "$MOUNTPOINT" | sed -e 's/\//\\\\\//g'`"
+ MOUNTOUT="`awk '$2 ~ /^'$FULL_MOUNTSEARCH'$/ && $3 ~ /^'$FSNAME'$/{print $2; exit}' < /proc/mounts 2>/dev/null`"
+ test -n "$MOUNTOUT"
+ return $?
+}
+
+#
+# Unload a filesystem driver.
+# Be careful to notice if the driver is built-in and do nothing.
+#
+# 0 is success, 1 is error, 2 is already unloaded.
+#
+unload_filesystem()
+{
+ if [ "$#" != "1" -o -z "$1" ]
+ then
+ ocf_log err "unload_filesystem(): Missing an argument"
+ return 1
+ fi
+ FSNAME="$1"
+
+ driver_filesystem "$FSNAME" || return 2
+
+ MODOUT="`awk '$1 ~ /^'$FSNAME'$/{print $1,$3;exit}' < /proc/modules 2>/dev/null`"
+ if [ -z "$MODOUT" ]; then
+ # The driver is built in, we can't unload it.
+ return 0
+ fi
+
+ case "$MODOUT" in
+ $FSNAME\ 0)
+ ;;
+ $FSNAME\ *)
+ # The driver is busy, leave it alone
+ ocf_log err "Module $FSNAME is still in use"
+ return 1
+ ;;
+ *)
+ ocf_log err "Invalid module parsing! "
+ return 1
+ ;;
+ esac
+
+ modprobe -rs "$FSNAME"
+ if [ "$?" != 0 ]; then
+ ocf_log err "Unable to unload module: $FSNAME"
+ return 1
+ fi
+
+ return 0
+}
+
+status_daemon()
+{
+ PID=`pidof "$DAEMON"`
+ if [ -n "$PID" ]; then
+ return $OCF_SUCCESS
+ fi
+ return $OCF_NOT_RUNNING
+}
+
+bringup_daemon()
+{
+ if [ ! -e "$DAEMON" ]; then
+ ocf_log err "Required binary not found: $DAEMON"
+ return $OCF_ERR_INSTALLED
+ fi
+
+ "$DAEMON"; rc=$?
+ if [ $rc != 0 ]; then
+ ocf_log err "Could not start $DAEMON"
+ return $OCF_ERR_GENERIC
+ fi
+
+ sleep 1
+ COUNT=0
+ rc=$OCF_NOT_RUNNING
+
+ while [ $rc = $OCF_NOT_RUNNING ]; do
+ COUNT=`expr $COUNT + 1`
+ if [ $COUNT -gt $OCF_RESKEY_daemon_timeout ]; then
+ ocf_log err "`basename $DAEMON` did not come up"
+ ps axf | grep -C 3 $$
+ return $OCF_ERR_GENERIC
+ fi
+ status_daemon; rc=$?
+ sleep 1
+ done
+
+ return $rc
+}
+
+kill_daemon()
+{
+ status_daemon; rc=$?
+ if [ $rc != $OCF_SUCCESS ]; then
+ return $rc
+ fi
+
+ ocf_log info "Stopping `basename "$DAEMON"`"
+ killproc "$DAEMON"
+
+ while [ $rc = $OCF_NOT_RUNNING ]; do
+ sleep 1
+ status_daemon; rc=$?
+ done
+
+ return $OCF_SUCCESS
+}
+
+#
+# Unload a module
+# 0 is success, 1 is error, 2 is not loaded
+#
+unload_module()
+{
+ if [ "$#" -lt "1" -o -z "$1" ]
+ then
+ ocf_log err "unload_module(): Requires an argument"
+ return 1
+ fi
+ MODNAME="$1"
+
+ MODOUT="`awk '$1 ~ /^'$MODNAME'$/{print $1,$3;exit}' < /proc/modules 2>/dev/null`"
+ if [ -z "$MODOUT" ]
+ then
+ return 2
+ fi
+
+ case "$MODOUT" in
+ $MODNAME\ 0)
+ ;;
+ $MODNAME\ *)
+ return 2
+ ;;
+ *)
+ ocf_log err "Invalid module parsing!"
+ return 1
+ ;;
+ esac
+
+ modprobe -rs "$MODNAME"
+ if [ "$?" != 0 ]; then
+ ocf_log err "Unable to unload module \"$MODNAME\""
+ return 1
+ fi
+
+ return 0
+}
+
+o2cb_start() {
+
+ o2cb_monitor; rc=$?
+ if [ $rc != $OCF_NOT_RUNNING ]; then
+ return $rc
+ fi
+
+ ocf_log info "Starting $OCF_RESOURCE_INSTANCE"
+
+ if [ ! -e "$CLUSTER_STACK_FILE" ]; then
+ modprobe -s ocfs2_stackglue
+ if [ $? != 0 ]; then
+ ocf_log err "Could not load ocfs2_stackglue"
+ return $OCF_ERR_INSTALLED
+ fi
+ fi
+
+ SP_OUT="$(awk '/^'user'$/{print; exit}' "$LOADED_PLUGINS_FILE" 2>/dev/null)"
+ if [ -z "$SP_OUT" ]
+ then
+ modprobe -s ocfs2_stack_user
+ if [ $? != 0 ]; then
+ ocf_log err "Could not load ocfs2_stack_user"
+ return $OCF_ERR_INSTALLED
+ fi
+ fi
+
+ SP_OUT="$(awk '/^'user'$/{print; exit}' "$LOADED_PLUGINS_FILE" 2>/dev/null)"
+ if [ -z "$SP_OUT" ]; then
+ ocf_log err "Switch to userspace stack unsuccessful"
+ return $OCF_ERR_INSTALLED
+ fi
+
+ if [ -f "$CLUSTER_STACK_FILE" ]; then
+ echo "$OCF_RESKEY_stack" >"$CLUSTER_STACK_FILE"
+ if [ $? != 0 ]; then
+ ocf_log err "Userspace stack '$OCF_RESKEY_stack' not supported"
+ return $OCF_ERR_INSTALLED
+ fi
+ else
+ ocf_log err "Switch to userspace stack not supported"
+ return $OCF_ERR_INSTALLED
+ fi
+
+ driver_filesystem ocfs2; rc=$?
+ if [ $rc != 0 ]; then
+ modprobe -s ocfs2
+ if [ "$?" != 0 ]; then
+ ocf_log err "Unable to load ocfs2 module"
+ return $OCF_ERR_INSTALLED
+ fi
+ fi
+
+ bringup_daemon
+ return $?
+}
+
+o2cb_stop() {
+ o2cb_monitor; rc=$?
+ case $rc in
+ $OCF_NOT_RUNNING) return $OCF_SUCCESS;;
+ esac
+
+ ocf_log info "Stopping $OCF_RESOURCE_INSTANCE"
+
+ kill_daemon
+ if [ $? != 0 ]; then
+ ocf_log err "Unable to unload modules: the cluster is still online"
+ return $OCF_ERR_GENERIC
+ fi
+
+ unload_filesystem ocfs2
+ if [ $? = 1 ]; then
+ ocf_log err "Unable to unload ocfs2 module"
+ return $OCF_ERR_GENERIC
+ fi
+
+ # If we can't find the stack glue, we have nothing to do.
+ [ ! -e "$LOADED_PLUGINS_FILE" ] && return $OCF_SUCCESS
+
+ while read plugin
+ do
+ unload_module "ocfs2_stack_${plugin}"
+ if [ $? = 1 ]; then
+ ocf_log err "Unable to unload ocfs2_stack_${plugin}"
+ return $OCF_ERR_GENERIC
+ fi
+ done <"$LOADED_PLUGINS_FILE"
+
+ unload_module "ocfs2_stackglue"
+ if [ $? = 1 ]; then
+ ocf_log err "Unable to unload ocfs2_stackglue"
+ return $OCF_ERR_GENERIC
+ fi
+
+ # Dont unmount configfs - its always in use by libdlm
+}
+
+o2cb_monitor() {
+ o2cb_validate
+
+ # Assume that ocfs2_controld will terminate if any of the conditions below are met
+
+ driver_filesystem configfs; rc=$?
+ if [ $rc != 0 ]; then
+ ocf_log info "configfs not laoded"
+ return $OCF_NOT_RUNNING
+ fi
+
+ check_filesystem configfs "${OCF_RESKEY_configfs}"; rc=$?
+ if [ $rc != 0 ]; then
+ ocf_log info "configfs not mounted"
+ return $OCF_NOT_RUNNING
+ fi
+
+ if [ ! -e "$LOADED_PLUGINS_FILE" ]; then
+ ocf_log info "Stack glue driver not loaded"
+ return $OCF_NOT_RUNNING
+ fi
+
+ grep user "$LOADED_PLUGINS_FILE" >/dev/null 2>&1; rc=$?
+ if [ $rc != 0 ]; then
+ ocf_log err "Wrong stack `cat $LOADED_PLUGINS_FILE`"
+ return $OCF_ERR_INSTALLED
+ fi
+
+ driver_filesystem ocfs2; rc=$?
+ if [ $rc != 0 ]; then
+ ocf_log info "ocfs2 not loaded"
+ return $OCF_NOT_RUNNING
+ fi
+
+ status_daemon
+ return $?
+}
+
+o2cb_usage() {
+ echo "usage: $0 {start|stop|monitor|validate-all|meta-data}"
+ echo " Expects to have a fully populated OCF RA-compliant environment set."
+ echo " In particualr, a value for OCF_ROOT"
+}
+
+o2cb_validate() {
+ : TODO: check for gloablly_unique=true and return OCF_ERR_CONFIGURED
+ case ${OCF_RESKEY_CRM_meta_gloablly_unique} in
+ yes|Yes|true|True|1)
+ ocf_log err "$OCF_RESOURCE_INSTANCE must be configured with the gloablly_unique=false meta attribute"
+ exit $OCF_ERR_CONFIGURED
+ ;;
+ esac
+
+ return $OCF_SUCCESS
+}
+
+meta_data() {
+ cat <<END
+<?xml version="1.0"?>
+<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
+<resource-agent name="o2cb">
+ <version>1.0</version>
+ <shortdesc lang="en">o2cb resource agent</shortdesc>
+ <longdesc lang="en">
+This is a o2cb Resource Agent. It runs o2cb daemon as a instance of anonymous clone.
+ </longdesc>
+ <parameters>
+
+ <parameter name="sysfs" unique="0">
+ <longdesc lang="en">
+Location where sysfs is mounted
+ </longdesc>
+ <shortdesc lang="en">Sysfs location</shortdesc>
+ <content type="string" default="/sys/fs"/>
+ </parameter>
+
+ <parameter name="configfs" unique="0">
+ <longdesc lang="en">
+Location where configfs is mounted
+ </longdesc>
+ <shortdesc lang="en">Configfs location</shortdesc>
+ <content type="string" default="/sys/kernel/config"/>
+ </parameter>
+
+ <parameter name="stack" unique="0">
+ <longdesc lang="en">
+Which userspace stack to use. Known values: pcmk, cman
+ </longdesc>
+ <shortdesc lang="en">Userspace stack</shortdesc>
+ <content type="string" default="pcmk"/>
+ </parameter>
+
+ <parameter name="daemon_timeout" unique="0">
+ <longdesc lang="en">
+Number of seconds to allow the control daemon to come up
+ </longdesc>
+ <shortdesc lang="en">Daemon Timeout</shortdesc>
+ <content type="string" default="10"/>
+ </parameter>
+
+ </parameters>
+ <actions>
+ <action name="start" timeout="90" />
+ <action name="stop" timeout="100" />
+ <action name="monitor" timeout="20" depth="0"/>
+ <action name="meta-data" timeout="5" />
+ <action name="validate-all" timeout="30" />
+ </actions>
+</resource-agent>
+END
+}
+
+case $__OCF_ACTION in
+meta-data) meta_data
+ exit $OCF_SUCCESS
+ ;;
+start) o2cb_start
+ ;;
+stop) o2cb_stop
+ ;;
+monitor) o2cb_monitor
+ ;;
+validate-all) o2cb_validate
+ ;;
+usage|help) o2cb_usage
+ exit $OCF_SUCCESS
+ ;;
+*) o2cb_usage
+ exit $OCF_ERR_UNIMPLEMENTED
+ ;;
+esac
+
+exit $?

View File

@ -0,0 +1,13 @@
diff --git a/tunefs.ocfs2/op_query.c b/tunefs.ocfs2/op_query.c
index 295c185b..40394d15 100644
--- a/tunefs.ocfs2/op_query.c
+++ b/tunefs.ocfs2/op_query.c
@@ -339,7 +339,7 @@ static int query_run(struct tunefs_operation *op, ocfs2_filesys *fs,
register_printf_function('O', handle_ro_compat, handle_arginfo);
query_fs = fs;
- fprintf(stdout, fmt);
+ fprintf(stdout, fmt, "dummy");
query_fs = NULL;
ocfs2_free(&fmt);

View File

@ -1,144 +1,151 @@
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%global with_console %{?_without_console: 0} %{?!_without_console: 1}
## define alphatag 20080221git
Summary: Tools for managing the Ocfs2 cluster file system
Summary: Tools for managing the Oracle Cluster Filesystem 2
Name: ocfs2-tools
Version: 1.6.3
Release: 2%{?alphatag:.%{alphatag}}%{?dist}
Version: 1.8.5
Release: 3%{?dist}
License: GPLv2
Group: System Environment/Base
Source0: http://oss.oracle.com/projects/ocfs2-tools/dist/files/source/v1.6/%{name}-%{version}.tar.gz
Patch0: minor_build_fixes.diff
Patch1: o2cb_pcmk.diff
Patch2: no_stonithd.diff
URL: http://oss.oracle.com/projects/ocfs2-tools/
Requires(post): chkconfig
Requires(preun): chkconfig
Requires(preun): initscripts
Requires: bash, coreutils, net-tools, modutils
Requires: e2fsprogs, chkconfig, glib2 >= 2.2.3
Requires: redhat-lsb
Source0: https://github.com/markfasheh/%{name}/archive/%{name}-%{version}/%{name}-%{version}.tar.gz
# applied in upstream git 0ffd58b2
Patch0: 0001-fsck.ocfs2-fix-compile-error-when-glibc-upgrade.patch
# https://github.com/markfasheh/ocfs2-tools/issues/18#issuecomment-360449375
Patch1: ocfs2-tools-1.8.5-format-fortify.patch
# applied in upstream git e686b801
Patch2: 0001-ocfs2console-explicitly-specified-link-libraries.patch
# applied in upstream git 70aec706
Patch3: 0001-Update-FSF-address-in-GPL2-license.patch
# patch3 missed a single file ipwidget.py
# applied in upstream git 460afefe
Patch4: 0001-Update-FSF-address-in-ipwidget.py.patch
URL: https://github.com/markfasheh/ocfs2-tools
Requires: bash
Requires: coreutils
Requires: net-tools
Requires: util-linux
Requires: e2fsprogs
Requires: glib2 >= 2.2.3
Provides: ocfs2-tools-pcmk = %{version}
Obsoletes: ocfs2-tools-pcmk < 1.6.3-1
BuildRequires: libuuid-devel, libcom_err-devel, libblkid-devel
BuildRequires: glib2-devel >= 2.2.3, compat-readline5-devel
BuildRequires: pygtk2 >= 1.99.16, python-devel >= 2.5, desktop-file-utils
BuildRequires: corosynclib-devel, openaislib-devel, clusterlib-devel
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: autoconf, automake
%{?systemd_requires}
BuildRequires: systemd
BuildRequires: libuuid-devel
BuildRequires: libcom_err-devel
BuildRequires: libblkid-devel
BuildRequires: glib2-devel >= 2.2.3
BuildRequires: readline-devel
BuildRequires: pacemaker-libs-devel
BuildRequires: dlm-devel
BuildRequires: libaio-devel
BuildRequires: pygtk2 >= 1.99.16
BuildRequires: python2-devel >= 2.5
BuildRequires: corosynclib-devel
%description
Programs to manage the Ocfs2 cluster file system, including mkfs.ocfs2,
Programs to manage the OCFS2 cluster file system, including mkfs.ocfs2,
tunefs.ocfs2 and fsck.ocfs2.
Ocfs2 is a general purpose extent based shared disk cluster file
OCFS2 is a general purpose extent based shared disk cluster file
system. It supports 64 bit inode numbers, and has automatically
extending metadata groups which may also make it attractive for
non-clustered use. Ocfs2 leverages some well tested kernel
non-clustered use. OCFS2 leverages some well tested kernel
technologies, such as JBD - the same journaling subsystem in use by
ext3.
%if %{with_console}
%package -n ocfs2console
Summary: GUI frontend for Ocfs2 management
Group: System Environment/Kernel
Requires: e2fsprogs, glib2 >= 2.2.3, vte >= 0.11.10, pygtk2 >= 1.99.16
Requires: python >= 2.5, %{name} = %{version}-%{release}
Summary: GUI frontend for OCFS2 management
Requires: e2fsprogs
Requires: glib2 >= 2.2.3
Requires: vte >= 0.11.10
Requires: pygtk2 >= 1.99.16
Requires: python >= 2.5
Requires: %{name}%{?_isa} = %{version}-%{release}
%description -n ocfs2console
Ocfs2console can make it easier to manage an Ocfs2 cluster by
ocfs2console can make it easier to manage an OCFS2 cluster by
providing a gui front-end to common tasks, including initial cluster
setup. In addition to cluster setup, Ocfs2console can format and
mount Ocfs2 volumes.
setup. In addition to cluster setup, ocfs2console can format and
mount OCFS2 volumes.
%endif
%package devel
Summary: Headers and static archives for ocfs2-tools
Group: Development/Libraries
Requires: e2fsprogs-devel, glib2-devel >= 2.2.3, pkgconfig
Requires: %{name} = %{version}-%{release}
Provides: %{name}-static = %{version}-%{release}
Requires: e2fsprogs-devel
Requires: glib2-devel >= 2.2.3
Requires: pkgconfig
Requires: %{name}%{?_isa} = %{version}-%{release}
Provides: %{name}-static%{?_isa} = %{version}-%{release}
%description devel
ocfs2-tools-devel contains the libraries and header files needed to
develop Ocfs2 filesystem-specific programs.
%package cman
Summary: Tools for managing the Ocfs2 cluster file system (cman component)
Group: System Environment/Base
Requires: cman >= 3.0.0-1
Requires: %{name} = %{version}-%{release}
%description cman
ocfs2-tools-cman contains the daemon required to use Ocfs2 with
cman cluster manager
develop OCFS2 filesystem-specific programs.
%prep
%setup -q
%setup -q -n %{name}-%{name}-%{version}
%patch3 -p1
%patch4 -p1
%patch0 -p1
%patch1 -p1
%patch2 -p1
# remove -Wno-format to prevent conflict with rpm optflags
sed -i -e 's/-Wno-format//g' {o2info,o2image,o2monitor}/Makefile
%build
export CPPFLAGS="-I%{_includedir}/readline5" LDFLAGS="-L%{_libdir}/readline5"
./autogen.sh
%{configure} \
%if ! %{with_console}
--enable-ocfs2console=no \
%if %{with_console}
--enable-ocfs2console=yes \
%endif
--enable-dynamic-fsck=yes
# parallel build currently fails, so no %{_smp_mflags}
# parallel build currently fails, so no %%{_smp_mflags}
CFLAGS="$(echo '%{optflags}')" make
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
%make_install
mkdir -p %{buildroot}/%{_initrddir}
cp -f vendor/common/o2cb.init %{buildroot}/%{_initrddir}/o2cb
cp -f vendor/common/ocfs2.init %{buildroot}/%{_initrddir}/ocfs2
mkdir -p %{buildroot}/etc/sysconfig
cp -f vendor/common/o2cb.sysconfig %{buildroot}/etc/sysconfig/o2cb
mkdir -p %{buildroot}/etc/udev/rules.d
cp -f vendor/common/51-ocfs2.rules \
%{buildroot}/etc/udev/rules.d/51-ocfs2.rules
mkdir -p %{buildroot}/usr/lib/ocf/resource.d/ocfs2
cp -f vendor/common/o2cb.ocf \
%{buildroot}/usr/lib/ocf/resource.d/ocfs2/o2cb
chmod 0755 %{buildroot}/usr/lib/ocf/resource.d/ocfs2/o2cb
mkdir -p %{buildroot}%{_sysconfdir}/ocfs2
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
cp -p vendor/common/o2cb.sysconfig %{buildroot}%{_sysconfdir}/sysconfig/o2cb
mkdir -p %{buildroot}%{_udevrulesdir}
cp -p vendor/common/51-ocfs2.rules \
%{buildroot}%{_udevrulesdir}
rm -f %{buildroot}/sbin/ocfs2_controld.pcmk
# for systemd
mkdir -p %{buildroot}/sbin
cp -p vendor/common/{o2cb,ocfs2}.init %{buildroot}/sbin
mkdir -p %{buildroot}%{_unitdir}
cp -p vendor/common/{o2cb,ocfs2}.service %{buildroot}%{_unitdir}
sed -i -e 's/network\.service/network-online.target/' %{buildroot}%{_unitdir}/o2cb.service
chmod 644 $RPM_BUILD_ROOT/%{_libdir}/*.a
chmod 644 %{buildroot}/%{_libdir}/*.a
%if %{with_console}
%{__python} -c "import compileall; compileall.compile_dir('%{buildroot}/%{python_sitearch}/ocfs2interface', ddir='%{python_sitearch}/ocfs2interface')"
# rpm autostripper needs to see these as executable
chmod 755 %{buildroot}/%{python_sitearch}/ocfs2interface/*.so
%endif
%clean
rm -rf %{buildroot}
%post
/sbin/chkconfig --add o2cb
/sbin/chkconfig --add ocfs2
%systemd_post {o2cb,ocfs2}.service
%preun
if [ $1 = 0 ]; then # execute this only if we are NOT doing an upgrade
/sbin/service ocfs2 stop >/dev/null 2>&1 || :
/sbin/service o2cb stop >/dev/null 2>&1 || :
/sbin/chkconfig --del ocfs2
/sbin/chkconfig --del o2cb
fi
%systemd_preun {o2cb,ocfs2}.service
%postun
%systemd_postun {o2cb,ocfs2}.service
%files
%defattr(-,root,root,-)
%doc README.O2CB COPYING CREDITS MAINTAINERS
%doc README.O2CB CREDITS MAINTAINERS
%doc documentation/users_guide.txt
%license COPYING
/sbin/o2cb
/sbin/o2cluster
%{_sbindir}/o2hbmonitor
%{_bindir}/o2info
/sbin/fsck.ocfs2
/sbin/mkfs.ocfs2
/sbin/mounted.ocfs2
@ -148,27 +155,17 @@ fi
/sbin/mount.ocfs2
/sbin/ocfs2_hb_ctl
/sbin/o2image
%{_initrddir}/o2cb
%{_initrddir}/ocfs2
%config(noreplace) /etc/udev/rules.d/51-ocfs2.rules
%config(noreplace) /etc/sysconfig/o2cb
%{_mandir}/man7/o2cb.7.gz
%{_mandir}/man8/debugfs.ocfs2.8.gz
%{_mandir}/man8/fsck.ocfs2.8.gz
%{_mandir}/man8/fsck.ocfs2.checks.8.gz
%{_mandir}/man8/mkfs.ocfs2.8.gz
%{_mandir}/man8/tunefs.ocfs2.8.gz
%{_mandir}/man8/mount.ocfs2.8.gz
%{_mandir}/man8/mounted.ocfs2.8.gz
%{_mandir}/man8/o2cb_ctl.8.gz
%{_mandir}/man8/ocfs2_hb_ctl.8.gz
%{_mandir}/man8/o2image.8.gz
%dir %{_prefix}/lib/ocf/resource.d/ocfs2
%{_prefix}/lib/ocf/resource.d/ocfs2/o2cb
/sbin/o2cb.init
/sbin/ocfs2.init
%{_unitdir}/o2cb.service
%{_unitdir}/ocfs2.service
%{_sysconfdir}/ocfs2
%{_udevrulesdir}/51-ocfs2.rules
%config(noreplace) %{_sysconfdir}/sysconfig/o2cb
%{_mandir}/man*/*
%if %{with_console}
%files -n ocfs2console
%defattr(-,root,root,-)
%dir %{python_sitearch}/ocfs2interface
%{python_sitearch}/ocfs2interface/*
%{_sbindir}/ocfs2console
@ -176,7 +173,6 @@ fi
%endif
%files devel
%defattr(-,root,root,-)
%{_libdir}/*.a
%{_libdir}/pkgconfig/*.pc
%dir %{_includedir}/ocfs2-kernel
@ -188,11 +184,23 @@ fi
%{_includedir}/o2dlm/*
%{_includedir}/ocfs2/*
%files cman
%defattr(-,root,root,-)
/sbin/ocfs2_controld.cman
%changelog
* Tue Feb 6 2018 Robin Lee <cheeselee@fedoraproject.org> - 1.8.5-3
- Remove Group tags
- Fix FSF address in files
- Move udev rule to %%{_udevrulesdir}
- Add needed %%{?_isa}
- BR python2-devel
* Mon Jan 29 2018 Robin Lee <cheeselee@fedoraproject.org> - 1.8.5-2
- Fix build for f28
- Move COPYING to %%license
- Use %%make_install
- one BR or R per line
* Tue Mar 28 2017 Robin Lee <cheeselee@fedoraproject.org> - 1.8.5-1
- Update to 1.8.5
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild

View File

@ -1 +1 @@
935278d269cb86bdaa6a638f37bdd68e ocfs2-tools-1.6.3.tar.gz
SHA512 (ocfs2-tools-1.8.5.tar.gz) = 94153af0570dafd60c4f6eb31d53ad222ec1e001acb1b29333cef3eafd0a134921566b8dcbd148b4b4af8067dd7419d5bd8d8cd3fef87ab0efcc6c8fb304d22d