Thread (2 messages) 2 messages, 2 authors, 2013-02-08
  • (off-list ancestor, not in this archive)
  • hd controller · Valdis.Kletnieks at vt.edu <hidden> · 2013-02-08
  • hd controller · Peter Teoh <hidden> · 2013-02-08

hd controller

From: Peter Teoh <hidden>
Date: 2013-02-08 00:44:26

Possibly related (same subject, not in this thread)

good sharing.   following up on your comments:

in the kernel source:

block/*.c are the files for block I/O related stuff - the layer just before
ATA, implementing stuff like elevator I/O etc.
drivers/block/*.c:  hardware-specific files that understand how to talk to
each type of harddisk.
drivers/scsi/*.c:   generally SCSI protocol related stuff (lib*.c), but may
contain device specific stuff.
drivers/ide/*.c:
drivers/ata/*.c:   among the lowest level just before sending out port I/O
operation.

On Fri, Feb 8, 2013 at 8:26 AM, [off-list ref] wrote:
On Fri, 08 Feb 2013 07:48:39 +0800, Peter Teoh said:
quoted
So the drivers just literally concatenate these command into a string and
send it over to the device.
The reason that good disk drivers are hard to write is because it isn't
*just* literally concatenating the commands - it also has to do memory
management (make sure that everybody's data ends up in the right buffers),
command queue management, elevator management (if there's multiple I/O
requests pending from userspace, what order do we issue them in?), error
recovery, power management, and a ton of other stuff...


-- 
Regards,
Peter Teoh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20130208/4281ba0b/attachment.html 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help