2006-01-18 11:00:30

by Roopesh

[permalink] [raw]
Subject: Synchronization between VFS and special IO requests to a block device.

Hi,

I have an SD card, a partition of which is mounted and is accessed
only through VFS, and certain sectors out of this partition having
some special data which is accessed by the applications only through
certain ioctls to the device.

My problem is in synchronizing/serializing these two accesses to the
hardware, especially since I dont want a VFS request to be handled
by the driver inbetween two specific ioctls. I understand that the
strategy routine should be atomic and that it cant wait on a lock or
sleep. Any pointers/suggestions/help?

Mine is a 2.4 kernel with a uni-processor.

Thanks in Advance,

Roopesh.
PS: Kindly mark a CC: to me if posting. Thanks.


2006-01-19 14:57:53

by Jan Kara

[permalink] [raw]
Subject: Re: Synchronization between VFS and special IO requests to a block device.

Hello,

> I have an SD card, a partition of which is mounted and is accessed
> only through VFS, and certain sectors out of this partition having
> some special data which is accessed by the applications only through
> certain ioctls to the device.
>
> My problem is in synchronizing/serializing these two accesses to the
> hardware, especially since I dont want a VFS request to be handled
> by the driver inbetween two specific ioctls. I understand that the
> strategy routine should be atomic and that it cant wait on a lock or
> sleep. Any pointers/suggestions/help?
If your areas are 4KB (size of pages) aligned and you really always
access either through VFS or though ioctl, then you need no
synchronization (VFS does not care about areas accessed through ioctl)
and ioctl does not care about areas accessed by VFS. Or you need to
somehow ensure that some space written by VFS is written before some
ioctl is called?

Honza

--
Jan Kara <[email protected]>
SuSE CR Labs