From 82af221e4a7e456f580f16bc5d2fd904fc018c96 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 14 Jan 2000 04:32:57 +0000 Subject: we now pass all byte range locking tests the last piece was to use a smb timeout slightly larger than the locking timeout in bloking locks to prevent a race (This used to be commit 1b54cb4a33a65e62c2e3189b78ef073869a60c75) --- source3/locking/locking.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'source3/locking/locking.c') diff --git a/source3/locking/locking.c b/source3/locking/locking.c index e95ec08c58..350057d1a7 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -40,6 +40,19 @@ static TDB_CONTEXT *tdb; int global_smbpid; + +/**************************************************************************** +remove any locks on this fd +****************************************************************************/ +void locking_close_file(files_struct *fsp) +{ + if (!lp_locking(SNUM(fsp->conn))) return; + + brl_close(fsp->fd_ptr->dev, fsp->fd_ptr->inode, + getpid(), fsp->conn->cnum, fsp->fnum); +} + + /**************************************************************************** Utility function called to see if a file region is locked. ****************************************************************************/ @@ -83,7 +96,7 @@ BOOL do_lock(files_struct *fsp,connection_struct *conn, lock_type, (double)offset, (double)count, fsp->fsp_name )); if (OPEN_FSP(fsp) && fsp->can_lock && (fsp->conn == conn)) { - ok = brl_lock(fsp->fd_ptr->dev, fsp->fd_ptr->inode, + ok = brl_lock(fsp->fd_ptr->dev, fsp->fd_ptr->inode, fsp->fnum, global_smbpid, getpid(), conn->cnum, offset, count, lock_type); @@ -114,7 +127,7 @@ BOOL do_unlock(files_struct *fsp,connection_struct *conn, (double)offset, (double)count, fsp->fsp_name )); if (OPEN_FSP(fsp) && fsp->can_lock && (fsp->conn == conn)) { - ok = brl_unlock(fsp->fd_ptr->dev, fsp->fd_ptr->inode, + ok = brl_unlock(fsp->fd_ptr->dev, fsp->fd_ptr->inode, fsp->fnum, global_smbpid, getpid(), conn->cnum, offset, count); } -- cgit