On Thu, 2009-04-23 at 09:33 -0400, Jeff Garzik wrote: > Martin K. Petersen wrote: > >>>>>> "Matthew" == Matthew Wilcox <matthew@xxxxxx> writes: > > > > Matthew> I already did that. The only problem is that you made me > > Matthew> include the stupid: > > > > Matthew> if (ata_id_major_version(args->id) > 7) { > > > > Matthew> so of course it doesn't work on any existing hardware. How > > Matthew> about applying this patch: > > > > Maybe we could incubate your patch in the next tree for a bit and see > > what breaks without the version check? > > > > We could even be somewhat conservative like we were with RC16 in SCSI. > > The SATA devices I have here with valid rotational flags all report > > version 7. I wonder if > 6 do the trick? > > linux/ata.h illustrates the standard ATA rules for validating bits of > IDENTIFY DEVICE. > > Just checking the version was always just a simplistic hack... we are > talking specifically about trusting values listed as undefined in the > relevant specs. That requires more, not less, gymnastics :) I'm with Jeff on this one. We had an identically similar problem with REPORT LUNS, which, today is the basis of SCSI discovery. The default rule is that if you're less than SCSI-3 (where REPORT LUNS was introduced) we *don't* send you REPORT LUNS and if you're 3 or above we always discover via REPORT LUNS. However, for the bunch of early adopters we have the BLIST_REPORTLUN2 flag to say do it anyway regardless of the SCSI level. (And for the screw ups we have BLIST_NOREPORTLUN for the ones who couldn't implement a standard to save their corporate life). James -- 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