[Ocfs2-tools-devel] [PATCH 2/6] ocfs2-tools: add systemd support

Junxiao Bi junxiao.bi at oracle.com
Mon Jun 29 01:29:27 PDT 2015


When systemd is enabled, the old way to start/stop/status service
should be disabled, so move /etc/init.d/o2cb and /etc/init.d/ocfs2
to /sbin.

Signed-off-by: Junxiao Bi <junxiao.bi at oracle.com>
---
 vendor/common/Makefile                    |    4 ++-
 vendor/common/Vendor.make                 |    1 +
 vendor/common/o2cb.service                |   14 ++++++++
 vendor/common/ocfs2-tools.spec-generic.in |   55 +++++++++++++++++++++++------
 vendor/common/ocfs2.service               |   14 ++++++++
 vendor/fc7/Vendor.make                    |    1 +
 vendor/fc8/Vendor.make                    |    1 +
 vendor/fc9/Vendor.make                    |    1 +
 vendor/rhel4/Vendor.make                  |    1 +
 vendor/rhel5/Vendor.make                  |    1 +
 vendor/rhel6/Vendor.make                  |    1 +
 vendor/rhel7/Vendor.make                  |    1 +
 vendor/sles10/Vendor.make                 |    1 +
 vendor/sles9/Vendor.make                  |    1 +
 14 files changed, 85 insertions(+), 12 deletions(-)
 create mode 100644 vendor/common/o2cb.service
 create mode 100644 vendor/common/ocfs2.service

diff --git a/vendor/common/Makefile b/vendor/common/Makefile
index 864a71e..3c8902c 100644
--- a/vendor/common/Makefile
+++ b/vendor/common/Makefile
@@ -25,6 +25,8 @@ DIST_FILES =					\
 	ocfs2-tools.spec-generic.in		\
 	51-ocfs2.rules				\
 	Vendor.make				\
-	o2cb.sysconfig.5.in
+	o2cb.sysconfig.5.in		\
+	o2cb.service			\
+	ocfs2.service
 
 include $(TOPDIR)/Postamble.make
diff --git a/vendor/common/Vendor.make b/vendor/common/Vendor.make
index e92884e..2526cdc 100644
--- a/vendor/common/Vendor.make
+++ b/vendor/common/Vendor.make
@@ -20,6 +20,7 @@ $(TOPDIR)/ocfs2-tools-$(DIST_VERSION)-$(PKG_VERSION).$(VENDOR_EXTENSION).src.rpm
 		-e 's,@@PYVERSION@@,'$(PYVERSION)',g' \
 		-e 's,@@COMPILE_PY@@,'$(COMPILE_PY)',g' \
 		-e 's,@@CHKCONFIG_DEP@@,'$(CHKCONFIG_DEP)',g' \
+		-e 's,@@SYSTEMD_ENABLED@@,'$(SYSTEMD_ENABLED)',g' \
 		< "$(TOPDIR)/vendor/common/ocfs2-tools.spec-generic" \
 		> "$(TOPDIR)/vendor/common/ocfs2-tools.spec"
 	$(RPMBUILD) -bs --define "_sourcedir $(RPM_TOPDIR)" --define "_srcrpmdir $(RPM_TOPDIR)" "$(TOPDIR)/vendor/common/ocfs2-tools.spec"
diff --git a/vendor/common/o2cb.service b/vendor/common/o2cb.service
new file mode 100644
index 0000000..94e2b1a
--- /dev/null
+++ b/vendor/common/o2cb.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Load o2cb Modules
+Requires=network.service
+After=network.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/sbin/o2cb.init enable
+ExecStop=/sbin/o2cb.init disable
+ExecRestart=/sbin/o2cb.init restart
+
+[Install]
+WantedBy=multi-user.target
diff --git a/vendor/common/ocfs2-tools.spec-generic.in b/vendor/common/ocfs2-tools.spec-generic.in
index 4fabc8c..9527908 100644
--- a/vendor/common/ocfs2-tools.spec-generic.in
+++ b/vendor/common/ocfs2-tools.spec-generic.in
@@ -17,6 +17,7 @@
 
 %define build_ocfs2console	0
 %define compile_py		0
+%define systemd_enabled	@@SYSTEMD_ENABLED@@
 
 %if %{build_ocfs2console}
 %define compile_py		@@COMPILE_PY@@
@@ -80,9 +81,18 @@ make
 
 %install
 
-mkdir -p $RPM_BUILD_ROOT/etc/init.d
-cp -f vendor/common/o2cb.init $RPM_BUILD_ROOT/etc/init.d/o2cb
-cp -f vendor/common/ocfs2.init $RPM_BUILD_ROOT/etc/init.d/ocfs2
+%if %{systemd_enabled}
+	mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system
+	cp -f  vendor/common/o2cb.service $RPM_BUILD_ROOT/usr/lib/systemd/system/
+	cp -f  vendor/common/ocfs2.service $RPM_BUILD_ROOT/usr/lib/systemd/system/
+	mkdir -p $RPM_BUILD_ROOT/sbin
+	cp -f vendor/common/o2cb.init $RPM_BUILD_ROOT/sbin
+	cp -f vendor/common/ocfs2.init $RPM_BUILD_ROOT/sbin
+%else
+	mkdir -p $RPM_BUILD_ROOT/etc/init.d
+	cp -f vendor/common/o2cb.init $RPM_BUILD_ROOT/etc/init.d/o2cb
+	cp -f vendor/common/ocfs2.init $RPM_BUILD_ROOT/etc/init.d/ocfs2
+%endif
 if [ -f /etc/redhat-release ]
 then
     # Red Hat chkconfig is completely and utterly broken
