From 738b2abe784bc38bdaf1abc913a401e0e732e188 Mon Sep 17 00:00:00 2001 From: Pavel Shilovsky Date: Mon, 31 Jan 2011 20:20:24 +0300 Subject: s4: Don't grant level II oplock to a file with byte-range locks. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pavel Shilovsky Signed-off-by: Matthias Dieter Wallnöfer Reviewed-by: Stefan Metzmacher Autobuild-User: Matthias Dieter Wallnöfer Autobuild-Date: Tue Feb 15 11:09:17 CET 2011 on sn-devel-104 --- source4/ntvfs/posix/pvfs_open.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'source4/ntvfs/posix/pvfs_open.c') diff --git a/source4/ntvfs/posix/pvfs_open.c b/source4/ntvfs/posix/pvfs_open.c index da32c7f9b6..08a54f8e42 100644 --- a/source4/ntvfs/posix/pvfs_open.c +++ b/source4/ntvfs/posix/pvfs_open.c @@ -1197,7 +1197,7 @@ NTSTATUS pvfs_open(struct ntvfs_module_context *ntvfs, struct pvfs_file *f; struct ntvfs_handle *h; NTSTATUS status; - int fd; + int fd, count; struct odb_lock *lck; uint32_t create_options; uint32_t create_options_must_ignore_mask; @@ -1569,6 +1569,16 @@ NTSTATUS pvfs_open(struct ntvfs_module_context *ntvfs, f->handle->fd = fd; + status = brl_count(f->pvfs->brl_context, f->brl_handle, &count); + if (!NT_STATUS_IS_OK(status)) { + talloc_free(lck); + return status; + } + + if (count != 0) { + oplock_level = OPLOCK_NONE; + } + /* now really mark the file as open */ status = odb_open_file(lck, f->handle, name->full_name, &f->handle->fd, name->dos.write_time, -- cgit