Well, udev uses its own `ata_id` (which issues IDENTIFY DEVICE through ATA PASS-THROUGH) though. Anyway I expected the reasoning you gave and I can't really argue with you. It's just personally I still prefer a cleaner SATL implementation (considering Linux is open source and can be deemed as some sort of reference), so I gave it a go. Not that SAT requires the DI VPD return only one desingator / LU name though. On 7 July 2016 at 18:56, Hannes Reinecke <hare@xxxxxxx> wrote: > On 07/07/2016 12:12 AM, tom.ty89@xxxxxxxxx wrote: >> From: Tom Yan <tom.ty89@xxxxxxxxx> >> >> SAT (as of sat4r05f.pdf) only requires the t10 designator if the >> drive does not support/have WWN. Besides, we already have the ATA >> information VPD. >> >> Signed-off-by: Tom Yan <tom.ty89@xxxxxxxxx> >> >> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c >> index 9f478ad..84b3d42 100644 >> --- a/drivers/ata/libata-scsi.c >> +++ b/drivers/ata/libata-scsi.c >> @@ -2210,21 +2210,6 @@ static unsigned int ata_scsiop_inq_83(struct ata_scsi_args *args, u8 *rbuf) >> rbuf[1] = 0x83; /* this page code */ >> num = 4; >> >> - /* SAT defined lu model and serial numbers descriptor */ >> - /* piv=0, assoc=lu, code_set=ACSII, designator=t10 vendor id */ >> - rbuf[num + 0] = 2; >> - rbuf[num + 1] = 1; >> - rbuf[num + 3] = sat_model_serial_desc_len; >> - num += 4; >> - memcpy(rbuf + num, "ATA ", 8); >> - num += 8; >> - ata_id_string(args->id, (unsigned char *) rbuf + num, ATA_ID_PROD, >> - ATA_ID_PROD_LEN); >> - num += ATA_ID_PROD_LEN; >> - ata_id_string(args->id, (unsigned char *) rbuf + num, ATA_ID_SERNO, >> - ATA_ID_SERNO_LEN); >> - num += ATA_ID_SERNO_LEN; >> - >> if (ata_id_has_wwn(args->id)) { >> /* SAT defined lu world wide name */ >> /* piv=0, assoc=lu, code_set=binary, designator=NAA */ >> @@ -2236,6 +2221,23 @@ static unsigned int ata_scsiop_inq_83(struct ata_scsi_args *args, u8 *rbuf) >> ATA_ID_WWN, ATA_ID_WWN_LEN); >> num += ATA_ID_WWN_LEN; >> } >> + else { >> + /* SAT defined lu model and serial numbers descriptor */ >> + /* piv=0, assoc=lu, code_set=ACSII, designator=t10 vendor id */ >> + rbuf[num + 0] = 2; >> + rbuf[num + 1] = 1; >> + rbuf[num + 3] = sat_model_serial_desc_len; >> + num += 4; >> + memcpy(rbuf + num, "ATA ", 8); >> + num += 8; >> + ata_id_string(args->id, (unsigned char *) rbuf + num, ATA_ID_PROD, >> + ATA_ID_PROD_LEN); >> + num += ATA_ID_PROD_LEN; >> + ata_id_string(args->id, (unsigned char *) rbuf + num, ATA_ID_SERNO, >> + ATA_ID_SERNO_LEN); >> + num += ATA_ID_SERNO_LEN; >> + } >> + >> rbuf[3] = num - 4; /* page len (assume less than 256 bytes) */ >> return 0; >> } >> > Nope. > We cannot go about and remove VPD descriptors. > Existing systems might rely on the VPD attribute to be present (think of > udev persistent symlinks), and the system will refuse to boot. > NACK. > > Cheers, > > Hannes > -- > Dr. Hannes Reinecke Teamlead Storage & Networking > hare@xxxxxxx +49 911 74053 688 > SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg > GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton > HRB 21284 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html