Implemented OPLOCK for FreeBsd

Jeremy Allison jeremy at valinux.com
Fri Sep 7 10:33:07 GMT 2001


Ephi Dror wrote:
> 
> Thanks Andrew,
> 
> The implementation is based on Linux API.
> 
> I created a new file in source/smbd called oplock_fbsd.c that implements the
> kernel specific support for FreeBSD.
> 
> In general, I added two more commands to fcntl for FreeBSD: F_SETLEASE and
> F_GETLEASE.
> 
> In the Vonde layer, I added a slist of oplock files. For each oplock file I
> keep information such as the proc pointer, fd and vnode.
> For each open file by either local FS or NFS (not really open), I added a
> check to see if the file is oplocked, if yes, it sends a signal to the smbd
> that holds the oplock so it can break the oplock.
> In the mean time, that process is waiting on tsleep until the oplock break
> is done or a timeout.
> 
> In Linux, as part of the signal, the fd is passed to the signal handler,
> however in FreeBSD  I did not know how to pass that fd information from the
> kernel to user land so I used fcntl with F_GETLEASE to pass me back the fd
> instead of the pid. It is a kludge until I find the way to do it right.
> 
> We are going to test it here and welcome anyone who is interested to help.
> As soon as it become mature, we will be more than happy to submit it to
> SAMBA and everyone else in the world.

Thats' great ! As FreeBSD runs under vmware, can you
send instructions as to what version of FreeBSD to
test this out under ?

I'd like to test this, but it won't be until after
2.2.2 ships (few weeks).

Have you informed Jordan and the other FreeBSD developers 
(I'm CC:ing Jordan on this message) ? I'm sure they'll be
interested in including this (it's something that would
help MaxOS X enormously also).

Jeremy.

-- 
--------------------------------------------------------
Buying an operating system without source is like buying
a self-assembly Space Shuttle with no instructions.
--------------------------------------------------------




More information about the samba-technical mailing list