linux/fs/btrfs/free-space-tree.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Copyright (C) 2015 Facebook.  All rights reserved.
   4 */
   5
   6#ifndef BTRFS_FREE_SPACE_TREE_H
   7#define BTRFS_FREE_SPACE_TREE_H
   8
   9/*
  10 * The default size for new free space bitmap items. The last bitmap in a block
  11 * group may be truncated, and none of the free space tree code assumes that
  12 * existing bitmaps are this size.
  13 */
  14#define BTRFS_FREE_SPACE_BITMAP_SIZE 256
  15#define BTRFS_FREE_SPACE_BITMAP_BITS (BTRFS_FREE_SPACE_BITMAP_SIZE * BITS_PER_BYTE)
  16
  17void set_free_space_tree_thresholds(struct btrfs_block_group_cache *block_group);
  18int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info);
  19int btrfs_clear_free_space_tree(struct btrfs_fs_info *fs_info);
  20int load_free_space_tree(struct btrfs_caching_control *caching_ctl);
  21int add_block_group_free_space(struct btrfs_trans_handle *trans,
  22                               struct btrfs_block_group_cache *block_group);
  23int remove_block_group_free_space(struct btrfs_trans_handle *trans,
  24                                  struct btrfs_block_group_cache *block_group);
  25int add_to_free_space_tree(struct btrfs_trans_handle *trans,
  26                           u64 start, u64 size);
  27int remove_from_free_space_tree(struct btrfs_trans_handle *trans,
  28                                u64 start, u64 size);
  29
  30#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
  31struct btrfs_free_space_info *
  32search_free_space_info(struct btrfs_trans_handle *trans,
  33                       struct btrfs_fs_info *fs_info,
  34                       struct btrfs_block_group_cache *block_group,
  35                       struct btrfs_path *path, int cow);
  36int __add_to_free_space_tree(struct btrfs_trans_handle *trans,
  37                             struct btrfs_block_group_cache *block_group,
  38                             struct btrfs_path *path, u64 start, u64 size);
  39int __remove_from_free_space_tree(struct btrfs_trans_handle *trans,
  40                                  struct btrfs_block_group_cache *block_group,
  41                                  struct btrfs_path *path, u64 start, u64 size);
  42int convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
  43                                  struct btrfs_block_group_cache *block_group,
  44                                  struct btrfs_path *path);
  45int convert_free_space_to_extents(struct btrfs_trans_handle *trans,
  46                                  struct btrfs_block_group_cache *block_group,
  47                                  struct btrfs_path *path);
  48int free_space_test_bit(struct btrfs_block_group_cache *block_group,
  49                        struct btrfs_path *path, u64 offset);
  50#endif
  51
  52#endif
  53