svn commit: linux-cifs-client r64 - in branches:
linux-2.6-cifs-git-devel/fs/cifs
linux-converged-for-old-kernels/fs/cifs
jra at samba.org
jra at samba.org
Wed Jul 26 18:50:47 GMT 2006
Author: jra
Date: 2006-07-26 18:50:47 +0000 (Wed, 26 Jul 2006)
New Revision: 64
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=linux-cifs-client&rev=64
Log:
Correctly implement "slow" fcntl lock system call
(for POSIX locks at least). What this does is add
a new SendReceive varient, SendReceiveBlockingLock(),
currently only used for POSIX blocking lock calls.
Inside this varient it calls wait_event_interruptible()
instead of wait_event(), which allows a signal to
cause us to return. If we get a signal we cancel the
lock at the server by sending an NT_CANCEL SMB
request, then wait for the POSIX lock reply. We
then return -ERESTARTSYS allowing the system call
to be restarted. As I needed to reuse an existing
mid (for the cancel) I changed the header_assemble()
call to take a passed in Mid value, rather than
having it always generate one itself. The remaining
code change it to make SendReceiveBlockingLock
handle cancelling Windows blocking locks. This will
be by sending a LockingX call with LOCK_CANCEL
before receiving the LockingX reply. Once this
is done I think the "long wait" code (timeout > 2) code
can be removed from SendReceive() and SendReceive2()
as only blocking lock calls use this (if not I'll
leave it in).
Jeremy
Modified:
branches/linux-2.6-cifs-git-devel/fs/cifs/cifsproto.h
branches/linux-2.6-cifs-git-devel/fs/cifs/cifssmb.c
branches/linux-2.6-cifs-git-devel/fs/cifs/connect.c
branches/linux-2.6-cifs-git-devel/fs/cifs/misc.c
branches/linux-2.6-cifs-git-devel/fs/cifs/transport.c
branches/linux-converged-for-old-kernels/fs/cifs/cifsproto.h
branches/linux-converged-for-old-kernels/fs/cifs/cifssmb.c
branches/linux-converged-for-old-kernels/fs/cifs/connect.c
branches/linux-converged-for-old-kernels/fs/cifs/misc.c
branches/linux-converged-for-old-kernels/fs/cifs/transport.c
Changeset:
Sorry, the patch is too large (829 lines) to include; please use WebSVN to see it!
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=linux-cifs-client&rev=64
More information about the samba-cvs
mailing list