mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
drivers/cdrom: improved ioctl for media change detection
The current implementation of the CDROM_MEDIA_CHANGED ioctl relies on global state, meaning that only one process can detect a disc change while the ioctl call will return 0 for other calling processes afterwards (see bug 213267). This introduces a new cdrom ioctl, CDROM_TIMED_MEDIA_CHANGE, that works by maintaining a timestamp of the last detected disc change instead of a boolean flag: Processes calling this ioctl command can provide a timestamp of the last disc change known to them and receive an indication whether the disc was changed since then and the updated timestamp. I considered fixing the buggy behavior in the original CDROM_MEDIA_CHANGED ioctl but that would require maintaining state for each calling process in the kernel, which seems like a worse solution than introducing this new ioctl. Signed-off-by: Lukas Prediger <lumip@lumip.de> Link: https://lore.kernel.org/all/20210912191207.74449-1-lumip@lumip.de Signed-off-by: Phillip Potter <phil@philpotter.co.uk> Link: https://lore.kernel.org/r/20210913230942.1188-1-phil@philpotter.co.uk Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jens Axboe
parent
316346243b
commit
67f1e027c2
@@ -54,6 +54,9 @@ are as follows:
|
||||
CDROM_SELECT_SPEED Set the CD-ROM speed
|
||||
CDROM_SELECT_DISC Select disc (for juke-boxes)
|
||||
CDROM_MEDIA_CHANGED Check is media changed
|
||||
CDROM_TIMED_MEDIA_CHANGE Check if media changed
|
||||
since given time
|
||||
(struct cdrom_timed_media_change_info)
|
||||
CDROM_DRIVE_STATUS Get tray position, etc.
|
||||
CDROM_DISC_STATUS Get disc type, etc.
|
||||
CDROM_CHANGER_NSLOTS Get number of slots
|
||||
|
||||
Reference in New Issue
Block a user