public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* support for sata7 Streaming Feature Set?
@ 2006-05-05 12:54 Jan Wagner
  2006-05-14  7:06 ` Tejun Heo
  0 siblings, 1 reply; 12+ messages in thread
From: Jan Wagner @ 2006-05-05 12:54 UTC (permalink / raw)
  To: linux-kernel

Hi,

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
http://www.koders.com/c/fidCD7293464D782E48F93EEF8A71192F1BF28FC205.aspx
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?

many thanks!
 - Jan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-05 12:54 support for sata7 Streaming Feature Set? Jan Wagner
@ 2006-05-14  7:06 ` Tejun Heo
  2006-05-17  8:30   ` Jan Wagner
  0 siblings, 1 reply; 12+ messages in thread
From: Tejun Heo @ 2006-05-14  7:06 UTC (permalink / raw)
  To: Jan Wagner; +Cc: linux-kernel

Jan Wagner wrote:
> Hi,
> 
> 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
> http://www.koders.com/c/fidCD7293464D782E48F93EEF8A71192F1BF28FC205.aspx
> 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. 
  If you want to use it, the best way would be issuing commands directly 
using sg.  What are you gonna use it for?

-- 
tejun

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-14  7:06 ` Tejun Heo
@ 2006-05-17  8:30   ` Jan Wagner
  2006-05-17 13:40     ` Lennart Sorensen
  2006-05-18  2:16     ` Tejun Heo
  0 siblings, 2 replies; 12+ messages in thread
From: Jan Wagner @ 2006-05-17  8:30 UTC (permalink / raw)
  To: Tejun Heo; +Cc: linux-kernel

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
> > http://www.koders.com/c/fidCD7293464D782E48F93EEF8A71192F1BF28FC205.aspx
> > 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?

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%.

>   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.

> 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.

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.

 - Jan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-17  8:30   ` Jan Wagner
@ 2006-05-17 13:40     ` Lennart Sorensen
  2006-05-18  9:33       ` Jan Wagner
  2006-05-18  2:16     ` Tejun Heo
  1 sibling, 1 reply; 12+ messages in thread
From: Lennart Sorensen @ 2006-05-17 13:40 UTC (permalink / raw)
  To: Jan Wagner; +Cc: Tejun Heo, linux-kernel

On Wed, May 17, 2006 at 11:30:55AM +0300, Jan Wagner wrote:
> 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.

Just because sgtools doesn't work with it doesn't mean there aren't
commands you can send through sg to work with it.

> 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.

Do you know of a disk that can handle 1Gbit/s to the platter?  Or are
you planning to stripe this across multiple disks?

I would think a controller on a fast enough bus (plain PCI isn't going
to handle it), with enough drives in a raid setup of the right type
should probably handle it.  Might need to do a filesystem specially
designed for the streaming needs rather than general purpose file
storage.

> 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.

Can you tell a DVD drive to stop retrying?  Perhaps you can.  I know
some of the retries are in software.

Len Sorensen

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-17  8:30   ` Jan Wagner
  2006-05-17 13:40     ` Lennart Sorensen
@ 2006-05-18  2:16     ` Tejun Heo
  2006-05-18 13:18       ` Mark Lord
  2006-05-18 15:36       ` Jeff Garzik
  1 sibling, 2 replies; 12+ messages in thread
From: Tejun Heo @ 2006-05-18  2:16 UTC (permalink / raw)
  To: Jan Wagner; +Cc: linux-kernel

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
>>> http://www.koders.com/c/fidCD7293464D782E48F93EEF8A71192F1BF28FC205.aspx
>>> 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.

-- 
tejun

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-17 13:40     ` Lennart Sorensen
@ 2006-05-18  9:33       ` Jan Wagner
  0 siblings, 0 replies; 12+ messages in thread
From: Jan Wagner @ 2006-05-18  9:33 UTC (permalink / raw)
  To: Lennart Sorensen; +Cc: Tejun Heo, linux-kernel

Hi,

