]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:share_mode_lock: consistently debug share_mode_entry records
authorStefan Metzmacher <metze@samba.org>
Fri, 28 Aug 2020 13:56:35 +0000 (15:56 +0200)
committerVolker Lendecke <vl@samba.org>
Mon, 31 Aug 2020 11:57:01 +0000 (11:57 +0000)
share_mode_entry_do(), share_mode_forall_entries() and
share_entry_forall() print the record before the callback is called
and when it was modified or deleted.

This makes it much easier to debug problems.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14428

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/locking/share_mode_lock.c

index 0c5626f4bd1b87378e6fe9a19e864aee82623bba..a1a7b9793cfa7831f13449004c15bf8bc71b255c 100644 (file)
@@ -2023,6 +2023,11 @@ static bool share_mode_for_one_entry(
                  (int)e.stale);
 
        if (e.stale) {
+               if (DEBUGLEVEL>=10) {
+                       DBG_DEBUG("share_mode_entry:\n");
+                       NDR_PRINT_DEBUG(share_mode_entry, &e);
+               }
+
                if (*i < *num_share_modes) {
                        memmove(blob.data,
                                blob.data + SHARE_MODE_ENTRY_SIZE,
@@ -2240,8 +2245,18 @@ static bool share_mode_entry_do(
                goto done;
        }
 
+       if (DEBUGLEVEL>=10) {
+               DBG_DEBUG("entry[%zu]:\n", idx);
+               NDR_PRINT_DEBUG(share_mode_entry, &e);
+       }
+
        fn(&e, ltdb->num_share_entries, &modified, private_data);
 
+       DBG_DEBUG("entry[%zu]: modified=%d, e.stale=%d\n",
+                 idx,
+                 (int)modified,
+                 (int)e.stale);
+
        if (!e.stale && !modified) {
                ret = true;
                goto done;
@@ -2252,9 +2267,8 @@ static bool share_mode_entry_do(
 
        if (e.stale) {
                /*
-                * Move the reset down one entry
+                * Move the rest down one entry
                 */
-
                size_t behind = ltdb->num_share_entries - idx - 1;
                if (behind != 0) {
                        memmove(e_ptr,
@@ -2262,6 +2276,11 @@ static bool share_mode_entry_do(
                                behind * SHARE_MODE_ENTRY_SIZE);
                }
                ltdb->num_share_entries -= 1;
+
+               if (DEBUGLEVEL>=10) {
+                       DBG_DEBUG("share_mode_entry:\n");
+                       NDR_PRINT_DEBUG(share_mode_entry, &e);
+               }
        } else {
                struct share_mode_entry_buf buf;
                bool ok;