@@ -104,14 +114,27 @@ rm -rf "$RPM_BUILD_ROOT"
 
 
 %post
-/sbin/chkconfig --add o2cb >/dev/null
-/sbin/chkconfig --add ocfs2 >/dev/null
+%if !%{systemd_enabled}
+	/sbin/chkconfig --add o2cb >/dev/null
+	/sbin/chkconfig --add ocfs2 >/dev/null
+%else
+	# clean up start/kill entry in /etc/rc*.d/ when upgrade.
+	if [ -f /etc/init.d/o2cb ]; then
+		/sbin/chkconfig --del o2cb >/dev/null
+	fi
+
+	if [ -f /etc/init.d/ocfs2 ]; then
+		/sbin/chkconfig --del ocfs2 >/dev/null
+	fi
+%endif
 
 %preun
-if [ $1 = 0 ]; then     # execute this only if we are NOT doing an upgrade
-	/sbin/chkconfig --del ocfs2 >/dev/null
-	/sbin/chkconfig --del o2cb >/dev/null
-fi
+%if !%{systemd_enabled}
+	if [ $1 = 0 ]; then     # execute this only if we are NOT doing an upgrade
+		/sbin/chkconfig --del ocfs2 >/dev/null
+		/sbin/chkconfig --del o2cb >/dev/null
+	fi
+%endif
 
 %files
 %defattr(-,root,root)
@@ -127,10 +150,17 @@ fi
 /sbin/o2image
 /sbin/o2cluster
 /sbin/ocfs2_hb_ctl
-/usr/bin/o2info
-/usr/sbin/o2hbmonitor
+%if %{systemd_enabled}
+/sbin/o2cb.init
+/sbin/ocfs2.init
+/usr/lib/systemd/system/o2cb.service
+/usr/lib/systemd/system/ocfs2.service
+%else
 /etc/init.d/o2cb
 /etc/init.d/ocfs2
+%endif
+/usr/bin/o2info
+/usr/sbin/o2hbmonitor
 %config(noreplace) /etc/sysconfig/o2cb
 /usr/share/man/man8/debugfs.ocfs2.8.gz
 /usr/share/man/man8/fsck.ocfs2.8.gz
@@ -172,6 +202,9 @@ fi
 
 
 %changelog
+* Thu Jun 18 2015 Junxiao Bi <junxiao.bi at oracle.com>
+- Add systemd support
+
 * Thu Jan 27 2005 Manish Singh <manish.singh at oracle.com>
 - Add ocfs2console
 
diff --git a/vendor/common/ocfs2.service b/vendor/common/ocfs2.service
new file mode 100644
index 0000000..768f806
--- /dev/null
+++ b/vendor/common/ocfs2.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Load ocfs2 Modules
+Requires=o2cb.service
+After=o2cb.service
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/sbin/ocfs2.init start
+ExecStop=/sbin/ocfs2.init stop
+ExecReload=/sbin/ocfs2.init restart
+
+[Install]
+WantedBy=multi-user.target
diff --git a/vendor/fc7/Vendor.make b/vendor/fc7/Vendor.make
index 025de08..a3002af 100644
--- a/vendor/fc7/Vendor.make
+++ b/vendor/fc7/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/fc7/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = fc7
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/fc8/Vendor.make b/vendor/fc8/Vendor.make
index 6a78602..ba9c4f0 100644
--- a/vendor/fc8/Vendor.make
+++ b/vendor/fc8/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/fc8/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = fc8
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/fc9/Vendor.make b/vendor/fc9/Vendor.make
index db9fde1..64d03fd 100644
--- a/vendor/fc9/Vendor.make
+++ b/vendor/fc9/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/fc9/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = fc9
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/rhel4/Vendor.make b/vendor/rhel4/Vendor.make
index 2245f44..5ce8e05 100644
--- a/vendor/rhel4/Vendor.make
+++ b/vendor/rhel4/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/rhel4/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = el4
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/rhel5/Vendor.make b/vendor/rhel5/Vendor.make
index fb5b591..8156000 100644
--- a/vendor/rhel5/Vendor.make
+++ b/vendor/rhel5/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/rhel5/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = el5
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/rhel6/Vendor.make b/vendor/rhel6/Vendor.make
index 8f4a470..20144a3 100644
--- a/vendor/rhel6/Vendor.make
+++ b/vendor/rhel6/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/rhel6/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = el6
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/rhel7/Vendor.make b/vendor/rhel7/Vendor.make
index b8fc25e..cc3925b 100644
--- a/vendor/rhel7/Vendor.make
+++ b/vendor/rhel7/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/rhel7/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = el7
+SYSTEMD_ENABLED = 1
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/sles10/Vendor.make b/vendor/sles10/Vendor.make
index 85969ea..56b1feb 100644
--- a/vendor/sles10/Vendor.make
+++ b/vendor/sles10/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/sles10/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = SLE10
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
diff --git a/vendor/sles9/Vendor.make b/vendor/sles9/Vendor.make
index 8cb0482..56be69f 100644
--- a/vendor/sles9/Vendor.make
+++ b/vendor/sles9/Vendor.make
@@ -4,6 +4,7 @@
 
 TOOLSARCH = $(shell $(TOPDIR)/vendor/sles9/rpmarch.guess tools $(TOPDIR))
 VENDOR_EXTENSION = SLE9
+SYSTEMD_ENABLED = 0
 
 include $(TOPDIR)/vendor/common/Vendor.make
 
-- 
1.7.9.5




More information about the Ocfs2-tools-devel mailing list