|
@@ -1324,23 +1324,24 @@ static void finish_fdc_done( int dummy )
|
|
|
* due to unrecognised disk changes.
|
|
|
*/
|
|
|
|
|
|
-static int check_floppy_change(struct gendisk *disk)
|
|
|
+static unsigned int floppy_check_events(struct gendisk *disk,
|
|
|
+ unsigned int clearing)
|
|
|
{
|
|
|
struct atari_floppy_struct *p = disk->private_data;
|
|
|
unsigned int drive = p - unit;
|
|
|
if (test_bit (drive, &fake_change)) {
|
|
|
/* simulated change (e.g. after formatting) */
|
|
|
- return 1;
|
|
|
+ return DISK_EVENT_MEDIA_CHANGE;
|
|
|
}
|
|
|
if (test_bit (drive, &changed_floppies)) {
|
|
|
/* surely changed (the WP signal changed at least once) */
|
|
|
- return 1;
|
|
|
+ return DISK_EVENT_MEDIA_CHANGE;
|
|
|
}
|
|
|
if (UD.wpstat) {
|
|
|
/* WP is on -> could be changed: to be sure, buffers should be
|
|
|
* invalidated...
|
|
|
*/
|
|
|
- return 1;
|
|
|
+ return DISK_EVENT_MEDIA_CHANGE;
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
@@ -1570,7 +1571,7 @@ static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode,
|
|
|
* or the next access will revalidate - and clear UDT :-(
|
|
|
*/
|
|
|
|
|
|
- if (check_floppy_change(disk))
|
|
|
+ if (floppy_check_events(disk, 0))
|
|
|
floppy_revalidate(disk);
|
|
|
|
|
|
if (UD.flags & FTD_MSG)
|
|
@@ -1904,7 +1905,7 @@ static const struct block_device_operations floppy_fops = {
|
|
|
.open = floppy_unlocked_open,
|
|
|
.release = floppy_release,
|
|
|
.ioctl = fd_ioctl,
|
|
|
- .media_changed = check_floppy_change,
|
|
|
+ .check_events = floppy_check_events,
|
|
|
.revalidate_disk= floppy_revalidate,
|
|
|
};
|
|
|
|
|
@@ -1963,6 +1964,7 @@ static int __init atari_floppy_init (void)
|
|
|
unit[i].disk->first_minor = i;
|
|
|
sprintf(unit[i].disk->disk_name, "fd%d", i);
|
|
|
unit[i].disk->fops = &floppy_fops;
|
|
|
+ unit[i].disk->events = DISK_EVENT_MEDIA_CHANGE;
|
|
|
unit[i].disk->private_data = &unit[i];
|
|
|
unit[i].disk->queue = blk_init_queue(do_fd_request,
|
|
|
&ataflop_lock);
|