From 5e267ea5a36de0b2a9a8965ca93dd45bbd6b1a8b Mon Sep 17 00:00:00 2001 From: Jan Drzewiecki Date: Tue, 31 Aug 2010 00:37:28 +0200 Subject: [PATCH] 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 --- extras/cdrom_id/cdrom_id.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extras/cdrom_id/cdrom_id.c b/extras/cdrom_id/cdrom_id.c index 8480d7b33..0153af663 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)) { -- 2.30.2