i2o_block: Convert to bdops->check_events()
authorTejun Heo <tj@kernel.org>
Wed, 9 Mar 2011 18:54:28 +0000 (19:54 +0100)
committerTejun Heo <tj@kernel.org>
Wed, 9 Mar 2011 18:54:28 +0000 (19:54 +0100)
Convert from ->media_changed() to ->check_events().

i2o_block buffers media changed state and clears it after reporting.
It will behave correctly with kernel event polling.

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Markus Lidel <Markus.Lidel@shadowconnect.com>
drivers/message/i2o/i2o_block.c

index ae7cad1858987f489b3b0b24a3dcaff64d143dd6..f81c25d4a125b173dc3a302ddeed772739a7fecc 100644 (file)
@@ -695,20 +695,22 @@ static int i2o_block_ioctl(struct block_device *bdev, fmode_t mode,
 };
 
 /**
- *     i2o_block_media_changed - Have we seen a media change?
+ *     i2o_block_check_events - Have we seen a media change?
  *     @disk: gendisk which should be verified
+ *     @clearing: events being cleared
  *
  *     Verifies if the media has changed.
  *
  *     Returns 1 if the media was changed or 0 otherwise.
  */
-static int i2o_block_media_changed(struct gendisk *disk)
+static unsigned int i2o_block_check_events(struct gendisk *disk,
+                                          unsigned int clearing)
 {
        struct i2o_block_device *p = disk->private_data;
 
        if (p->media_change_flag) {
                p->media_change_flag = 0;
-               return 1;
+               return DISK_EVENT_MEDIA_CHANGE;
        }
        return 0;
 }
@@ -950,7 +952,7 @@ static const struct block_device_operations i2o_block_fops = {
        .ioctl = i2o_block_ioctl,
        .compat_ioctl = i2o_block_ioctl,
        .getgeo = i2o_block_getgeo,
-       .media_changed = i2o_block_media_changed
+       .check_events = i2o_block_check_events,
 };
 
 /**
@@ -1002,6 +1004,7 @@ static struct i2o_block_device *i2o_block_device_alloc(void)
        gd->major = I2O_MAJOR;
        gd->queue = queue;
        gd->fops = &i2o_block_fops;
+       gd->events = DISK_EVENT_MEDIA_CHANGE;
        gd->private_data = dev;
 
        dev->gd = gd;