From ef4054eb88df7b4809c4cbe99b65a0e0efcd78c4 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 24 Oct 2013 20:53:36 +0200 Subject: Revert "smbd: Move oplock/sharemode ops into one place" This reverts commit 7b70fa18734d9ceb020fe3e5d4cc0c26cd27a484. This is a change in behaviour which needs much further investigation and testing. Signed-off-by: Volker Lendecke Reviewed-by: David Disseldorp Autobuild-User(master): David Disseldorp Autobuild-Date(master): Fri Oct 25 14:22:20 CEST 2013 on sn-devel-104 --- source3/smbd/open.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/source3/smbd/open.c b/source3/smbd/open.c index 28c2c1c844..4db673acd3 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -1435,6 +1435,13 @@ static void grant_fsp_oplock_type(files_struct *fsp, fsp->oplock_type = NO_OPLOCK; } + if (is_stat_open(fsp->access_mask)) { + /* Leave the value already set. */ + DEBUG(10,("grant_fsp_oplock_type: oplock type 0x%x on file %s\n", + fsp->oplock_type, fsp_str_dbg(fsp))); + return; + } + got_level2_oplock = false; got_a_none_oplock = false; @@ -2610,6 +2617,8 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn, return status; } + grant_fsp_oplock_type(fsp, lck, oplock_request); + /* * We have the share entry *locked*..... */ @@ -2671,7 +2680,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn, if (file_existed) { /* stat opens on existing files don't get oplocks. */ if (is_stat_open(open_access_mask)) { - oplock_request = NO_OPLOCK; + fsp->oplock_type = NO_OPLOCK; } } @@ -2694,8 +2703,6 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn, * file structs. */ - grant_fsp_oplock_type(fsp, lck, oplock_request); - status = set_file_oplock(fsp); if (!NT_STATUS_IS_OK(status)) { /* -- cgit