chiark / gitweb /
cdrom_id: add data track count for bad virtual drive implementations
authorHarald Hoyer <harald@redhat.com>
Tue, 12 Feb 2013 14:19:38 +0000 (15:19 +0100)
committerHarald Hoyer <harald@redhat.com>
Tue, 12 Feb 2013 14:27:30 +0000 (15:27 +0100)
/# /lib/udev/cdrom_id --debug /dev/sr0
probing: '/dev/sr0'
INQUIRY: [AMI     ][Virtual CDROM   ][1.00]
GET CONFIGURATION failed with SK=5h/ASC=20h/ACQ=00h
drive is pre-MMC2 and does not support 46h get configuration command
trying to work around the problem
READ DISC INFORMATION failed with SK=5h/ASC=20h/ACQ=00h
no current profile, but disc is present; assuming CD-ROM
READ TOC: len: 12, start track: 1, end track: 1
last track 1 starts at block 0
READ DISC INFORMATION failed with SK=5h/ASC=20h/ACQ=00h
ID_CDROM=1
ID_CDROM_MEDIA=1
ID_CDROM_MEDIA_CD=1

What is missing here is ID_CDROM_MEDIA_TRACK_COUNT_DATA to trigger
blkid in /lib/udev/rules.d/60-persistent-storage.rules

KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*",
ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*",
ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \
  IMPORT{builtin}="blkid --noraid"

src/udev/cdrom_id/cdrom_id.c

index 1056536b7d6ab8ca40707d2befcafcf75407dd3b..b659cc31ee202b5f1f0d4a356a575930ccf84efb 100644 (file)
@@ -513,6 +513,8 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd)
                 if (cd_media == 1) {
                         log_debug("no current profile, but disc is present; assuming CD-ROM\n");
                         cd_media_cd_rom = 1;
                 if (cd_media == 1) {
                         log_debug("no current profile, but disc is present; assuming CD-ROM\n");
                         cd_media_cd_rom = 1;
+                        cd_media_track_count = 1;
+                        cd_media_track_count_data = 1;
                         return 0;
                 } else {
                         log_debug("no current profile, assuming no media\n");
                         return 0;
                 } else {
                         log_debug("no current profile, assuming no media\n");