From 28b8d421364a1d55bf28a2552f58b5e4325d2bbb Mon Sep 17 00:00:00 2001 From: Ira Cooper Date: Thu, 20 May 2010 11:13:37 -0400 Subject: s3: added support for fake oplocks in SMB2. --- source3/smbd/smb2_create.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'source3') diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c index cc65df235c..31813cc82e 100644 --- a/source3/smbd/smb2_create.c +++ b/source3/smbd/smb2_create.c @@ -421,9 +421,17 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, int info; struct timespec write_time_ts; struct smb2_create_blobs out_context_blobs; + int requested_oplock_level; ZERO_STRUCT(out_context_blobs); + if(lp_fake_oplocks(SNUM(smb2req->tcon->compat_conn))) { + requested_oplock_level = NO_OPLOCK; + } else { + requested_oplock_level = in_oplock_level; + } + + if (!smb2req->async) { /* New create call. */ req = tevent_req_create(mem_ctx, &state, @@ -695,7 +703,7 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, in_create_disposition, in_create_options, in_file_attributes, - map_smb2_oplock_levels_to_samba(in_oplock_level), + map_smb2_oplock_levels_to_samba(requested_oplock_level), allocation_size, 0, /* private_flags */ sec_desc, @@ -766,7 +774,11 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX *mem_ctx, smb2req->compat_chain_fsp = smb1req->chain_fsp; - state->out_oplock_level = map_samba_oplock_levels_to_smb2(result->oplock_type); + if(lp_fake_oplocks(SNUM(smb2req->tcon->compat_conn))) { + state->out_oplock_level = in_oplock_level; + } else { + state->out_oplock_level = map_samba_oplock_levels_to_smb2(result->oplock_type); + } if ((in_create_disposition == FILE_SUPERSEDE) && (info == FILE_WAS_OVERWRITTEN)) { -- cgit