From 184cc138b6fcd832fd084a919d65ad2f273bf5eb Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 3 Sep 2013 13:57:11 +0000 Subject: smbd: Remove separate oplock_type parameter from set_file_oplock This avoids the question where it could happen that something else but fsp->oplock_type might be useful as an argument here. Signed-off-by: Volker Lendecke Reviewed-by: David Disseldorp --- source3/smbd/durable.c | 2 +- source3/smbd/open.c | 2 +- source3/smbd/oplock.c | 7 +++---- source3/smbd/proto.h | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/source3/smbd/durable.c b/source3/smbd/durable.c index 15d70058c6..c5281a8856 100644 --- a/source3/smbd/durable.c +++ b/source3/smbd/durable.c @@ -864,7 +864,7 @@ NTSTATUS vfs_default_durable_reconnect(struct connection_struct *conn, return NT_STATUS_OBJECT_NAME_NOT_FOUND; } - status = set_file_oplock(fsp, fsp->oplock_type); + status = set_file_oplock(fsp); if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("vfs_default_durable_reconnect failed to set oplock " "after opening file: %s\n", nt_errstr(status))); diff --git a/source3/smbd/open.c b/source3/smbd/open.c index c33a4cf357..4db673acd3 100644 --- a/source3/smbd/open.c +++ b/source3/smbd/open.c @@ -2703,7 +2703,7 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn, * file structs. */ - status = set_file_oplock(fsp, fsp->oplock_type); + status = set_file_oplock(fsp); if (!NT_STATUS_IS_OK(status)) { /* * Could not get the kernel oplock diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index 36a4b5ba1d..b5d6b54b14 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -50,7 +50,7 @@ void break_kernel_oplock(struct messaging_context *msg_ctx, files_struct *fsp) disabled (just sets flags). ****************************************************************************/ -NTSTATUS set_file_oplock(files_struct *fsp, int oplock_type) +NTSTATUS set_file_oplock(files_struct *fsp) { struct smbd_server_connection *sconn = fsp->conn->sconn; struct kernel_oplocks *koplocks = sconn->oplocks.kernel_ops; @@ -67,14 +67,13 @@ NTSTATUS set_file_oplock(files_struct *fsp, int oplock_type) if ((fsp->oplock_type != NO_OPLOCK) && use_kernel && - !koplocks->ops->set_oplock(koplocks, fsp, oplock_type)) + !koplocks->ops->set_oplock(koplocks, fsp, fsp->oplock_type)) { return map_nt_error_from_unix(errno); } - fsp->oplock_type = oplock_type; fsp->sent_oplock_break = NO_BREAK_SENT; - if (oplock_type == LEVEL_II_OPLOCK) { + if (fsp->oplock_type == LEVEL_II_OPLOCK) { sconn->oplocks.level_II_open++; } else if (EXCLUSIVE_OPLOCK_TYPE(fsp->oplock_type)) { sconn->oplocks.exclusive_open++; diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index bead710065..d365545fe9 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -659,7 +659,7 @@ NTSTATUS get_relative_fid_filename(connection_struct *conn, /* The following definitions come from smbd/oplock.c */ void break_kernel_oplock(struct messaging_context *msg_ctx, files_struct *fsp); -NTSTATUS set_file_oplock(files_struct *fsp, int oplock_type); +NTSTATUS set_file_oplock(files_struct *fsp); bool remove_oplock(files_struct *fsp); bool downgrade_oplock(files_struct *fsp); void contend_level2_oplocks_begin(files_struct *fsp, -- cgit