[systemd-devel] Need help with a systemd/mdadm interaction.

NeilBrown neilb at suse.de
Tue Nov 12 19:05:54 PST 2013


On Tue, 12 Nov 2013 19:01:49 +0400 Andrey Borzenkov <arvidjaar at gmail.com>
wrote:

> В Tue, 12 Nov 2013 21:17:19 +1100
> NeilBrown <neilb at suse.de> пишет:
> 
> > On Tue, 12 Nov 2013 18:16:24 +0900 Greg KH <gregkh at linuxfoundation.org> wrote:
> > 
> > > On Tue, Nov 12, 2013 at 07:54:42PM +1100, NeilBrown wrote:
> > > > On Tue, 12 Nov 2013 00:10:28 -0800 Greg KH <gregkh at linuxfoundation.org> wrote:
> > > > 
> > > > > On Tue, Nov 12, 2013 at 11:31:45AM +1100, NeilBrown wrote:
> > > > > > Alternately, is there some "all devices have been probed, nothing new will
> > > > > > appear unless it is hot-plugged" event.  That would be equally useful (and
> > > > > > probably mirrors what hardware-RAID cards do).
> > > > > 
> > > > > No, there's no way to ever know this in a hotplug world, sorry.
> > > > > Especially with USB devices, they show up when they show up, there's no
> > > > > "oh look, the bus is all scanned now and all devices currently plugged
> > > > > in are found" type knowledge at all.
> > > > > 
> > > > > Then there are hotplug PCI systems where people slam in PCI cards
> > > > > whenever they feel like it (remember, thunderbolt is PCI express...)
> > > > > 
> > > > > Sorry,
> > > > > 
> > > > > greg k-h
> > > > 
> > > > Surely something must be possible.
> > > 
> > > For USB, nope, there isn't, sorry.
> > > 
> > > > Clearly a physical hot-plug event will cause more devices to appear, but
> > > > there must come a point at which no more (non-virtual) devices will appear
> > > > unless a physical event happens?
> > > 
> > > Not for USB, sorry.
> > > 
> > > The USB bus just announces devices when it finds them, there is no "all
> > > is quiet" type signal or detection.
> > > 
> > > Same for PCI hotplug, devices can show up at any point in time, you
> > > never know when, and you don't know when all devices are "found".
> > > 
> > > sorry,
> > > 
> > > greg k-h
> > 
> > 
> > Hmmm... OK.  USB doesn't bother me a lot, but PCI is important.
> > 
> > I guess I'll just have to settle for a timeout much like the current
> > device-discovery timeout that systemd has.
> > Still hoping someone can tell me how to plug into that though...
> > 
> 
> If information about array name or other identification is available in
> udev rule (I see reference to device node only) what you can do is to
> start timer with "now+5second" (pick your timeout) that simply fires off
> mdadm -IRs for specific array. Something like
> 
> mdadm-last-resort at .timer
> 
> [Timer]
> OnCalendar=+5s
> 
> mdadm-last-resort at .service
> 
> [Service]
> Type=oneshot
> ExecStart=/sbin/mdadm -IRs %n
> 
> udev rule
> 
> ... SYSTEMD_WANTS=mdadm-last-resort@$ENV{SOMETHING_UNIQUE}.timer
> 

Thanks.  This certainly looks interesting and might be part of a solution.
However it gets the timeout test backwards.

I don't want to set the timeout when the array starts to appear.  I want to
set the time out when someone wants to use the array.
If no-one is waiting for the array device, then there is no point forcing it.

That's why I want to plug into the timeout that systemd already has.

Maybe that requirement isn't really necessary though.  I'll experiment with
your approach.

Thanks,
NeilBrown
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/systemd-devel/attachments/20131113/23d85b4d/attachment.pgp>


More information about the systemd-devel mailing list