[ECOS] Re: disk access mutex's
Savin Zlobec
savin@elatec.si
Thu Sep 2 14:09:00 GMT 2004
Jeff Cooper wrote:
>On Wednesday 01 September 2004 02:01 am, Savin Zlobec wrote:
>
>
>>Jeff Cooper wrote:
>>
>>
>>>One thing I'm curious about is the lack of mutex's when accessing the CF
>>>hardware in the Elatec driver.
>>>
>>>Is contention for the disk device handled at a layer higher up than the
>>>device driver? I've been digging through the source for the io disk and
>>>haven't found any kind of access control.
>>>
>>>Am I just missing where this is being handled? If so, can anyone point
>>>me in the right direction?
>>>
>>>
>>If you intend to access several partitions simultaneousely or one
>>partition through an fs
>>that doesn't serialize its io operations, then the disk io funs should
>>be mutex protected.
>>
>>In any case you are right io_disk need an mutex and it should be in
>>disk.c not in lower layers.
>>
>>
>
>Thanks for the info!
>
>What would be the advantage to handling mutex's in a higher layer rather than
>a lower one?
>
>
Since some data is shared between the master disk device and per
partition devices it should be
mutex protected in order for the disk_io layer to be thread safe.
>The only one I can thing of would be that the device driver writer wouldn't
>have to be concerned about knowing where to place the protection and could
>assume that read/write calls are atomic.
>
>But couldn't that also be considered a disadvantage as well?
>
>My thought is that someone writing a device driver for a particular piece of
>hardware should know when the hardware needs mutex protection. Doing it in
>the lower layers would allow a finer grain of control over when the hardware
>is blocked.
>
>
The low level read and write funs are just about fetching or storing one
sector to/from the
hardware device. Most of the hw will be busy during this time and
locking the whole read/write
call should be fine. Maybe some hw with internal buffers could take
advantage of finer
grained locking, but I think that would be hard to implement efficiently
(it would probably
require some awareness of the higher layers like block cache or fs).
I think that locking should go into io_disk and if we ever need more
control over this, then
the io_disk - hw_driver interaction could be extended in order for the
hw driver to signal the
io_disk layer that it wants to take over the locking.
savin
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list