From f4092ecec722d7e2c04f3049630975af9e96bc07 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 30 Apr 2010 21:03:20 -0700 Subject: Plumb the SMB2 front end into the blocking lock backend. Metze, you'll probably be happier with this work as it doesn't abuse tevent in the way you dislike. This is a first cut at the code, which will need lots of testing but I'm hoping this will give people an idea of where I'm going with this. Jeremy. --- source3/smbd/globals.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'source3/smbd/globals.h') diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index be140ba445..7d1776d4df 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -152,13 +152,6 @@ NTSTATUS smb2_signing_check_pdu(DATA_BLOB session_key, const struct iovec *vector, int count); -struct smbd_lock_element { - uint32_t smbpid; - enum brl_type brltype; - uint64_t offset; - uint64_t count; -}; - NTSTATUS smbd_do_locking(struct smb_request *req, files_struct *fsp, uint8_t type, @@ -313,6 +306,7 @@ void smbd_smb2_request_dispatch_immediate(struct tevent_context *ctx, /* SMB1 -> SMB2 glue. */ void send_break_message_smb2(files_struct *fsp, int level); +struct blocking_lock_record *get_pending_smb2req_blr(struct smbd_smb2_request *smb2req); bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck, struct smb_request *req, files_struct *fsp, @@ -324,6 +318,7 @@ bool push_blocking_lock_request_smb2( struct byte_range_lock *br_lck, uint64_t offset, uint64_t count, uint32_t blocking_pid); +void process_blocking_lock_queue_smb2(void); void cancel_pending_lock_requests_by_fid_smb2(files_struct *fsp, struct byte_range_lock *br_lck); /* From smbd/smb2_create.c */ @@ -570,6 +565,11 @@ struct smbd_server_connection { struct smbd_smb2_session *list; } sessions; + struct { + /* The event that makes us process our blocking lock queue */ + struct timed_event *brl_timeout; + bool blocking_lock_unlock_state; + } locks; struct smbd_smb2_request *requests; } smb2; }; -- cgit