From a63fa82724af4c57f88289528a5380950db32973 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 15 Sep 2024 16:13:53 +0200 Subject: [PATCH] Bug fix: ATA and SATA drives under sg did not register their SCSI address tuple --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/sg-linux.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 12f4db6..0c95fa1 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2024.04.27.162735" +#define Cdrskin_timestamP "2024.09.15.141244" diff --git a/libburn/sg-linux.c b/libburn/sg-linux.c index a1bd3a0..8b08931 100644 --- a/libburn/sg-linux.c +++ b/libburn/sg-linux.c @@ -1367,11 +1367,18 @@ static int fname_enumerate(char *fname, int flag) is_ata = is_ata_drive(fname, fd); if (is_ata < 0) {ret = -1; goto ex;} - if (!is_ata) + if (is_ata) { + /* In most cases Linux returns SCSI bus,...,lun even for + ATA and SATA drives + */ + sg_obtain_scsi_adr_fd(fname, fd, &bus_no, &host_no, + &channel_no, &target_no, &lun_no); + } else { is_scsi = is_scsi_drive(fname, fd, &bus_no, &host_no, &channel_no, &target_no, &lun_no); - if (is_scsi < 0) - {ret = -1; goto ex;} + if (is_scsi < 0) + {ret = -1; goto ex;} + } if (is_ata == 0 && is_scsi == 0) {ret = 0; goto ex;}