diff options
Diffstat (limited to 'drivers/block/floppy.c')
-rw-r--r-- | drivers/block/floppy.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 77fc76f8aea9..301d7a9a41a6 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -3770,13 +3770,14 @@ out2: | |||
3770 | /* | 3770 | /* |
3771 | * Check if the disk has been changed or if a change has been faked. | 3771 | * Check if the disk has been changed or if a change has been faked. |
3772 | */ | 3772 | */ |
3773 | static int check_floppy_change(struct gendisk *disk) | 3773 | static unsigned int floppy_check_events(struct gendisk *disk, |
3774 | unsigned int clearing) | ||
3774 | { | 3775 | { |
3775 | int drive = (long)disk->private_data; | 3776 | int drive = (long)disk->private_data; |
3776 | 3777 | ||
3777 | if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags) || | 3778 | if (test_bit(FD_DISK_CHANGED_BIT, &UDRS->flags) || |
3778 | test_bit(FD_VERIFY_BIT, &UDRS->flags)) | 3779 | test_bit(FD_VERIFY_BIT, &UDRS->flags)) |
3779 | return 1; | 3780 | return DISK_EVENT_MEDIA_CHANGE; |
3780 | 3781 | ||
3781 | if (time_after(jiffies, UDRS->last_checked + UDP->checkfreq)) { | 3782 | if (time_after(jiffies, UDRS->last_checked + UDP->checkfreq)) { |
3782 | lock_fdc(drive, false); | 3783 | lock_fdc(drive, false); |
@@ -3788,7 +3789,7 @@ static int check_floppy_change(struct gendisk *disk) | |||
3788 | test_bit(FD_VERIFY_BIT, &UDRS->flags) || | 3789 | test_bit(FD_VERIFY_BIT, &UDRS->flags) || |
3789 | test_bit(drive, &fake_change) || | 3790 | test_bit(drive, &fake_change) || |
3790 | drive_no_geom(drive)) | 3791 | drive_no_geom(drive)) |
3791 | return 1; | 3792 | return DISK_EVENT_MEDIA_CHANGE; |
3792 | return 0; | 3793 | return 0; |
3793 | } | 3794 | } |
3794 | 3795 | ||
@@ -3837,7 +3838,6 @@ static int __floppy_read_block_0(struct block_device *bdev) | |||
3837 | bio.bi_end_io = floppy_rb0_complete; | 3838 | bio.bi_end_io = floppy_rb0_complete; |
3838 | 3839 | ||
3839 | submit_bio(READ, &bio); | 3840 | submit_bio(READ, &bio); |
3840 | generic_unplug_device(bdev_get_queue(bdev)); | ||
3841 | process_fd_request(); | 3841 | process_fd_request(); |
3842 | wait_for_completion(&complete); | 3842 | wait_for_completion(&complete); |
3843 | 3843 | ||
@@ -3898,7 +3898,7 @@ static const struct block_device_operations floppy_fops = { | |||
3898 | .release = floppy_release, | 3898 | .release = floppy_release, |
3899 | .ioctl = fd_ioctl, | 3899 | .ioctl = fd_ioctl, |
3900 | .getgeo = fd_getgeo, | 3900 | .getgeo = fd_getgeo, |
3901 | .media_changed = check_floppy_change, | 3901 | .check_events = floppy_check_events, |
3902 | .revalidate_disk = floppy_revalidate, | 3902 | .revalidate_disk = floppy_revalidate, |
3903 | }; | 3903 | }; |
3904 | 3904 | ||
@@ -4205,6 +4205,7 @@ static int __init floppy_init(void) | |||
4205 | disks[dr]->major = FLOPPY_MAJOR; | 4205 | disks[dr]->major = FLOPPY_MAJOR; |
4206 | disks[dr]->first_minor = TOMINOR(dr); | 4206 | disks[dr]->first_minor = TOMINOR(dr); |
4207 | disks[dr]->fops = &floppy_fops; | 4207 | disks[dr]->fops = &floppy_fops; |
4208 | disks[dr]->events = DISK_EVENT_MEDIA_CHANGE; | ||
4208 | sprintf(disks[dr]->disk_name, "fd%d", dr); | 4209 | sprintf(disks[dr]->disk_name, "fd%d", dr); |
4209 | 4210 | ||
4210 | init_timer(&motor_off_timer[dr]); | 4211 | init_timer(&motor_off_timer[dr]); |