* Tue Aug 11 2015 Andrew Price <anprice@redhat.com> - 3.1.8-4
- gfs2-utils: Fix hang on withdraw - Install udev withdraw handler scripts
This commit is contained in:
		
							parent
							
								
									4f06f7e039
								
							
						
					
					
						commit
						b4080e636c
					
				| @ -12,7 +12,7 @@ | ||||
| 
 | ||||
| Name: gfs2-utils | ||||
| Version: 3.1.8 | ||||
| Release: 3%{?dist} | ||||
| Release: 4%{?dist} | ||||
| License: GPLv2+ and LGPLv2+ | ||||
| Group: System Environment/Kernel | ||||
| Summary: Utilities for managing the global file system (GFS2) | ||||
| @ -32,10 +32,12 @@ BuildRequires: check-devel | ||||
| Source: https://fedorahosted.org/released/gfs2-utils/gfs2-utils-%{version}.tar.gz | ||||
| URL: https://fedorahosted.org/cluster/wiki/HomePage | ||||
| Patch0: fsck_gfs2_replace_recent_i_goal_fixes_with_simple_logic.patch | ||||
| Patch1: gfs2_utils_Fix_hang_on_withdraw.patch | ||||
| 
 | ||||
| %prep | ||||
| %setup -q -n gfs2-utils-%{version} | ||||
| %patch0 -p 1 -b .fsck_gfs2_replace_recent_i_goal_fixes_with_simple_logic | ||||
| %patch1 -p 1 -b .gfs2_utils_Fix_hang_on_withdraw | ||||
| 
 | ||||
| %build | ||||
| ./autogen.sh | ||||
| @ -52,6 +54,10 @@ rm -f %{buildroot}/usr/sbin/gfs2_trace | ||||
| rm -f %{buildroot}/usr/sbin/gfs2_lockcapture | ||||
| rm -f %{buildroot}%{_mandir}/man8/gfs2_trace.8 | ||||
| rm -f %{buildroot}%{_mandir}/man8/gfs2_lockcapture.8 | ||||
| # Install withdraw helper scripts | ||||
| install -m 755 gfs2/scripts/gfs2_wd_udev.sh %{buildroot}%{_sbindir}/ | ||||
| install -D -m 644 gfs2/scripts/82-gfs2-withdraw.rules \ | ||||
| 	%{buildroot}%{_prefix}/lib/udev/rules.d/82-gfs2-withdraw.rules | ||||
| 
 | ||||
