From: Greg KH <greg@kroah.com>
To: Andrew Morton <akpm@osdl.org>
Cc: Alexey Dobriyan <adobriyan@gmail.com>,
linux-kernel@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
Christoph Hellwig <hch@lst.de>,
Kay Sievers <kay.sievers@vrfy.org>
Subject: Re: Naughty ramdrives
Date: Thu, 7 Sep 2006 16:49:24 -0700 [thread overview]
Message-ID: <20060907234924.GA13787@kroah.com> (raw)
In-Reply-To: <20060907162800.e92b5c7c.akpm@osdl.org>
On Thu, Sep 07, 2006 at 04:28:00PM -0700, Andrew Morton wrote:
> On Thu, 7 Sep 2006 16:01:30 -0700
> Greg KH <greg@kroah.com> wrote:
>
> > On Thu, Sep 07, 2006 at 03:20:37PM -0700, Andrew Morton wrote:
> > > On Fri, 8 Sep 2006 02:08:53 +0400
> > > Alexey Dobriyan <adobriyan@gmail.com> wrote:
> > >
> > > > > So I assume udev is still madly crunching on its message backlog while
> > > > > this is happening?
> > > > >
> > > > > If so, ug.
> > > >
> > > > OK. I'll let it stabilize, sorry.
> > >
> > > You shouldn't have to.
> >
> > You shouldn't have to what? You purposefully add and remove a block
> > driver as fast as is possible, creating a ton of new events and you
> > expect userspace processing of those events to be able to keep up in
> > real-time with it?
>
> Absolutely. sys_init_module() should not return until the device nodes
> have stabilised. There is no other sane interface the kernel can offer.
No, the module does not ever know that userspace is even _using_ udev,
let alone care if it is finished or not.
> ho hum.
>
> Perhaps there's some hacklet we can put into modprobe, to allow it to peek
> at the udev sequence numbering, wait until all the events which were
> associated with this modprobe have been serviced? Or maybe a standalone
> tool?
>
> Say, just a loopback message: send it into the kernel, knowing that it will
> be appended to the queue. Wait until a reply comes, so you know that all
> preceding events in the queue have been serviced?
Kay does have some thoughts as to this idea, but it's more like using
the kernel to relay those "all done" events from udev back out to
whoever wants to hear it.
> Or whatever. Right now, there's no sane way to do
>
> modprobe rd
> mkfs /dev/ram0
>
> so instead we could do
>
> modprobe rd
> /sbin/wait-for-udev-to-catch-up
> mkfs /dev/ram0
>
> Or something.
That's why people are switching to event driven startup logic, which
makes all of this not an issue anymore. See
http://www.netsplit.com/blog/2006/09/01
for one such example of a system that can handle the above situation
just fine.
"normally", udev creates those device nodes just fine, and fast enough
for your first example to work. But if you don't want that, use
'udevsettle', which will wait until udev is finished:
modprobe rd
/sbin/udevsettle
mkfs /dev/ram0
It's in use already today by some startup scripts that don't want to
switch over to being event driven.
thanks,
greg k-h
prev parent reply other threads:[~2006-09-07 23:49 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-07 20:59 Naughty ramdrives Alexey Dobriyan
2006-09-07 21:54 ` Andrew Morton
2006-09-07 22:05 ` Greg KH
2006-09-07 22:08 ` Alexey Dobriyan
2006-09-07 22:20 ` Andrew Morton
2006-09-07 23:01 ` Greg KH
2006-09-07 23:28 ` Andrew Morton
2006-09-07 23:49 ` Greg KH [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=20060907234924.GA13787@kroah.com \
--to=greg@kroah.com \
--cc=adobriyan@gmail.com \
--cc=akpm@osdl.org \
--cc=hch@lst.de \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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