* [PATCH] multipath: don't let init script stop multipathd for root devices
@ 2010-03-25 17:52 Benjamin Marzinski
2010-03-26 2:04 ` Kiyoshi Ueda
0 siblings, 1 reply; 6+ messages in thread
From: Benjamin Marzinski @ 2010-03-25 17:52 UTC (permalink / raw)
To: device-mapper development
This patch modifies the redhat init script, so that it doesn't allow
multipathd to be stopped when the root device is on it.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
:100644 100644 ee776f0... e46b1b8... M multipathd/multipathd.init.redhat
multipathd/multipathd.init.redhat | 38 +++++++++++++++++++++++++++++++++++++-
1 file changed, 37 insertions(+), 1 deletion(-)
Index: multipath-tools-100322/multipathd/multipathd.init.redhat
===================================================================
--- multipath-tools-100322.orig/multipathd/multipathd.init.redhat
+++ multipath-tools-100322/multipathd/multipathd.init.redhat
@@ -2,7 +2,7 @@
#
# multipathd Starts the multipath daemon
#
-# chkconfig: - 13 87
+# chkconfig: - 06 87
# description: Manages device-mapper multipath devices
### BEGIN INIT INFO
@@ -17,6 +17,7 @@ prog=`basename $DAEMON`
initdir=/etc/rc.d/init.d
lockdir=/var/lock/subsys
sysconfig=/etc/sysconfig
+syspath=/sys/block
. $initdir/functions
@@ -25,6 +26,36 @@ test -r $sysconfig/$prog && . $sysconfig
RETVAL=0
+teardown_slaves()
+{
+pushd $1 > /dev/null
+if [ -d "slaves" ]; then
+for slave in slaves/*;
+do
+ if [ "$slave" = "slaves/*" ]; then
+ read dev < $1/dev
+ tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
+ if ! [ -z $tablename ]; then
+ echo "Root is on a multipathed device, multipathd can not be stopped"
+ exit 1
+ fi
+ else
+ local_slave=`readlink -f $slave`;
+ teardown_slaves $local_slave;
+ fi
+ done
+
+else
+ read dev < $1/dev
+ tablename=`dmsetup table --target multipath | sed -n "s/\(.*\): .* $dev .*/\1/p"`
+ if ! [ -z $tablename ]; then
+ echo "Root is on a multipathed device, multipathd can not be stopped"
+ exit 1
+ fi
+fi
+popd > /dev/null
+}
+
#
# See how we were called.
#
@@ -39,6 +70,11 @@ start() {
}
stop() {
+ root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/mtab)
+ dm_num=`dmsetup info -c --noheadings -o minor $root_dev`
+ root_dm_device="dm-$dm_num"
+ [ -d $syspath/$root_dm_device ] && teardown_slaves $syspath/$root_dm_device
+
echo -n $"Stopping $prog daemon: "
killproc $DAEMON
RETVAL=$?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] multipath: don't let init script stop multipathd for root devices
2010-03-25 17:52 [PATCH] multipath: don't let init script stop multipathd for root devices Benjamin Marzinski
@ 2010-03-26 2:04 ` Kiyoshi Ueda
2010-03-26 16:23 ` Benjamin Marzinski
0 siblings, 1 reply; 6+ messages in thread
From: Kiyoshi Ueda @ 2010-03-26 2:04 UTC (permalink / raw)
To: Benjamin Marzinski; +Cc: device-mapper development
Hi Ben,
On 03/26/2010 02:52 AM +0900, Benjamin Marzinski wrote:
> This patch modifies the redhat init script, so that it doesn't allow
> multipathd to be stopped when the root device is on it.
Why do you need to prevent stopping daemon by script-level forcibly?
I think that users/developers may want to restart the daemon at their
own risk when it starts to behave something wrong or they change
a configuration (since "reconfigure" may not be stable feature).
# Maybe others have different opinion but I often use "restart".
If you need this patch anyway, please add other options to stop/restart
the daemon forcibly. (e.g. adding force-stop/force-restart)
Thanks,
Kiyoshi Ueda
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] multipath: don't let init script stop multipathd for root devices
2010-03-26 2:04 ` Kiyoshi Ueda
@ 2010-03-26 16:23 ` Benjamin Marzinski
2010-03-30 0:11 ` Kiyoshi Ueda
0 siblings, 1 reply; 6+ messages in thread
From: Benjamin Marzinski @ 2010-03-26 16:23 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: device-mapper development
On Fri, Mar 26, 2010 at 11:04:22AM +0900, Kiyoshi Ueda wrote:
> Hi Ben,
>
> On 03/26/2010 02:52 AM +0900, Benjamin Marzinski wrote:
> > This patch modifies the redhat init script, so that it doesn't allow
> > multipathd to be stopped when the root device is on it.
>
> Why do you need to prevent stopping daemon by script-level forcibly?
> I think that users/developers may want to restart the daemon at their
> own risk when it starts to behave something wrong or they change
> a configuration (since "reconfigure" may not be stable feature).
>
> # Maybe others have different opinion but I often use "restart".
>
> If you need this patch anyway, please add other options to stop/restart
> the daemon forcibly. (e.g. adding force-stop/force-restart)
I can certainly add a force-stop/force-restart. This can currently be
accomplished by simply killing the daemon, but admittedly doing it
through the init script is cleaner and more obvious to users, and it's
necessary to allow package upgrades to immediately start using
multipathd on systems with multipathed root disks.
However, what is there that you need to restart the daemon for that
# service multipathd reload
won't fix, besides upgrading the package. If there is something, then
we should fix it. I only stop the daemon when I'm testing shutting
down, and upgrading source. Otherwise, I've been using reconfigure
without problems.
-Ben
>
> Thanks,
> Kiyoshi Ueda
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] multipath: don't let init script stop multipathd for root devices
2010-03-26 16:23 ` Benjamin Marzinski
@ 2010-03-30 0:11 ` Kiyoshi Ueda
2010-04-01 18:42 ` Benjamin Marzinski
0 siblings, 1 reply; 6+ messages in thread
From: Kiyoshi Ueda @ 2010-03-30 0:11 UTC (permalink / raw)
To: Benjamin Marzinski; +Cc: device-mapper development
Hi Ben,
On 03/27/2010 01:23 AM +0900, Benjamin Marzinski wrote:
> On Fri, Mar 26, 2010 at 11:04:22AM +0900, Kiyoshi Ueda wrote:
>> Hi Ben,
>>
>> On 03/26/2010 02:52 AM +0900, Benjamin Marzinski wrote:
>>> This patch modifies the redhat init script, so that it doesn't allow
>>> multipathd to be stopped when the root device is on it.
>> Why do you need to prevent stopping daemon by script-level forcibly?
>> I think that users/developers may want to restart the daemon at their
>> own risk when it starts to behave something wrong or they change
>> a configuration (since "reconfigure" may not be stable feature).
>>
>> # Maybe others have different opinion but I often use "restart".
>>
>> If you need this patch anyway, please add other options to stop/restart
>> the daemon forcibly. (e.g. adding force-stop/force-restart)
>
> I can certainly add a force-stop/force-restart. This can currently be
> accomplished by simply killing the daemon, but admittedly doing it
> through the init script is cleaner and more obvious to users, and it's
> necessary to allow package upgrades to immediately start using
> multipathd on systems with multipathed root disks.
>
> However, what is there that you need to restart the daemon for that
>
> # service multipathd reload
>
> won't fix, besides upgrading the package. If there is something, then
> we should fix it. I only stop the daemon when I'm testing shutting
> down, and upgrading source. Otherwise, I've been using reconfigure
> without problems.
I may be confusing you.
I know/understand that current reconfigure works well and if it doesn't
work we should fix it.
My point is that "why do you need to prevent stopping daemon
by script-level forcibly?".
As you mentioned above, killing the daemon through the init script
is cleaner and more obvious. So I think leaving something to stop
the daemon in the init script is more friendly for admins.
Thanks,
Kiyoshi Ueda
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] multipath: don't let init script stop multipathd for root devices
2010-03-30 0:11 ` Kiyoshi Ueda
@ 2010-04-01 18:42 ` Benjamin Marzinski
2010-04-02 2:20 ` Kiyoshi Ueda
0 siblings, 1 reply; 6+ messages in thread
From: Benjamin Marzinski @ 2010-04-01 18:42 UTC (permalink / raw)
To: Kiyoshi Ueda; +Cc: device-mapper development
On Tue, Mar 30, 2010 at 09:11:13AM +0900, Kiyoshi Ueda wrote:
> Hi Ben,
>
> On 03/27/2010 01:23 AM +0900, Benjamin Marzinski wrote:
> > On Fri, Mar 26, 2010 at 11:04:22AM +0900, Kiyoshi Ueda wrote:
> >> Hi Ben,
> >>
> >> On 03/26/2010 02:52 AM +0900, Benjamin Marzinski wrote:
> >>> This patch modifies the redhat init script, so that it doesn't allow
> >>> multipathd to be stopped when the root device is on it.
> >> Why do you need to prevent stopping daemon by script-level forcibly?
> >> I think that users/developers may want to restart the daemon at their
> >> own risk when it starts to behave something wrong or they change
> >> a configuration (since "reconfigure" may not be stable feature).
> >>
> >> # Maybe others have different opinion but I often use "restart".
> >>
> >> If you need this patch anyway, please add other options to stop/restart
> >> the daemon forcibly. (e.g. adding force-stop/force-restart)
> >
> > I can certainly add a force-stop/force-restart. This can currently be
> > accomplished by simply killing the daemon, but admittedly doing it
> > through the init script is cleaner and more obvious to users, and it's
> > necessary to allow package upgrades to immediately start using
> > multipathd on systems with multipathed root disks.
> >
> > However, what is there that you need to restart the daemon for that
> >
> > # service multipathd reload
> >
> > won't fix, besides upgrading the package. If there is something, then
> > we should fix it. I only stop the daemon when I'm testing shutting
> > down, and upgrading source. Otherwise, I've been using reconfigure
> > without problems.
>
> I may be confusing you.
> I know/understand that current reconfigure works well and if it doesn't
> work we should fix it.
>
> My point is that "why do you need to prevent stopping daemon
> by script-level forcibly?".
> As you mentioned above, killing the daemon through the init script
> is cleaner and more obvious. So I think leaving something to stop
> the daemon in the init script is more friendly for admins.
The script only blocks stopping multipathd if the root device is
multipathed, since you won't be able to restart it if you lose all
the paths to your root device, ever for a short while.
Admittedly, if you are able to run the script, you most likely currently
have access to your root device, and running something like
# service multipathd restart
is likely (but not certain) to be safe.
This obviously isn't fixing a bug, so if people are against the patch,
I'm O.K. with leaving it out.
-Ben
>
> Thanks,
> Kiyoshi Ueda
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] multipath: don't let init script stop multipathd for root devices
2010-04-01 18:42 ` Benjamin Marzinski
@ 2010-04-02 2:20 ` Kiyoshi Ueda
0 siblings, 0 replies; 6+ messages in thread
From: Kiyoshi Ueda @ 2010-04-02 2:20 UTC (permalink / raw)
To: Benjamin Marzinski; +Cc: device-mapper development
Hi Ben,
On 04/02/2010 03:42 AM +0900, Benjamin Marzinski wrote:
> On Tue, Mar 30, 2010 at 09:11:13AM +0900, Kiyoshi Ueda wrote:
>> Hi Ben,
>>
>> On 03/27/2010 01:23 AM +0900, Benjamin Marzinski wrote:
>>> On Fri, Mar 26, 2010 at 11:04:22AM +0900, Kiyoshi Ueda wrote:
>>>> Hi Ben,
>>>>
>>>> On 03/26/2010 02:52 AM +0900, Benjamin Marzinski wrote:
>>>>> This patch modifies the redhat init script, so that it doesn't allow
>>>>> multipathd to be stopped when the root device is on it.
>>>> Why do you need to prevent stopping daemon by script-level forcibly?
>>>> I think that users/developers may want to restart the daemon at their
>>>> own risk when it starts to behave something wrong or they change
>>>> a configuration (since "reconfigure" may not be stable feature).
>>>>
>>>> # Maybe others have different opinion but I often use "restart".
>>>>
>>>> If you need this patch anyway, please add other options to stop/restart
>>>> the daemon forcibly. (e.g. adding force-stop/force-restart)
>>> I can certainly add a force-stop/force-restart. This can currently be
>>> accomplished by simply killing the daemon, but admittedly doing it
>>> through the init script is cleaner and more obvious to users, and it's
>>> necessary to allow package upgrades to immediately start using
>>> multipathd on systems with multipathed root disks.
>>>
>>> However, what is there that you need to restart the daemon for that
>>>
>>> # service multipathd reload
>>>
>>> won't fix, besides upgrading the package. If there is something, then
>>> we should fix it. I only stop the daemon when I'm testing shutting
>>> down, and upgrading source. Otherwise, I've been using reconfigure
>>> without problems.
>> I may be confusing you.
>> I know/understand that current reconfigure works well and if it doesn't
>> work we should fix it.
>>
>> My point is that "why do you need to prevent stopping daemon
>> by script-level forcibly?".
>> As you mentioned above, killing the daemon through the init script
>> is cleaner and more obvious. So I think leaving something to stop
>> the daemon in the init script is more friendly for admins.
>
> The script only blocks stopping multipathd if the root device is
> multipathed, since you won't be able to restart it if you lose all
> the paths to your root device, ever for a short while.
>
> Admittedly, if you are able to run the script, you most likely currently
> have access to your root device, and running something like
>
> # service multipathd restart
>
> is likely (but not certain) to be safe.
Make sense.
> This obviously isn't fixing a bug, so if people are against the patch,
> I'm O.K. with leaving it out.
I don't object the patch.
I understand it's useful/friendly for admins not to allow stopping
multipathd easily when it can cause critical problems (and Christophe
has already commited the patch).
But for more friendness for admins who know it's their own risk,
force-stop/restart are good additional options, I think.
Thanks,
Kiyoshi Ueda
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-04-02 2:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-25 17:52 [PATCH] multipath: don't let init script stop multipathd for root devices Benjamin Marzinski
2010-03-26 2:04 ` Kiyoshi Ueda
2010-03-26 16:23 ` Benjamin Marzinski
2010-03-30 0:11 ` Kiyoshi Ueda
2010-04-01 18:42 ` Benjamin Marzinski
2010-04-02 2:20 ` Kiyoshi Ueda
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.