From 5eb7420f119df890e2e4b7acd904dc2da70793a6 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 14 May 2007 17:56:00 +0000 Subject: r22864: in SMB2 mode we need to cancel an existing lock with a conflicting lock if they're on the same handle and the same range metze (This used to be commit 36384bb4a071dcc366ae1039bd0579f08b84e238) --- source4/ntvfs/posix/pvfs_lock.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source4/ntvfs/posix/pvfs_lock.c b/source4/ntvfs/posix/pvfs_lock.c index 4527cd3ed2..9b5823e69e 100644 --- a/source4/ntvfs/posix/pvfs_lock.c +++ b/source4/ntvfs/posix/pvfs_lock.c @@ -69,8 +69,13 @@ static void pvfs_lock_async_failed(struct pvfs_state *pvfs, int i, NTSTATUS status) { + /* in SMB2 mode we also try to unlock failing lock */ + if (req->ctx->protocol != PROTOCOL_SMB2) { + i--; + } + /* undo the locks we just did */ - for (i=i-1;i>=0;i--) { + for (;i>=0;i--) { brl_unlock(pvfs->brl_context, f->brl_handle, locks[i].pid, @@ -377,8 +382,12 @@ NTSTATUS pvfs_lock(struct ntvfs_module_context *ntvfs, DLIST_ADD(f->pending_list, pending); return NT_STATUS_OK; } + /* in SMB2 mode we also try to unlock failing lock */ + if (req->ctx->protocol != PROTOCOL_SMB2) { + i--; + } /* undo the locks we just did */ - for (i=i-1;i>=0;i--) { + for (;i>=0;i--) { brl_unlock(pvfs->brl_context, f->brl_handle, locks[i].pid, -- cgit