]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
tdb: introduce tdb_chainlock_read_nonblock(), a nonblock variant of tdb_chainlock_read()
authorAlexander Drozdov <al.drozdov@gmail.com>
Tue, 28 Apr 2015 04:42:43 +0000 (07:42 +0300)
committerJeremy Allison <jra@samba.org>
Tue, 28 Apr 2015 19:28:18 +0000 (21:28 +0200)
Signed-off-by: Alexander Drozdov <al.drozdov@gmail.com>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
lib/tdb/common/lock.c
lib/tdb/include/tdb.h

index 6644c4034e05c13d602fe0c54c13afa4b3f08e4e..195dbb5daf265c8d8f997a3ccdd81fe7b642945c 100644 (file)
@@ -858,6 +858,13 @@ _PUBLIC_ int tdb_chainunlock_read(struct tdb_context *tdb, TDB_DATA key)
        return tdb_unlock(tdb, BUCKET(tdb->hash_fn(&key)), F_RDLCK);
 }
 
+_PUBLIC_ int tdb_chainlock_read_nonblock(struct tdb_context *tdb, TDB_DATA key)
+{
+       int ret = tdb_lock_nonblock(tdb, BUCKET(tdb->hash_fn(&key)), F_RDLCK);
+       tdb_trace_1rec_ret(tdb, "tdb_chainlock_read_nonblock", key, ret);
+       return ret;
+}
+
 /* record lock stops delete underneath */
 int tdb_lock_record(struct tdb_context *tdb, tdb_off_t off)
 {
index 03e429cc8a854aa206ef1511424e878ab930a9c4..8478ca20d7b2621bd1f7ebaf1cd275351d66f329 100644 (file)
@@ -884,6 +884,7 @@ int tdb_chainlock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainlock_nonblock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainunlock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainlock_read(struct tdb_context *tdb, TDB_DATA key);
+int tdb_chainlock_read_nonblock(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainunlock_read(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainlock_mark(struct tdb_context *tdb, TDB_DATA key);
 int tdb_chainlock_unmark(struct tdb_context *tdb, TDB_DATA key);