mirror of
https://github.com/systemd/systemd.git
synced 2024-12-01 06:13:38 +08:00
3b48ce4ec4
Ejecting a CD with the hardware drive button only causes a change uevent, but the device node stays around (just without a medium). Pick up these uevents and mark the device as SYSTEMD_READY=0 on ejection, so that systemd stops the device unit and consequently all mount units on it. On media insertion, mark the device as SYSTEMD_READY=1 again. https://bugs.freedesktop.org/show_bug.cgi?id=72206 https://bugzilla.opensuse.org/show_bug.cgi?id=909418 https://bugs.archlinux.org/task/42071 https://bugs.launchpad.net/bugs/1168742
26 lines
910 B
Plaintext
26 lines
910 B
Plaintext
# do not edit this file, it will be overwritten on update
|
|
|
|
ACTION=="remove", GOTO="cdrom_end"
|
|
SUBSYSTEM!="block", GOTO="cdrom_end"
|
|
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
|
|
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
|
|
|
|
# unconditionally tag device as CDROM
|
|
KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
|
|
|
|
# media eject button pressed
|
|
ENV{DISK_EJECT_REQUEST}=="?*", RUN+="cdrom_id --eject-media $devnode", GOTO="cdrom_end"
|
|
|
|
# import device and media properties and lock tray to
|
|
# enable the receiving of media eject button events
|
|
IMPORT{program}="cdrom_id --lock-media $devnode"
|
|
|
|
# ejecting a CD does not remove the device node, so mark the systemd device
|
|
# unit as inactive while there is no medium; this automatically cleans up of
|
|
# stale mounts after ejecting
|
|
ENV{DISK_MEDIA_CHANGE}=="?*", ENV{ID_CDROM_MEDIA}!="?*", ENV{SYSTEMD_READY}="0"
|
|
|
|
KERNEL=="sr0", SYMLINK+="cdrom", OPTIONS+="link_priority=-100"
|
|
|
|
LABEL="cdrom_end"
|