| %description | ||||
| The gfs2-utils package contains a number of utilities for creating, | ||||
| @ -68,10 +74,16 @@ file systems. | ||||
| %{_sbindir}/gfs2_convert | ||||
| %{_sbindir}/gfs2_edit | ||||
| %{_sbindir}/tunegfs2 | ||||
| %{_sbindir}/gfs2_wd_udev.sh | ||||
| %{_mandir}/man8/*gfs2* | ||||
| %{_mandir}/man5/* | ||||
| %{_prefix}/lib/udev/rules.d/82-gfs2-withdraw.rules | ||||
| 
 | ||||
| %changelog | ||||
| * Tue Aug 11 2015 Andrew Price <anprice@redhat.com> - 3.1.8-4 | ||||
| - gfs2-utils: Fix hang on withdraw | ||||
| - Install udev withdraw handler scripts | ||||
| 
 | ||||
| * Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.1.8-3 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										97
									
								
								gfs2_utils_Fix_hang_on_withdraw.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								gfs2_utils_Fix_hang_on_withdraw.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,97 @@ | ||||
| commit 4e9a8f12b74d61314e79904a0f02e42e99a98493 | ||||
| Author: Abhi Das <adas@redhat.com> | ||||
| Date:   Tue Aug 4 11:00:51 2015 -0500 | ||||
| 
 | ||||
|     gfs2-utils: Fix hang on withdraw | ||||
|      | ||||
|     Issuing a withdraw on a gfs2 filesystem causes a hang. When | ||||
|     gfs_controld was removed, the userspace functionality that | ||||
|     completes a withdraw operation went away. This causes gfs2 | ||||
|     kernel to hang waiting for a withdraw completion ack from | ||||
|     userspace. | ||||
|      | ||||
|     This patchset introduces a uevent-based shell script to do | ||||
|     the job that gfs_controld used to do on withdraw. An 'offline' | ||||
|     uevent triggers the execution of this script. This script | ||||
|     suspends the device associated with the filesystem and signals | ||||
|     a completed withdraw to the kernel. | ||||
|      | ||||
|     Resolves: rhbz#1225634 | ||||
|     Signed-off-by: Abhi Das <adas@redhat.com> | ||||
| 
 | ||||
| diff --git a/README.build b/README.build
 | ||||
| index f4ebe53..6487bae 100644
 | ||||
| --- a/README.build
 | ||||
| +++ b/README.build
 | ||||
| @@ -29,5 +29,14 @@ To install gfs2-utils, run:
 | ||||
|   | ||||
|      make install | ||||
|   | ||||
| +The following scripts (located in gfs2/scripts) are used to complete
 | ||||
| +the userland portion of the gfs2 withdraw feature using uevents. They
 | ||||
| +are not installed by 'make install' and need to be installed manually
 | ||||
| +or during rpm installation to the corresponding locations.
 | ||||
| +
 | ||||
| +	82-gfs2-withdraw.rules in /etc/udev/rules.d/
 | ||||
| +	gfs2_wd_udev.sh        in /usr/sbin/
 | ||||
| +
 | ||||
|  See also doc/README.contributing for details on submitting patches and | ||||
|  doc/README.tests for more details regarding the test suite. | ||||
| +
 | ||||
| diff --git a/gfs2/scripts/82-gfs2-withdraw.rules b/gfs2/scripts/82-gfs2-withdraw.rules
 | ||||
| new file mode 100644 | ||||
| index 0000000..2228615
 | ||||
| --- /dev/null
 | ||||
| +++ b/gfs2/scripts/82-gfs2-withdraw.rules
 | ||||
| @@ -0,0 +1,2 @@
 | ||||
| +SUBSYSTEM=="gfs2", ACTION=="offline", RUN+="/bin/sh /usr/sbin/gfs2_wd_udev.sh"
 | ||||
| +
 | ||||
| diff --git a/gfs2/scripts/Makefile.am b/gfs2/scripts/Makefile.am
 | ||||
| index 62fb2fe..dde906f 100644
 | ||||
| --- a/gfs2/scripts/Makefile.am
 | ||||
| +++ b/gfs2/scripts/Makefile.am
 | ||||
| @@ -3,3 +3,8 @@ MAINTAINERCLEANFILES = Makefile.in
 | ||||
|  dist_sbin_SCRIPTS = \ | ||||
|  	gfs2_lockcapture \ | ||||
|  	gfs2_trace | ||||
| +
 | ||||
| +noinst_SCRIPTS = \
 | ||||
| +	82-gfs2-withdraw.rules \
 | ||||
| +	gfs2_wd_udev.sh
 | ||||
| +
 | ||||
| diff --git a/gfs2/scripts/gfs2_wd_udev.sh b/gfs2/scripts/gfs2_wd_udev.sh
 | ||||
| new file mode 100755 | ||||
| index 0000000..ac3ce35
 | ||||
| --- /dev/null
 | ||||
| +++ b/gfs2/scripts/gfs2_wd_udev.sh
 | ||||
| @@ -0,0 +1,30 @@
 | ||||
| +#!/bin/sh
 | ||||
| +#
 | ||||
| +# Do not run this script manually. This script is called by udev on a gfs2
 | ||||
| +# withdraw uevent and is used to complete the withdraw action and notify the
 | ||||
| +# kernel.
 | ||||
| +#
 | ||||
| +
 | ||||
| +# Sanity checks
 | ||||
| +if [ "$SUBSYSTEM" != "gfs2" ] || [ "$LOCKPROTO" != "lock_dlm" ] ||
 | ||||
| +       [ -z "$DEVPATH" ] || [ "$ACTION" != "offline" ]
 | ||||
| +then
 | ||||
| +    exit 1 # Nothing to do here
 | ||||
| +fi
 | ||||
| +
 | ||||
| +# Try and suspend the device
 | ||||
| +SYSFS_TOPDIR="/sys"$DEVPATH
 | ||||
| +DM_NAME=$(cat "$SYSFS_TOPDIR/device/dm/name")
 | ||||
| +DM_DEV="/dev/mapper/"$DM_NAME
 | ||||
| +
 | ||||
| +if [ -z "$DM_DEV" ]
 | ||||
| +then
 | ||||
| +    /usr/bin/dmsetup suspend $DM_DEV
 | ||||
| +fi
 | ||||
| +
 | ||||
| +# Signal completion of withdraw
 | ||||
| +WD_ACK="$SYSFS_TOPDIR/lock_module/withdraw"
 | ||||
| +if [ -f "$WD_ACK" ]
 | ||||
| +then
 | ||||
| +    echo "1" > $WD_ACK
 | ||||
| +fi
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user