From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christian Krause Date: Sun, 27 Jul 2008 19:19:52 +0000 Subject: cd-tray immediately closed after it has been opened Message-Id: <488CCA58.7030409@plauener.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org Hi, A very annoying bug has been introduced in udev release 121: In some distribution it is not possible to eject a CD or DVD anymore, because the cd tray is immediately closed after it has been opened: http://bugs.gentoo.org/show_bug.cgi?id#0886 https://bugzilla.redhat.com/show_bug.cgi?idE3095 We have tracked down the problem: udev 120: works udev > 121: problem occurs The following checkin introduced the odd behaviour: 41677cf51fb2c14aa512ecf9410e43eb35560408 "persistent device naming: also read unpartitioned media" with the following change in 60-persistent-storage.rules: ---------------------------------------------------------- +# import filesystem metadata +IMPORT{program}="vol_id --export $tempnode" ---------------------------------------------------------- The following happens: - the CD is ejected (by user) - a change event is generated: UDEV [1217184249.757495] change /devices/pci0000:00/0000:00:1f.2/host2/target2:0:0/2:0:0:0/block/sr0 (block) - the rule above triggers the execution of "vol_id --export ...sr0" - vol_id opens the device with open(2), which causes the cd tray to be closed Before this checkin, vol_id was only called for partitioned devices and so the CD tray stayed open. I'm not an expert in writing udev rules, but I'm using now the following workaround: diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules index 5ae0c7f..95eb1fd 100644 --- a/rules/rules.d/60-persistent-storage.rules +++ b/rules/rules.d/60-persistent-storage.rules @@ -52,6 +52,7 @@ ENV{DEVTYPE}="partition", ENV{ID_PATH}="?*", SYMLINK+="disk/by-path/$env{ID_PA # skip unpartitioned removable media devices from drivers which do not send "change" events ENV{DEVTYPE}="disk", KERNEL!="sd*|sr*", ATTR{removable}="1", GOTO="persistent_storage_end" +ENV{DEVTYPE}="disk", KERNEL="sr*", ATTR{removable}="1", GOTO="persistent_storage_end" # import filesystem metadata IMPORT{program}="vol_id --export $tempnode" If this patch is used, the vol_id call is omitted for sr* devices. Sure, a drawback is, that you loose the "disk/by-label" link for CDs, but IMHO these features are mainly targetted for USB hard drives or something like this. Best regards, Christian Krause Ronald Wahl