Re: libata: set queue SSD flag for SSD devices

Jens Axboe
2008-10-11T17:49:56Z

On Sat, Oct 11 2008, Arjan van de Ven wrote:
> On Sat, 11 Oct 2008 18:38:44 +0200
> James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
>
> > On Sat, 2008-10-11 at 09:04 -0700, Arjan van de Ven wrote:
> > > On Sat, 11 Oct 2008 17:44:13 +0200
> > > James Bottomley <James.Bottomley@HansenPartnership.com> wrote:
> > >
> > > >
> > > > > So we need something a bit more involved, but not too complex. A
> > > > > fine line...
> > > >
> > > > It's a policy ... just let userspace do it so the user can tune
> > > > it. That's what EMC does now (except I think they key of inquiry
> > > > strings rather than cache size).
> > >
> > >
> > > while the chosen elevator obviously is policy, the kernel really
> > > should pick a sensible default based on what it knows.
> > > Lets put it this way: if userland needs to do a tuning to the kernel
> > > based on data only provided by the kernel, and will always do it the
> > > same way, we should have made that choice the default policy in the
> > > kernel in the first place.
> >
> > Well, this is a bit of a nasty layering problem. We certainly don't
> > want the Block layer to know how to poke at SATA, SCSI and other
> > esoteric media to see what elevator should be the default, so we'd
> > have to craft a new block API that the lower subsystems would
> > implement for this. I'm really not sure it's worth the trouble when
> > the boot system can do it simply from userspace, but I'll defer to
> > Jens.
> >
>
> these devices already give the elevator layer information about the
> device, like optimal/max io size etc.
> having the elevator take a "don't bother optimizing for seeks" flag
> is very much along the same lines, it's a device property that the
> elevator needs to learn about in order to send the right kinds of IO
> down.

Completely agree. And this is very different from the 'choose elevator
based on device properties', a way of thinking that I don't agree with.
This 'non rotational' flag does just that, passes down more information
to the IO scheduler so it can make more informed choices.

--
Jens Axboe