btrfs: delete BUG_ON in btrfs_init_locked_inode()
authorDavid Sterba <dsterba@suse.com>
Wed, 7 Feb 2024 02:24:06 +0000 (03:24 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 4 Mar 2024 15:24:51 +0000 (16:24 +0100)
The purpose of the BUG_ON is not clear. The helper btrfs_grab_root()
could return a NULL in case args->root would be a NULL or if there are
zero references. Then we check if the root pointer stored in the inode
still exists.

The whole call chain is for iget:

btrfs_iget
  btrfs_iget_path
    btrfs_iget_locked
      iget5_locked
btrfs_init_locked_inode

which is called from many contexts where we the root pointer is used and
we can safely assume has enough references.

Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/inode.c

index 1a527c7f383bdaa63b2baf0fdb9eb9209d5cc5b9..cb23b3834c3d83521035741aa18e587b64032a59 100644 (file)
@@ -5571,7 +5571,6 @@ static int btrfs_init_locked_inode(struct inode *inode, void *p)
        BTRFS_I(inode)->location.type = BTRFS_INODE_ITEM_KEY;
        BTRFS_I(inode)->location.offset = 0;
        BTRFS_I(inode)->root = btrfs_grab_root(args->root);
-       BUG_ON(args->root && !BTRFS_I(inode)->root);
 
        if (args->root && args->root == args->root->fs_info->tree_root &&
            args->ino != BTRFS_BTREE_INODE_OBJECTID)