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

Zhen Ren zren at suse.com
Sun Jul 26 20:14:52 PDT 2015


Most code of this patch is for common part, with a little touch on vendor.
It looks good for me, works well on sles12.

Reviewed-by: Eric Ren <zren at suse.com>
 
 >>>
> 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).s 
> rc.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 
>   
 



--
Eric, Ren




More information about the Ocfs2-tools-devel mailing list