btrfs: assert we join log transaction at btrfs_del_inode_ref_in_log()
authorFilipe Manana <fdmanana@suse.com>
Wed, 28 May 2025 14:28:26 +0000 (15:28 +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 cc384f78dd215bfdded8b6ea25253a5adcfc91be..9420568131ab55cd0b62ffbbbde7065824eac3b2 100644 (file)
@@ -3513,7 +3513,8 @@ void btrfs_del_inode_ref_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;
        log = root->log_root;
        mutex_lock(&inode->log_mutex);