Output to block device in linux kernel

Output to block device in linux kernel

Elazar Leibovich elazarl at gmail.com
Wed Apr 24 19:33:37 IDT 2013


I'm trying to understand in more depth the handling of physical harddrive
io in the linux kernel (from pdflush to the actual filesystem driver).

When reading about the matter, I found out I'm missing some information at
a more basic level.

How a regular hard drive behaves? How is it implemented in the Linux kernel.

If I understand that correctly, one can abstract a hard drive as a physical
device, which gets (how? By DMA?) A block aligned chunk of bytes (is block
size different per device?), an in device coordinates (sector and block
offset? Is that different power hard drive type?) And a request whether to
read or to write.

Then the hard drive will wake up and fulfills your request, and ping you
when it's done (with IRQ?).

I also assume that the typical hard drive will fullfil at most one request
in parallel.

Now comes a  questions.

1. When does the dreaded 10ms seek occur? Will it definitely occur at every
request (so to saturate the HD bus, one must use as large requests as
possible)?

2. If (1) is correct, what is the largest the HD can spill without further
seeking?

3. Which other things uses the bus the HD uses? What can cause IO
contention?

I warn you that I'm completely ignorant about this topics, so my questions
might be totally idiotic, However I couldn't find a good introduction, and
I think that Understanding the Linux Kernel haven't touched those more
details. I hope I could get a pointer from the least.

Thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.cs.huji.ac.il/pipermail/linux-il/attachments/20130424/aa5d9389/attachment.html>


More information about the Linux-il mailing list