On Friday October 20, [EMAIL PROTECTED] wrote:
> On Oct 20, maximilian attems <[EMAIL PROTECTED]> wrote:
> 
> > On Fri, 20 Oct 2006, Chris Andrews wrote:
> > > At this point there are no /dev/disk/by-label enteries for the md devices,
> > > and running a udevtrigger will populate it. 
> No, this is wrong. DO NOT run udevtrigger for no good reason.
> If you need to trigger a specific event then tickle $DEVPATH/uevent,
> e.g:
> 
> echo add > /sys/block/md0/uevent
> 
> But still, I can't see why this should help: if /sys/block/md0/ exists
> then the MD array has already been activated, so its uevent should have
> been generated too.

No.  /sys/block/md0 gets created *before* the array is fully
functional.
First /sys/block/md0 is created
then the array is assembled.
then the array is started and becomes functional.

I realise this is confusing for udev and I have been looking into the
problem, but it is not clear what the best solution is.

One possibility is the following patch.  It sends online/offline
events at the appropriate times.  Would that make udev sufficiently
happy?

NeilBrown



-----------------------
Send online/offline uevents when an md array starts/stops.

This allows udev to do something intellegent when an
array becomes available.

Signed-off-by: Neil Brown <[EMAIL PROTECTED]>

### Diffstat output
 ./drivers/md/md.c |    2 ++
 1 file changed, 2 insertions(+)

diff .prev/drivers/md/md.c ./drivers/md/md.c
--- .prev/drivers/md/md.c       2006-09-29 11:04:13.000000000 +1000
+++ ./drivers/md/md.c   2006-09-28 14:50:00.000000000 +1000
@@ -3194,6 +3194,7 @@ static int do_md_run(mddev_t * mddev)
 
        mddev->changed = 1;
        md_new_event(mddev);
+       kobject_uevent(&mddev->gendisk->kobj, KOBJ_ONLINE);
        return 0;
 }
 
@@ -3355,6 +3356,7 @@ static int do_md_stop(mddev_t * mddev, i
                if (disk)
                        set_capacity(disk, 0);
                mddev->changed = 1;
+               kobject_uevent(&mddev->gendisk->kobj, KOBJ_OFFLINE);
        } else if (mddev->pers)
                printk(KERN_INFO "md: %s switched to read-only mode.\n",
                        mdname(mddev));


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to