From f0a933d1408678fabc856e89a5aaebb792047de3 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 16 Nov 2009 09:40:47 +0100 Subject: s3: Cache brlock.tdb entries for the fast read&write strict locking code path For a netbench run this gains around 2% user-space CPU, fetching a 100MB file takes around 4% less. --- source3/include/proto.h | 3 +-- source3/include/smb.h | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'source3/include') diff --git a/source3/include/proto.h b/source3/include/proto.h index cad8651974..feeac59004 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -3428,8 +3428,7 @@ int brl_forall(void (*fn)(struct file_id id, struct server_id pid, void *private_data); struct byte_range_lock *brl_get_locks(TALLOC_CTX *mem_ctx, files_struct *fsp); -struct byte_range_lock *brl_get_locks_readonly(TALLOC_CTX *mem_ctx, - files_struct *fsp); +struct byte_range_lock *brl_get_locks_readonly(files_struct *fsp); void brl_register_msgs(struct messaging_context *msg_ctx); /* The following definitions come from locking/locking.c */ diff --git a/source3/include/smb.h b/source3/include/smb.h index 2ff60f6c44..a3acb7c415 100644 --- a/source3/include/smb.h +++ b/source3/include/smb.h @@ -461,6 +461,14 @@ typedef struct files_struct { struct files_struct *base_fsp; /* placeholder for delete on close */ + /* + * Read-only cached brlock record, thrown away when the + * brlock.tdb seqnum changes. This avoids fetching data from + * the brlock.tdb on every read/write call. + */ + int brlock_seqnum; + struct byte_range_lock *brlock_rec; + struct dptr_struct *dptr; } files_struct; -- cgit