On Wed, 17 May 2006, Lennart Sorensen wrote:
> > 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.
>
> Do you know of a disk that can handle 1Gbit/s to the platter?  Or are
> you planning to stripe this across multiple disks?
> I would think a controller on a fast enough bus (plain PCI isn't going
> to handle it), with enough drives in a raid setup of the right type
> should probably handle it.  Might need to do a filesystem specially
> designed for the streaming needs rather than general purpose file
> storage.

Yes, multiple disks striped in RAID-0, 4 x DiamondMax 10 300GB, ext2 fs.
On a cheapish Dell OptiPlex GX620 that uses Intel 945G. 1.6Gbit/s write
to disk while reading PCI(-X) goes just fine, though of course gets
slower near disk ends.

Streaming filesystems, yes, that's what I'd like to evaluate next vs
ext2 once the Samsung SP2504C disks with Streaming Feature Set support
arrive.

> > 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.
>
> Can you tell a DVD drive to stop retrying?  Perhaps you can.  I know
> some of the retries are in software.

Ok, probably yes, this is also something to be done outside of kernel.

However this guy over here
 http://www.ussg.iu.edu/hypermail/linux/kernel/0411.3/0338.html
has written speedcontrol.c for SET STREAMING (linked pdf there, page
457), which is somewhat similar to the commands in the Streaming feature
set. One quote: "In my opinion it would make sence to also enhance the
kernel function cdrom_select_speed (linux/drivers/ide/ide-cd.c), so that
this function works also for "newer" DVD-drives." etc

But OTOH also Tejun's points about that this Streaming set should be
implemented in userland are quite valid. And I don't know where exactly
such functionality could be added to the kernel i.e. where I would propose
such a feature to be added; it was a thought there might be some suitable
place and people here would know where to add ;-))

But actually after googling more, XFS file system seems to have something
like Streaming feature set support, or at least provisions for adding such
commands, as it has a guaranteed-rate I/O feature
  http://en.wikipedia.org/wiki/XFS#Guaranteed_rate_I.2FO

So I guess XFS code is the better place to start thinking about Streaming
feature set implementation.

Many thanks for your input! :-))

 - Jan

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18  2:16     ` Tejun Heo
@ 2006-05-18 13:18       ` Mark Lord
  2006-05-18 15:38         ` Jeff Garzik
  2006-05-18 15:36       ` Jeff Garzik
  1 sibling, 1 reply; 12+ messages in thread
From: Mark Lord @ 2006-05-18 13:18 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jan Wagner, linux-kernel

Tejun Heo wrote:
> 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
>>>> http://www.koders.com/c/fidCD7293464D782E48F93EEF8A71192F1BF28FC205.aspx 
...
That link just gives me a search page.  Got a better link?


> 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.
..
Other uses include tons of embedded systems using Linux,
primarily those that handle any kind of A/V record/playback
(think "Tivo", MP3 player, video players, ...).
These are about as rare as a fileserver, when counting the installed base.

I think that the ATA streaming feature set cannot be done
efficiently (which is the whole point of it!) without some kernel support.

The device driver has to know about it, at a minimum so that it can
select a different EH protocol for the streams.  Which in turn means
that the streaming commands should be known to the driver as well.

But how to handle it all nicely is the real question.
A new block driver, if libata cannot handle it?

Cheers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18  2:16     ` Tejun Heo
  2006-05-18 13:18       ` Mark Lord
@ 2006-05-18 15:36       ` Jeff Garzik
  2006-05-18 23:12         ` Tejun Heo
  1 sibling, 1 reply; 12+ messages in thread
From: Jeff Garzik @ 2006-05-18 15:36 UTC (permalink / raw)
  To: Tejun Heo; +Cc: Jan Wagner, linux-kernel

Tejun Heo wrote:
> 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).

Actually, the kernel usually maps userland pages, eliminating the need 
for a copy.  write(2) may have copied data into that page originally, 
but mmap(2) need not have.

	Jeff



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18 13:18       ` Mark Lord
@ 2006-05-18 15:38         ` Jeff Garzik
  2006-05-18 23:18           ` Tejun Heo
  2006-05-19 15:16           ` Mark Lord
  0 siblings, 2 replies; 12+ messages in thread
