Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "block: unexport DISK_EVENT_MEDIA_CHANGE for legacy/fringe drivers"

This reverts commit 9fd097b14918875bd6f125ed699d7bbbba5893ee.

Instead of leaving disk->events completely empty, we now export the
supported events again, and tell the block layer not to forward events to
user space by not setting DISK_EVENT_FLAG_UEVENT. This allows the block
layer to distinguish between devices that for which events should be
handled in kernel only, and devices which don't support any meda change
events at all.

Cc: Jiri Kosina <jikos@kernel.org>
Cc: Tim Waugh <tim@cyberelk.net>
Cc: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin Wilck <mwilck@suse.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Martin Wilck and committed by
Jens Axboe
773008f6 3c12c8e9

+10
+1
drivers/block/amiflop.c
··· 1829 1829 disk->major = FLOPPY_MAJOR; 1830 1830 disk->first_minor = drive; 1831 1831 disk->fops = &floppy_fops; 1832 + disk->events = DISK_EVENT_MEDIA_CHANGE; 1832 1833 sprintf(disk->disk_name, "fd%d", drive); 1833 1834 disk->private_data = &unit[drive]; 1834 1835 set_capacity(disk, 880*2);
+1
drivers/block/ataflop.c
··· 2028 2028 unit[i].disk->first_minor = i; 2029 2029 sprintf(unit[i].disk->disk_name, "fd%d", i); 2030 2030 unit[i].disk->fops = &floppy_fops; 2031 + unit[i].disk->events = DISK_EVENT_MEDIA_CHANGE; 2031 2032 unit[i].disk->private_data = &unit[i]; 2032 2033 set_capacity(unit[i].disk, MAX_DISK_SIZE * 2); 2033 2034 add_disk(unit[i].disk);
+1
drivers/block/floppy.c
··· 4540 4540 disks[drive]->major = FLOPPY_MAJOR; 4541 4541 disks[drive]->first_minor = TOMINOR(drive); 4542 4542 disks[drive]->fops = &floppy_fops; 4543 + disks[drive]->events = DISK_EVENT_MEDIA_CHANGE; 4543 4544 sprintf(disks[drive]->disk_name, "fd%d", drive); 4544 4545 4545 4546 timer_setup(&motor_off_timer[drive], motor_off_callback, 0);
+1
drivers/block/paride/pcd.c
··· 342 342 strcpy(disk->disk_name, cd->name); /* umm... */ 343 343 disk->fops = &pcd_bdops; 344 344 disk->flags = GENHD_FL_BLOCK_EVENTS_ON_EXCL_WRITE; 345 + disk->events = DISK_EVENT_MEDIA_CHANGE; 345 346 } 346 347 } 347 348
+1
drivers/block/paride/pd.c
··· 897 897 p->fops = &pd_fops; 898 898 p->major = major; 899 899 p->first_minor = (disk - pd) << PD_BITS; 900 + p->events = DISK_EVENT_MEDIA_CHANGE; 900 901 disk->gd = p; 901 902 p->private_data = disk; 902 903
+1
drivers/block/paride/pf.c
··· 319 319 disk->first_minor = unit; 320 320 strcpy(disk->disk_name, pf->name); 321 321 disk->fops = &pf_fops; 322 + disk->events = DISK_EVENT_MEDIA_CHANGE; 322 323 if (!(*drives[unit])[D_PRT]) 323 324 pf_drive_count++; 324 325 }
+1
drivers/block/swim.c
··· 862 862 swd->unit[drive].disk->first_minor = drive; 863 863 sprintf(swd->unit[drive].disk->disk_name, "fd%d", drive); 864 864 swd->unit[drive].disk->fops = &floppy_fops; 865 + swd->unit[drive].disk->events = DISK_EVENT_MEDIA_CHANGE; 865 866 swd->unit[drive].disk->private_data = &swd->unit[drive]; 866 867 set_capacity(swd->unit[drive].disk, 2880); 867 868 add_disk(swd->unit[drive].disk);
+1
drivers/block/swim3.c
··· 1216 1216 disk->first_minor = floppy_count; 1217 1217 disk->fops = &floppy_fops; 1218 1218 disk->private_data = fs; 1219 + disk->events = DISK_EVENT_MEDIA_CHANGE; 1219 1220 disk->flags |= GENHD_FL_REMOVABLE; 1220 1221 sprintf(disk->disk_name, "fd%d", floppy_count); 1221 1222 set_capacity(disk, 2880);
+1
drivers/block/xsysace.c
··· 1032 1032 ace->gd->major = ace_major; 1033 1033 ace->gd->first_minor = ace->id * ACE_NUM_MINORS; 1034 1034 ace->gd->fops = &ace_fops; 1035 + ace->gd->events = DISK_EVENT_MEDIA_CHANGE; 1035 1036 ace->gd->queue = ace->queue; 1036 1037 ace->gd->private_data = ace; 1037 1038 snprintf(ace->gd->disk_name, 32, "xs%c", ace->id + 'a');
+1
drivers/cdrom/gdrom.c
··· 786 786 goto probe_fail_cdrom_register; 787 787 } 788 788 gd.disk->fops = &gdrom_bdops; 789 + gd.disk->events = DISK_EVENT_MEDIA_CHANGE; 789 790 /* latch on to the interrupt */ 790 791 err = gdrom_set_interrupt_handlers(); 791 792 if (err)