btrfs: handle btrfs_del_item errors in __btrfs_update_delayed_inode
authorvoid0red <void0red@gmail.com>
Sat, 18 Feb 2023 04:36:48 +0000 (12:36 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 6 Mar 2023 18:28:19 +0000 (19:28 +0100)
Even if the slot is already read out, we may still need to re-balance
the tree, thus it can cause error in that btrfs_del_item() call and we
need to handle it properly.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: void0red <void0red@gmail.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/delayed-inode.c

index 0095c6e4c3d1cebb3b4cf752b723daa2ad811d8e..6b457b010cbc4ae204bc211c521f389ad46ded4c 100644 (file)
@@ -1048,7 +1048,7 @@ again:
         * so there is only one iref. The case that several irefs are
         * in the same item doesn't exist.
         */
-       btrfs_del_item(trans, root, path);
+       ret = btrfs_del_item(trans, root, path);
 out:
        btrfs_release_delayed_iref(node);
        btrfs_release_path(path);