From: Rusty Russell Date: Mon, 16 Aug 2010 00:43:32 +0000 (+0930) Subject: tdb: Fix tdb_check() to work with read-only tdb databases. X-Git-Tag: ctdb-1.10~86 X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=a5db1122ec48d7e7384066848457c850c1a6cf3c;p=sahlberg%2Fctdb.git tdb: Fix tdb_check() to work with read-only tdb databases. (Import from SAMBA bc1c82ea137e1bf6cb55139a666c56ebb2226b23) The function tdb_lockall() uses F_WRLCK internally, which doesn't work on a fd opened with O_RDONLY. Use tdb_lockall_read() instead. --- diff --git a/lib/tdb/common/check.c b/lib/tdb/common/check.c index 6bbfd7d8..2c640434 100644 --- a/lib/tdb/common/check.c +++ b/lib/tdb/common/check.c @@ -311,7 +311,7 @@ int tdb_check(struct tdb_context *tdb, struct tdb_record rec; bool found_recovery = false; - if (tdb_lockall(tdb) == -1) + if (tdb_lockall_read(tdb) == -1) return -1; /* Make sure we know true size of the underlying file. */ @@ -412,12 +412,12 @@ int tdb_check(struct tdb_context *tdb, } free(hashes); - tdb_unlockall(tdb); + tdb_unlockall_read(tdb); return 0; free: free(hashes); unlock: - tdb_unlockall(tdb); + tdb_unlockall_read(tdb); return -1; }