From 5a88e43c693f9e0c5dd93e4fd238364262643b5a Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 25 Mar 2010 16:02:54 +0100 Subject: s3: Make sure our CLEAR_IF_FIRST optimization works for serverid.tdb In the child, we fully re-open serverid.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/serverid.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'source3/lib/serverid.c') diff --git a/source3/lib/serverid.c b/source3/lib/serverid.c index 9842ead103..5401eed974 100644 --- a/source3/lib/serverid.c +++ b/source3/lib/serverid.c @@ -27,6 +27,22 @@ struct serverid_key { #endif }; +bool serverid_parent_init(void) +{ + struct tdb_wrap *db; + + db = tdb_wrap_open(talloc_autofree_context(), + lock_path("serverid.tdb"), + 0, TDB_DEFAULT|TDB_CLEAR_IF_FIRST, O_RDWR|O_CREAT, + 0644); + if (db == NULL) { + DEBUG(1, ("could not open serverid.tdb: %s\n", + strerror(errno))); + return false; + } + return true; +} + struct serverid_data { uint64_t unique_id; uint32_t msg_flags; -- cgit