Comment 32 for bug 356631

Hello udev developers,

https://launchpad.net/bugs/356631 reported that many people still have
the problem that after ejecting a CD, the CD-ROM tray automatically
closes again, causing the killing of fingers and CDs (or small pets :-) )

This problem came up a while ago already, and was solved with
introducing this into /lib/udev/rules.d/60-persistent-storage.rules:

  # probe filesystem metadata of optical drives which have a media inserted
  KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT}=="?*", IMPORT{program}="vol_id --export --skip-raid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"

However, this rule (and the corresponding code in cdrom_id [1]) relies
on the track/session counts being zero if there is no CD in the drive.
However, at least with kernel 2.6.28.8 the affected people get
something like

  ID_CDROM_MEDIA_STATE=blank
  ID_CDROM_MEDIA_SESSION_NEXT=2894
  ID_CDROM_MEDIA_SESSION_COUNT=19194
  ID_CDROM_MEDIA_TRACK_COUNT=47323

In other words, if ID_CDROM_MEDIA_STATE=blank, the session/track
counts are not reliable.

Arguably this could/should be fixed in the kernel, to fix these values
to 0 if there is no CD in the drive, or it is blank. However, I
wondered if the udev rules should be more robust in that regard, and
not even ask for the number of tracks if there is no/empty CD.
Affected people verified that adding this rule before the one from
above makes things work:

  KERNEL=="sr*", ENV{ID_CDROM_MEDIA_STATE}=="blank", GOTO="persistent_storage_end"

Thanks,

Martin

[1] if (cd_media_track_count > 0)
                printf("ID_CDROM_MEDIA_TRACK_COUNT=%d\n", cd_media_track_count);
--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)