]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
g_lock: Pass "data" down to g_lock_trylock()
authorVolker Lendecke <vl@samba.org>
Wed, 23 Oct 2019 09:21:16 +0000 (11:21 +0200)
committerJeremy Allison <jra@samba.org>
Fri, 22 Nov 2019 23:57:46 +0000 (23:57 +0000)
Avoid a call to dbwrap_record_get_value(), dbwrap_do_locked() already
gave us the value.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/lib/g_lock.c

index 8c67a599173b0d8772d9b662b55924170661e77d..3c76b34baa7cf90e6b26dd88a1490e4dda26a256 100644 (file)
@@ -198,11 +198,13 @@ static bool g_lock_conflicts(enum g_lock_type l1, enum g_lock_type l2)
        return true;
 }
 
-static NTSTATUS g_lock_trylock(struct db_record *rec, struct server_id self,
-                              enum g_lock_type type,
-                              struct server_id *blocker)
+static NTSTATUS g_lock_trylock(
+       struct db_record *rec,
+       TDB_DATA data,
+       struct server_id self,
+       enum g_lock_type type,
+       struct server_id *blocker)
 {
-       TDB_DATA data;
        size_t i;
        struct g_lock lck;
        struct g_lock_rec mylock = {0};
@@ -210,8 +212,6 @@ static NTSTATUS g_lock_trylock(struct db_record *rec, struct server_id self,
        bool modified = false;
        bool ok;
 
-       data = dbwrap_record_get_value(rec);
-
        ok = g_lock_parse(data.dptr, data.dsize, &lck);
        if (!ok) {
                return NT_STATUS_INTERNAL_DB_CORRUPTION;
@@ -356,8 +356,8 @@ static void g_lock_lock_fn(
        struct g_lock_lock_fn_state *state = private_data;
        struct server_id blocker = {0};
 
-       state->status = g_lock_trylock(rec, state->self, state->state->type,
-                                      &blocker);
+       state->status = g_lock_trylock(
+               rec, value, state->self, state->state->type, &blocker);
        if (!NT_STATUS_EQUAL(state->status, NT_STATUS_LOCK_NOT_GRANTED)) {
                return;
        }