From: Andrew Price <anprice@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] gfs2-utils: Fix hang on withdraw
Date: Tue, 4 Aug 2015 12:06:16 +0100 [thread overview]
Message-ID: <55C09CA8.5090904@redhat.com> (raw)
In-Reply-To: <1807895749.3527110.1438630228383.JavaMail.zimbra@redhat.com>
Hi Abhi,
On 03/08/15 20:30, Abhijith Das wrote:
> 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>
> ---
> gfs2/scripts/82-gfs2-withdraw.rules | 2 ++
> gfs2/scripts/gfs2_wd_udev.sh | 30 ++++++++++++++++++++++++++++++
> 2 files changed, 32 insertions(+)
> create mode 100644 gfs2/scripts/82-gfs2-withdraw.rules
> create mode 100755 gfs2/scripts/gfs2_wd_udev.sh
Even if they're not getting installed in 'make install' the build system
will need to know about them, in gfs2/scripts/Makefile.am:
noinst_SCRIPTS = \
82-gfs2-withdraw.rules \
gfs2_wd_udev.sh
I think some documentation in README.build would be useful too, so that
package maintainers know why and where to install them.
> diff --git a/gfs2/scripts/82-gfs2-withdraw.rules b/gfs2/scripts/82-gfs2-withdraw.rules
> new file mode 100644
> index 0000000..c1ab02b
> --- /dev/null
> +++ b/gfs2/scripts/82-gfs2-withdraw.rules
> @@ -0,0 +1,2 @@
> +SUBSYSTEM=="gfs2", ACTION=="offline", RUN+="/bin/sh /sbin/gfs2_wd_udev.sh"
Perhaps that should be /usr/sbin instead of /sbin, after the whole
"UsrMove" thing.
Thanks,
Andy
> +
> 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
>
next prev parent reply other threads:[~2015-08-04 11:06 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-03 19:30 [Cluster-devel] [GFS2 PATCH] gfs2-utils: Fix hang on withdraw Abhijith Das
2015-08-04 11:06 ` Andrew Price [this message]
2015-08-04 14:40 ` Abhijith Das
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55C09CA8.5090904@redhat.com \
--to=anprice@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).