diff options
author | Ira Cooper <samba@ira.wakeful.net> | 2010-05-20 11:13:37 -0400 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-05-21 09:57:33 -0700 |
commit | 28b8d421364a1d55bf28a2552f58b5e4325d2bbb (patch) | |
tree | 9ea5b78f102479eb69d3e19185e1861a807c84ac /source3/smbd | |
parent | dd3c367153353407f41642b6da4549057cc4c1e7 (diff) | |
download | samba-28b8d421364a1d55bf28a2552f58b5e4325d2bbb.tar.gz samba-28b8d421364a1d55bf28a2552f58b5e4325d2bbb.tar.bz2 samba-28b8d421364a1d55bf28a2552f58b5e4325d2bbb.zip |
s3: added support for fake oplocks in SMB2.
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/smb2_create.c | 16 |
1 files changed, 14 insertions, 2 deletions
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)) { |