From 333c92384b0680b8f8e5198dd68d49b249b34ec7 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Sun, 8 Jan 2012 19:04:39 +0100 Subject: s3: Enforce a lock order in dbwrap This makes sure we do not deadlock from doing two dbwrap_fetch_locked in two processes in different orders. At open time, we assign a strict order to all databases. lock_order 1 will be locked first, lock_order 2 second. No two records of the same lock order may be locked at the same time. --- source3/lib/dbwrap/dbwrap_open.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source3/lib/dbwrap/dbwrap_open.c') diff --git a/source3/lib/dbwrap/dbwrap_open.c b/source3/lib/dbwrap/dbwrap_open.c index 23d299511b..af24ed8847 100644 --- a/source3/lib/dbwrap/dbwrap_open.c +++ b/source3/lib/dbwrap/dbwrap_open.c @@ -124,5 +124,8 @@ struct db_context *db_open(TALLOC_CTX *mem_ctx, result = db_open_tdb(mem_ctx, name, hash_size, tdb_flags, open_flags, mode); } + if (result != NULL) { + result->lock_order = lock_order; + } return result; } -- cgit