Hi, Rocky asked me to summarize why i proposed to change the FreeBSD CAM flags used by libcdio. The change is in git now and should be tested by those who use libcdio on FreeBSD. Affected could be: - Access method "CAM" and those access methods which begin by "MMC". - libcdio call mmc_run_cmd().
I test on versions 8-RELEASE as of january 2010 and 8-STABLE as of march. There is a driver "ahci" which obviously in future shall replace "ata" for SATA drives. Different than with "ata" or the USB driver "umass", it needs flag CAM_PASS_ERR_RECOVER in the ccb header in order to deliver SCSI sense data after a command failed. This flag seems to be given implicitely by the way how libcdio uses CAM with "ata" (via atapicam) and with "umass". At least they behave like in libburn's sg-freebsd when it is using CAM_PASS_ERR_RECOVER. But with "ahci", libcdio gets neither errno nor SCSI sense data if it does not set the flag explicitely. All three drivers work for me on both FreeBSD 8 systems with the current git version of libcdio. The reason for doubts is merely the fact that i cannot find specs of CAM_PASS_ERR_RECOVER where SCSI sense or errno are mentioned. Only "retry" is mentioned in man cam_cdbparse and "other things". Have a nice day :) Thomas
