All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Price <anprice@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH v2] gfs2-utils: Fix hang on withdraw
Date: Tue, 4 Aug 2015 17:44:51 +0100	[thread overview]
Message-ID: <55C0EC03.2050001@redhat.com> (raw)
In-Reply-To: <1402936886.4019908.1438704355708.JavaMail.zimbra@redhat.com>

Hi Abhi,

Thanks for adding the docs, this looks good to me.

Cheers,
Andy

On 04/08/15 17:05, 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>
> ---
>   README.build                        |  9 +++++++++
>   gfs2/scripts/82-gfs2-withdraw.rules |  2 ++
>   gfs2/scripts/Makefile.am            |  5 +++++
>   gfs2/scripts/gfs2_wd_udev.sh        | 30 ++++++++++++++++++++++++++++++
>   4 files changed, 46 insertions(+)
>   create mode 100644 gfs2/scripts/82-gfs2-withdraw.rules
>   create mode 100755 gfs2/scripts/gfs2_wd_udev.sh
>
> 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
>



      reply	other threads:[~2015-08-04 16:44 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1242290245.4018648.1438704244053.JavaMail.zimbra@redhat.com>
2015-08-04 16:05 ` [Cluster-devel] [GFS2 PATCH v2] gfs2-utils: Fix hang on withdraw Abhijith Das
2015-08-04 16:44   ` Andrew Price [this message]

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=55C0EC03.2050001@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.