md: switch to ->check_events for media change notifications
[sfrench/cifs-2.6.git] / drivers / md / md.c
index 8bb69c61afe0862be61b3972f5f5bc7ed0432293..77dfe4765c311104fc2d5ca4c92454de4e63111f 100644 (file)
@@ -5670,6 +5670,7 @@ static int md_alloc(dev_t dev, char *name)
         * remove it now.
         */
        disk->flags |= GENHD_FL_EXT_DEVT;
+       disk->events |= DISK_EVENT_MEDIA_CHANGE;
        mddev->gendisk = disk;
        /* As soon as we call add_disk(), another thread could get
         * through to md_open, so make sure it doesn't get too far
@@ -7806,20 +7807,17 @@ static void md_release(struct gendisk *disk, fmode_t mode)
        mddev_put(mddev);
 }
 
-static int md_media_changed(struct gendisk *disk)
-{
-       struct mddev *mddev = disk->private_data;
-
-       return mddev->changed;
-}
-
-static int md_revalidate(struct gendisk *disk)
+static unsigned int md_check_events(struct gendisk *disk, unsigned int clearing)
 {
        struct mddev *mddev = disk->private_data;
+       unsigned int ret = 0;
 
+       if (mddev->changed)
+               ret = DISK_EVENT_MEDIA_CHANGE;
        mddev->changed = 0;
-       return 0;
+       return ret;
 }
+
 static const struct block_device_operations md_fops =
 {
        .owner          = THIS_MODULE,
@@ -7831,8 +7829,7 @@ static const struct block_device_operations md_fops =
        .compat_ioctl   = md_compat_ioctl,
 #endif
        .getgeo         = md_getgeo,
-       .media_changed  = md_media_changed,
-       .revalidate_disk= md_revalidate,
+       .check_events   = md_check_events,
 };
 
 static int md_thread(void *arg)