md: add support for raising dm events.
authorNeilBrown <neilb@suse.de>
Mon, 26 Jul 2010 01:49:55 +0000 (11:49 +1000)
committerNeilBrown <neilb@suse.de>
Mon, 26 Jul 2010 02:52:27 +0000 (12:52 +1000)
dm uses scheduled work to raise events to user-space.
So allow md device to have work_structs and schedule them on an error.

Signed-off-by: NeilBrown <neilb@suse.de>
drivers/md/md.c
drivers/md/md.h

index 012482a..f877569 100644 (file)
@@ -6068,6 +6068,8 @@ void md_error(mddev_t *mddev, mdk_rdev_t *rdev)
        set_bit(MD_RECOVERY_INTR, &mddev->recovery);
        set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
        md_wakeup_thread(mddev->thread);
+       if (mddev->event_work.func)
+               schedule_work(&mddev->event_work);
        md_new_event_inintr(mddev);
 }
 
index 6e7e349..c88b047 100644 (file)
@@ -318,6 +318,7 @@ struct mddev_s
        struct bio *barrier;
        atomic_t flush_pending;
        struct work_struct barrier_work;
+       struct work_struct event_work;  /* used by dm to report failure event */
 };