From: Jeff Garzik @ 2006-05-18 15:38 UTC (permalink / raw)
  To: Mark Lord; +Cc: Tejun Heo, Jan Wagner, linux-kernel

Mark Lord wrote:
> The device driver has to know about it, at a minimum so that it can
> select a different EH protocol for the streams.  Which in turn means
> that the streaming commands should be known to the driver as well.

Different taskfile protocol, you mean?


> But how to handle it all nicely is the real question.
> A new block driver, if libata cannot handle it?

I seriously doubt writing a whole new ATA driver subsystem will fly :)

	Jeff




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18 15:36       ` Jeff Garzik
@ 2006-05-18 23:12         ` Tejun Heo
  0 siblings, 0 replies; 12+ messages in thread
From: Tejun Heo @ 2006-05-18 23:12 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Jan Wagner, linux-kernel

Jeff Garzik wrote:
> Tejun Heo wrote:
>> 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).
> 
> Actually, the kernel usually maps userland pages, eliminating the need 
> for a copy.  write(2) may have copied data into that page originally, 
> but mmap(2) need not have.

Yeap, to achieve high streaming rate, it would be best to have 
preallocated ring buffer and ring pointers.  If this high-bw streaming 
thing becomes common, we can add it to sg, I guess.

-- 
tejun

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18 15:38         ` Jeff Garzik
@ 2006-05-18 23:18           ` Tejun Heo
  2006-05-19 15:16           ` Mark Lord
  1 sibling, 0 replies; 12+ messages in thread
From: Tejun Heo @ 2006-05-18 23:18 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Mark Lord, Jan Wagner, linux-kernel

Jeff Garzik wrote:
> Mark Lord wrote:
>> The device driver has to know about it, at a minimum so that it can
>> select a different EH protocol for the streams.  Which in turn means
>> that the streaming commands should be known to the driver as well.
> 
> Different taskfile protocol, you mean?

I haven't checked all the docs and codes thoroughly but I don't see a 
need for new protocol or anything.  When a streaming command fails due 
to failing to meet timing constraints, it fails w/ device error.  sg can 
adjust retry count and the device error will be reported without much 
recovery action (only revalidation).  If the device fails due to some 
other reasons (say HSM violation), it needs full EH no matter what. 
Without full EH, it becomes completely unusable.

>> But how to handle it all nicely is the real question.
>> A new block driver, if libata cannot handle it?
> 
> I seriously doubt writing a whole new ATA driver subsystem will fly :)

All I can see are little extensions to sg interface and maybe libata.  I 
don't think it needs full-blown in-kernel driver.  However, to use this 
feature with a filesystem, we would need to build a block map of the 
file to use.  I think such feature is already provided and used by 
LILO/GRUB kinds of things.

-- 
tejun

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: support for sata7 Streaming Feature Set?
  2006-05-18 15:38         ` Jeff Garzik
  2006-05-18 23:18           ` Tejun Heo
@ 2006-05-19 15:16           ` Mark Lord
  1 sibling, 0 replies; 12+ messages in thread
From: Mark Lord @ 2006-05-19 15:16 UTC (permalink / raw)
  To: Jeff Garzik; +Cc: Tejun Heo, Jan Wagner, linux-kernel

Jeff Garzik wrote:
> 
> I seriously doubt writing a whole new ATA driver subsystem will fly :)

Agreed.  ;)

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2006-05-19 15:16 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-05 12:54 support for sata7 Streaming Feature Set? Jan Wagner
2006-05-14  7:06 ` Tejun Heo
2006-05-17  8:30   ` Jan Wagner
2006-05-17 13:40     ` Lennart Sorensen
2006-05-18  9:33       ` Jan Wagner
2006-05-18  2:16     ` Tejun Heo
2006-05-18 13:18       ` Mark Lord
2006-05-18 15:38         ` Jeff Garzik
2006-05-18 23:18           ` Tejun Heo
2006-05-19 15:16           ` Mark Lord
2006-05-18 15:36       ` Jeff Garzik
2006-05-18 23:12         ` Tejun Heo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox