diff options
author | Jan Drzewiecki <jonie@icpnet.pl> | 2010-08-31 00:37:28 +0200 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2010-08-31 00:41:35 +0200 |
commit | 5e267ea5a36de0b2a9a8965ca93dd45bbd6b1a8b (patch) | |
tree | 2b0e508be44b29eeac81a439e6308c4fa9d523e4 | |
parent | 2458db3edd8d66827b34978ff471dff8f879e9ab (diff) |
cdrom_id: Fix DVD blank detection for sloppy firmware
Reportedly, many CD drive firmwares will only consider the MSB in a READ
command, thus if we request 17 blocks to be read, we'll actually only get 16 in
many cases, and thus miss out the interesting sector #17. This would lead to
falsely considering nonempty DVDs as blank.
Fetch 32 blocks now, which should work everywhere.
Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
-rw-r--r-- | extras/cdrom_id/cdrom_id.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c index 8480d7b334..0153af6633 100644 --- a/extras/cdrom_id/cdrom_id.c +++ b/extras/cdrom_id/cdrom_id.c @@ -590,7 +590,7 @@ static int cd_media_info(struct udev *udev, int fd) * always "complete", DVD-RAM are "other" or "complete" if the disc is * write protected; we need to check the contents if it is blank */ if ((cd_media_dvd_rw_ro || cd_media_dvd_plus_rw || cd_media_dvd_plus_rw_dl || cd_media_dvd_ram) && (header[2] & 3) > 1) { - unsigned char buffer[17 * 2048]; + unsigned char buffer[32 * 2048]; unsigned char result, len; int block, offset; @@ -661,7 +661,7 @@ static int cd_media_info(struct udev *udev, int fd) scsi_cmd_init(udev, &sc, buffer, sizeof(buffer)); scsi_cmd_set(udev, &sc, 0, 0x28); scsi_cmd_set(udev, &sc, 5, 0); - scsi_cmd_set(udev, &sc, 8, 17); + scsi_cmd_set(udev, &sc, 8, 32); scsi_cmd_set(udev, &sc, 9, 0); err = scsi_cmd_run(udev, &sc, fd, buffer, sizeof(buffer)); if ((err != 0)) { |