37746e9
diff -up hdparm-9.60/sgio.c.bak hdparm-9.60/sgio.c
37746e9
--- hdparm-9.60/sgio.c.bak	2019-01-03 23:37:54.000000000 +0100
37746e9
+++ hdparm-9.60/sgio.c	2021-04-07 16:10:36.971836569 +0200
aec60e8
@@ -17,6 +17,10 @@
aec60e8
 
aec60e8
 #include <linux/hdreg.h>
aec60e8
 
aec60e8
+#ifndef DEMAND_SENSE_DATA
aec60e8
+	#define DEMAND_SENSE_DATA 0
aec60e8
+#endif
aec60e8
+
aec60e8
 extern int verbose;
aec60e8
 extern int prefer_ata12;
aec60e8
 
aec60e8
@@ -193,7 +197,7 @@ int sg16 (int fd, int rw, int dma, struc
aec60e8
 	unsigned char cdb[SG_ATA_16_LEN];
aec60e8
 	unsigned char sb[32], *desc;
aec60e8
 	struct scsi_sg_io_hdr io_hdr;
aec60e8
-	int prefer12 = prefer_ata12, demanded_sense = 0;
aec60e8
+	int prefer12 = prefer_ata12;
aec60e8
 
aec60e8
 	if (tf->command == ATA_OP_PIDENTIFY)
aec60e8
 		prefer12 = 0;
37746e9
@@ -306,14 +310,16 @@ int sg16 (int fd, int rw, int dma, struc
aec60e8
 
aec60e8
 	desc = sb + 8;
aec60e8
 	if (io_hdr.driver_status != SG_DRIVER_SENSE) {
aec60e8
-		if (sb[0] | sb[1] | sb[2] | sb[3] | sb[4] | sb[5] | sb[6] | sb[7] | sb[8] | sb[9]) {
aec60e8
-			static int second_try = 0;
aec60e8
-			if (!second_try++)
aec60e8
+		static int second_try = 0;
aec60e8
+		if (!second_try++) {
aec60e8
+			if (sb[0] | sb[1] | sb[2] | sb[3] | sb[4] | sb[5] | sb[6] | sb[7] | sb[8] | sb[9]) {
aec60e8
 				fprintf(stderr, "SG_IO: questionable sense data, results may be incorrect\n");
aec60e8
-		} else if (demanded_sense) {
aec60e8
-			static int second_try = 0;
aec60e8
-			if (!second_try++)
aec60e8
+			}
aec60e8
+#if DEMAND_SENSE_DATA
aec60e8
+			else {
aec60e8
 				fprintf(stderr, "SG_IO: missing sense data, results may be incorrect\n");
aec60e8
+			}
aec60e8
+#endif
aec60e8
 		}
aec60e8
 	} else if (sb[0] != 0x72 || sb[7] < 14 || desc[0] != 0x09 || desc[1] < 0x0c) {
37746e9
 		if (verbose || tf->command != ATA_OP_IDENTIFY)