Hello

I try to summarize the thing so far.

NetBSD filesystems implement advisory locks, where the only place the
filesystem actually check locks as VOP_ADVLOCK. Any other operation 
performed on a file region locked by someone else succeeds: the locks
are only advisory, and it is the application duty to enforce it.

The GLusterFS people are working to implement mandatory locks, where
the filesystem actually enforces locks on any operation: if you write
to a region locked by someone else, you get a failure. 

Mandatory locks must be implemented at the filesystem level, because
in the distributed filesystem case, the local kernel knows nothing 
about locks sets form other machines. It requires the filesystem to 
distinguish operations on different struct file for a given vnode, 
because a lock may be acquired for a struct file and not for another 
one. Currently NetBSD does not pass this information to filesystems.

I proposed a patch that embeds the required information in struct cred:
https://ftp.espci.fr/shadow/manu/filecred1.patch

Ome expresse dissatisfaction with the approach, ostly because struct
cred would not be the right place. Doing it another was means modifying
the VFS interface to add a reference to struct file where needed (that
is: anything that touch file content). Would that approach be better?
If the struct cred way is preferred, feedback on the actual implementation
on the above patch will be apprciated.

For the sake of completeness: once VFS support is there, PUFFS and 
PERFUSE must be improved so that the new informaiton is sent to FUSE
filesystems. I have not yet worked on that part.


-- 
Emmanuel Dreyfus
m...@netbsd.org

Reply via email to