return ret;
                }
                if (new_flags != 0) {
-                       int level = btrfs_header_level(buf);
-
-                       ret = btrfs_set_disk_extent_flags(trans, buf,
-                                                         new_flags, level);
+                       ret = btrfs_set_disk_extent_flags(trans, buf, new_flags);
                        if (ret)
                                return ret;
                }
 
 }
 
 int btrfs_set_disk_extent_flags(struct btrfs_trans_handle *trans,
-                               struct extent_buffer *eb, u64 flags,
-                               int level)
+                               struct extent_buffer *eb, u64 flags)
 {
        struct btrfs_delayed_extent_op *extent_op;
+       int level = btrfs_header_level(eb);
        int ret;
 
        extent_op = btrfs_alloc_delayed_extent_op();
                BUG_ON(ret); /* -ENOMEM */
                ret = btrfs_dec_ref(trans, root, eb, 0);
                BUG_ON(ret); /* -ENOMEM */
-               ret = btrfs_set_disk_extent_flags(trans, eb, flag,
-                                                 btrfs_header_level(eb));
+               ret = btrfs_set_disk_extent_flags(trans, eb, flag);
                BUG_ON(ret); /* -ENOMEM */
                wc->flags[level] |= flag;
        }
 
 int btrfs_dec_ref(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                  struct extent_buffer *buf, int full_backref);
 int btrfs_set_disk_extent_flags(struct btrfs_trans_handle *trans,
-                               struct extent_buffer *eb, u64 flags, int level);
+                               struct extent_buffer *eb, u64 flags);
 int btrfs_free_extent(struct btrfs_trans_handle *trans, struct btrfs_ref *ref);
 
 int btrfs_free_reserved_extent(struct btrfs_fs_info *fs_info,