ntdb: reduce race between creating file and getting open lock.
authorRusty Russell <rusty@rustcorp.com.au>
Mon, 18 Jun 2012 13:00:27 +0000 (22:30 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 19 Jun 2012 03:38:06 +0000 (05:38 +0200)
commit5027f9cd02bf322498313a6b7aabd03fd510d725
tree94d67ad070ec4039c4e90c029a771ecc4f9929b2
parent1765c0f9baf16ff1c2f5f109fb31e411831f0945
ntdb: reduce race between creating file and getting open lock.

In tdb, we grab the open lock immediately after we open the file.  In
ntdb, we usually did some work first.  tdbtorture managed to get in
before the creator grabbed the lock:

testing with 3 processes, 5000 loops, seed=1338246020
ntdb:torture.ntdb:IO Error:ntdb_open: torture.ntdb is not a ntdb file
29023:torture.ntdb:db open failed

At cost of a little duplicated code, we can reduce the race.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/ntdb/open.c