tdb: Reimplementation of Metze's "lib/tdb: if we know pwrite and pread are thread...
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 30 Jul 2009 02:22:08 +0000 (11:52 +0930)
committerStefan Metzmacher <metze@samba.org>
Fri, 31 Jul 2009 12:40:28 +0000 (14:40 +0200)
commit3b2f074bda8734a0b30a3e31117c0217d890809c
treed31c49e0b44eacdeeca18eb9a18e26e05e2f7b60
parentfa91bc67199f0d45a0e570b43aeafd816a5491bf
tdb: Reimplementation of Metze's "lib/tdb: if we know pwrite and pread are thread/fork safe tdb_reopen_all() should be a noop".

This version just wraps the reopen code, so we still re-grab the lock and do
the normal sanity checks.

The reason we do this at all is to avoid global fd limits, see:
http://forums.fedoraforum.org/showthread.php?t=210393

Note also that this whole reopen concept is fundamentally racy: if the parent
goes away before the child calls tdb_reopen_all, the database can be left
without an active lock and another TDB_CLEAR_IF_FIRST opener will clear it.
A fork_with_tdbs() wrapper could use a pipe to solve this, but it's hardly
elegant (what if there are other independent things which have similar needs?).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
lib/tdb/common/open.c