Re: support for sata7 Streaming Feature Set?

From: Tejun Heo
Date: Wed May 17 2006 - 22:33:28 EST

Jan Wagner wrote:
Hi and thanks for your response,

On Sun, 14 May 2006, Tejun Heo wrote:
anyone know if the now already somewhat old Streaming Feature Set of
ATA/ATAPI 7 is going to be implemented in the kernel ata functions?

According to one web site that contains hdreg.h
there's at least some kind of mention in that include file about streaming
feature set, kernel 2.6.10. However in 2.6.16 it seems to be gone again.
Any ideas if this will be implemented, or how to use it with e.g. hdparm
right now?
I don't think streaming feature set is something to be supported at
kernel driver level. The usage model doesn't fit with block interface.

I'm definitely not a kernel guru or into its internals, but IMHO ATA/ATAPI
specifications should all also be supported in the kernel or kernel
module, for compliance, or?

No, not really. If things can be done outside of kernel, we like to keep them there. e.g. SMART is implemented in the userland and it fits there. Kernel only has to provide mechanisms to enable such implementation.

The block device's ioctl could have a "data reliability setting"
extension, specifying either the error recovery time limits or for
enabling continuous read/write control (used to return/use partially
correct data) which are part of the ATA Streaming Feature Set.

I.e. an adjustable minimum acceptable data reliability level for block
devices, which can e.g. be relaxed down from a default 100%.

Streaming / relaxed reliablity is a very specialized feature requiring very specialized software to drive it. I can't think of much use in the generic vm/fs/block framework. So, I don't see it happening in the kernel.

If you want to use it, the best way would be issuing commands directly
using sg.

Maybe yes, that, or hdparm, but it seems like a horrible hack :) And sg
being for generic SCSI, I'm not sure how well ATA-7 fits in. At least,
the current debian sg-tools, and commands like 'sg_opcodes /dev/sda'
return "Fixed format, current; Sense key: Illegal Request", "Additional
sense: Invalid command operation code" for those SATA disks I tried.
Doesn't look good for sg useability, AFAICT.

No, it's not a horrible hack. Again, no one thinks smartd is a horrible hack. Even core things like irqbalancing and CPU speeding down are controlled from userland. Being in the userland is a good thing - it's much safer & more convenient/flexible out there.

What are you gonna use it for?

To record or play back real-time continuous streamed data that is not
error-critical but delay critical, from/to a bidirectional data
aquisition card at ~1Gbit/s over longer time spans.

One thing to think about before supporting streaming from/to harddisks from userland is how to make data flow efficiently from userland to kernel and back. But, no matter what, kernel <-> userland usually involves one data copy, so I don't think making sg similarly efficient would be too difficult (it might be already).

Direct kernel device support for the feature set could also be very useful
for linux projects like the Digital Video Recorder and Video Disk
Recorder. And seek/stutter free video playback from DVD/ATAPI (scratched
disks, for example) or video editing. Etc.

Why direct kernel device support necessary for such things? What kind of interface are you proposing? I can't think of anything better than libatastreaming (or whatever, just focus on the leading 'lib'), which uses sg to issue commands and manage everything.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at