diff options
author | Jeremy Allison <jra@samba.org> | 2010-04-22 23:52:19 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-04-22 23:52:19 -0700 |
commit | 8f67f873ace91964da066c421986e260aceba75b (patch) | |
tree | 21776965085b9926a28ff5ed41ef147176668386 /source3/smbd/globals.h | |
parent | 9cd712d1bc1ac5140597e86b5c634d2c820d86de (diff) | |
download | samba-8f67f873ace91964da066c421986e260aceba75b.tar.gz samba-8f67f873ace91964da066c421986e260aceba75b.tar.bz2 samba-8f67f873ace91964da066c421986e260aceba75b.zip |
Make deferred opens (NT_STATUS_SHARING_VIOLATION) work over SMB2.
Makes SMB2Create call re-entrant internally.
Now this infrastructure is in place, oplocks will follow shortly.
Tested with Win7 client and with W2K8R2.
Jeremy.
Diffstat (limited to 'source3/smbd/globals.h')
-rw-r--r-- | source3/smbd/globals.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 951d3522f7..a86f0e9bc2 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -318,6 +318,10 @@ NTSTATUS smbd_smb2_request_process_notify(struct smbd_smb2_request *req); NTSTATUS smbd_smb2_request_process_getinfo(struct smbd_smb2_request *req); NTSTATUS smbd_smb2_request_process_setinfo(struct smbd_smb2_request *req); NTSTATUS smbd_smb2_request_process_break(struct smbd_smb2_request *req); +NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req); +void smbd_smb2_request_dispatch_immediate(struct tevent_context *ctx, + struct tevent_immediate *im, + void *private_data); /* SMB1 -> SMB2 glue. */ void send_break_message_smb2(files_struct *fsp, uint8_t level); @@ -332,13 +336,14 @@ bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck, uint64_t offset, uint64_t count, uint32_t blocking_pid); -void remove_deferred_open_message_smb2(uint64_t mid); -void schedule_deferred_open_message_smb2(uint64_t mid); -bool open_was_deferred_smb2(uint64_t mid); -bool get_deferred_open_message_state_smb2(uint64_t mid, +/* From smbd/smb2_create.c */ +bool get_deferred_open_message_state_smb2(struct smbd_smb2_request *smb2req, struct timeval *p_request_time, void **pp_state); -bool push_deferred_open_message_smb2(struct smb_request *req, +bool open_was_deferred_smb2(uint64_t mid); +void remove_deferred_open_message_smb2(uint64_t mid); +void schedule_deferred_open_message_smb2(uint64_t mid); +bool push_deferred_open_message_smb2(struct smbd_smb2_request *smb2req, struct timeval request_time, struct timeval timeout, char *private_data, |