From 4cdbe07b2563b56c2d8b9a5733eedf25245ba86b Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 25 Mar 2010 15:59:41 +0100 Subject: s3: Make sure our CLEAR_IF_FIRST optimization works for messaging.tdb In the child, we fully re-open messaging.tdb, which leads to one fcntl lock for CLEAR_IF_FIRST detection per smbd. This opens the tdb in the parent and holds it, so that tdb_reopen_all correctly catches the CLEAR_IF_FIRST bit. --- source3/lib/messages_local.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source3/lib') diff --git a/source3/lib/messages_local.c b/source3/lib/messages_local.c index a58c7eb95f..b1712823a1 100644 --- a/source3/lib/messages_local.c +++ b/source3/lib/messages_local.c @@ -133,6 +133,22 @@ NTSTATUS messaging_tdb_init(struct messaging_context *msg_ctx, return NT_STATUS_OK; } +bool messaging_tdb_parent_init(void) +{ + struct tdb_wrap *db; + + db = tdb_wrap_open(talloc_autofree_context(), + lock_path("messages.tdb"), 0, + TDB_CLEAR_IF_FIRST|TDB_DEFAULT|TDB_VOLATILE, + O_RDWR|O_CREAT,0600); + if (db == NULL) { + DEBUG(1, ("could not open messaging.tdb: %s\n", + strerror(errno))); + return false; + } + return true; +} + /******************************************************************* Form a static tdb key from a pid. ******************************************************************/ -- cgit