Re: [PATCH] signals: Generate warning when flush_signals() is called from non-kthread context

From: NeilBrown
Date: Thu May 07 2015 - 18:37:35 EST


On Thu, 7 May 2015 15:33:53 +0200 (CEST) Jiri Kosina <jkosina@xxxxxxx> wrote:

> On Mon, 4 May 2015, Oleg Nesterov wrote:
>
> > > All the calls in md.c are in a kernel thread so safe, but I'd rather have an
> > > explicit "uninterruptible, but no load-average" wait....
> >
> > Could you please explain why md_thread() does allow_signal(SIGKILL) ?
> >
> > I am just curious. It looks as if we want to allow user-space to "call"
> > thread->run(), and this looks strange.
>
> One would think that this is because md wants to be notified when system
> is going to be halted/rebooted, and userspace init (whatever that is)
> decides to do 'kill -9 -1' to perform the final shutdown of md (the
> question is why it really should be needed, becasue all filesystems should
> be R/O by that time anyway).
>

Something like that. It is historical strangeness that might have seemed
like a good idea at the time, but is hard to justify.

There is an alt-sysrq that will remount filesystems read-only, but no
alt-sysrq to switch RAID arrays to "idle/clean". So I leverages alt-sysrq-K,
which does "kill -9 -1" (I think).

Since md gained the ability to switch to idle/clean after a short timeout,
and also the ability to use a write-intent-bitmap so only little bits of the
array are ever non idle/clean, this all became much less interesting.

NeilBrown

Attachment: pgp75SHGJEy9w.pgp
Description: OpenPGP digital signature