Sense fetching [Was: cdrtools /devel ...]
Lawrence Stewart
lstewart at freebsd.org
Wed Mar 30 06:51:18 UTC 2011
On 11/13/10 20:34, Alexander Motin wrote:
> Brandon Gooch wrote:
>> 2010/11/5 Alexander Motin <mav at freebsd.org>:
>>> Hi.
>>>
>>> I've reviewed tests that scgcheck does to SCSI subsystem. It shown
>>> combination of several issues in both CAM, ahci(4) and cdrtools itself.
>>> Several small patches allow us to pass most of that tests:
>>> http://people.freebsd.org/~mav/sense/
>>>
>>> ahci_resid.patch: Add support for reporting residual length on data
>>> underrun. SCSI commands often returns results shorter then expected.
>>> Returned value allows application to know/check how much data it really
>>> has. It is also important for sense fetching, as ATAPI and USB devices
>>> return sense as data in response to REQUEST_SENSE command.
>>>
>>> sense_resid.patch: When manually requesting sense data (ATAPI or USB),
>>> request only as much data as user requested (not the fixed structure
>>> size), and return respective sense residual length.
>>>
>>> pass_autosence.patch: Unless CAM_DIS_AUTOSENSE is set, always fetch
>>> sense if not done by SIM, independently of CAM_PASS_ERR_RECOVER. As soon
>>> as device freeze released before returning to user-level, user-level
>>> application by definition can't reliably fetch sense data if some other
>>> application (like hald) tries to access device same time.
>>>
>>> cdrtools.patch: Make libscg (part of cdrtools) on FreeBSD to submit
>>> wanted sense length to CAM and do not clear sense return buffer. It is
>>> mostly cosmetics, important probably only for scgcheck.
>>>
>>> Testers and reviewers welcome. I am especially interested in opinion
>>> about pass_autosence.patch -- may be we should lower sense fetching even
>>> deeper, to make it work for all cam_periph_runccb() consumers.
>>
>> Hey mav, sorry to chime in after so long here, but have some of these
>> patches been committed (as of r215179)?
>>
>> Which patches are still applicable for testing? I assume the cdrtools
>> patch for sure...
>
> Now uncommitted pass_autosence.patch and possibly cdrtools.patch.
>
To add another data point, I just applied the pass_autosence.patch to my
ahci enabled 8.2-STABLE r220153 kernel and I can now burn successfully
with cdrecord. The same kernel without the patch was unable to burn
(though it could erase disks ok).
Cheers,
Lawrence
More information about the freebsd-scsi
mailing list