btrfs: assert we join log transaction at btrfs_del_dir_entries_in_log()
authorFilipe Manana <fdmanana@suse.com>
Thu, 29 May 2025 15:25:29 +0000 (16:25 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Jul 2025 21:53:29 +0000 (23:53 +0200)
We are supposed to be able to join a log transaction at that point, since
we have determined that the inode was logged in the current transaction
with the call to inode_logged(). So ASSERT() we joined a log transaction
and also warn if we didn't in case assertions are disabled (the kernel
config doesn't have CONFIG_BTRFS_ASSERT=y), so that the issue gets noticed
and reported if it ever happens.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c

index cb20f124812a99a34f75424ab1c7e22aa6c890e4..58984ca2bfad2b2cd1b69890cedc7521dbe7d0b1 100644 (file)
@@ -3473,7 +3473,8 @@ void btrfs_del_dir_entries_in_log(struct btrfs_trans_handle *trans,
        }
 
        ret = join_running_log_trans(root);
-       if (ret)
+       ASSERT(ret == 0, "join_running_log_trans() ret=%d", ret);
+       if (WARN_ON(ret))
                return;
 
        mutex_lock(&dir->log_mutex);