That's a block layer requirement (blk_queue_start_tag does the dequeue).
But yes, for untagged requests, we still dequeue them manually.
> At least historically that's a major mistake, and generates a crappy
> elevator, because it removes information from the block layer about where
> the disk is (or is going to be).
>
> I know Andrew thinks that SCSI tagged queuing is a bunch of crap, and he
> has the latency numbers to prove it. He blames the SCSI disks themselves,
> but I think it might be the fact that SCSI makes it impossible to make a
> fair queuing algorithm for higher levels by hiding information.
>
> Has anybody looked at just removing the request at command _completion_
> time instead? That's what IDE does, and it's the _right_ thing to do.
Well...I could do it, but since it only applies to untagged devices
(which is really tapes and some CD-ROMs nowadays), I'm not sure it would
be worth the effort.
> I'd hate for SATA to pick up these kinds of mistakes from the SCSI layer.
The elevator is based on linear head movements. I'm not sure its
optimal to figure out a way to leave all the executing tagged requests
in the queue, is it? They can be spread out all over the disc with no
idea which one the disc is currently executing.
James
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/