diff options
Diffstat (limited to 'fs/btrfs/ctree.h')
| -rw-r--r-- | fs/btrfs/ctree.h | 163 |
1 files changed, 122 insertions, 41 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 746a7248678e..e9bf86415e86 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | 34 | ||
| 35 | struct btrfs_trans_handle; | 35 | struct btrfs_trans_handle; |
| 36 | struct btrfs_transaction; | 36 | struct btrfs_transaction; |
| 37 | struct btrfs_pending_snapshot; | ||
| 37 | extern struct kmem_cache *btrfs_trans_handle_cachep; | 38 | extern struct kmem_cache *btrfs_trans_handle_cachep; |
| 38 | extern struct kmem_cache *btrfs_transaction_cachep; | 39 | extern struct kmem_cache *btrfs_transaction_cachep; |
| 39 | extern struct kmem_cache *btrfs_bit_radix_cachep; | 40 | extern struct kmem_cache *btrfs_bit_radix_cachep; |
| @@ -663,6 +664,7 @@ struct btrfs_csum_item { | |||
| 663 | #define BTRFS_BLOCK_GROUP_RAID1 (1 << 4) | 664 | #define BTRFS_BLOCK_GROUP_RAID1 (1 << 4) |
| 664 | #define BTRFS_BLOCK_GROUP_DUP (1 << 5) | 665 | #define BTRFS_BLOCK_GROUP_DUP (1 << 5) |
| 665 | #define BTRFS_BLOCK_GROUP_RAID10 (1 << 6) | 666 | #define BTRFS_BLOCK_GROUP_RAID10 (1 << 6) |
| 667 | #define BTRFS_NR_RAID_TYPES 5 | ||
| 666 | 668 | ||
| 667 | struct btrfs_block_group_item { | 669 | struct btrfs_block_group_item { |
| 668 | __le64 used; | 670 | __le64 used; |
| @@ -674,42 +676,46 @@ struct btrfs_space_info { | |||
| 674 | u64 flags; | 676 | u64 flags; |
| 675 | 677 | ||
| 676 | u64 total_bytes; /* total bytes in the space */ | 678 | u64 total_bytes; /* total bytes in the space */ |
| 677 | u64 bytes_used; /* total bytes used on disk */ | 679 | u64 bytes_used; /* total bytes used, |
| 680 | this does't take mirrors into account */ | ||
| 678 | u64 bytes_pinned; /* total bytes pinned, will be freed when the | 681 | u64 bytes_pinned; /* total bytes pinned, will be freed when the |
| 679 | transaction finishes */ | 682 | transaction finishes */ |
| 680 | u64 bytes_reserved; /* total bytes the allocator has reserved for | 683 | u64 bytes_reserved; /* total bytes the allocator has reserved for |
| 681 | current allocations */ | 684 | current allocations */ |
| 682 | u64 bytes_readonly; /* total bytes that are read only */ | 685 | u64 bytes_readonly; /* total bytes that are read only */ |
| 683 | u64 bytes_super; /* total bytes reserved for the super blocks */ | 686 | |
| 684 | u64 bytes_root; /* the number of bytes needed to commit a | ||
| 685 | transaction */ | ||
| 686 | u64 bytes_may_use; /* number of bytes that may be used for | 687 | u64 bytes_may_use; /* number of bytes that may be used for |
| 687 | delalloc/allocations */ | 688 | delalloc/allocations */ |
| 688 | u64 bytes_delalloc; /* number of bytes currently reserved for | 689 | u64 disk_used; /* total bytes used on disk */ |
| 689 | delayed allocation */ | ||
| 690 | 690 | ||
| 691 | int full; /* indicates that we cannot allocate any more | 691 | int full; /* indicates that we cannot allocate any more |
| 692 | chunks for this space */ | 692 | chunks for this space */ |
| 693 | int force_alloc; /* set if we need to force a chunk alloc for | 693 | int force_alloc; /* set if we need to force a chunk alloc for |
| 694 | this space */ | 694 | this space */ |
| 695 | int force_delalloc; /* make people start doing filemap_flush until | ||
| 696 | we're under a threshold */ | ||
| 697 | 695 | ||
| 698 | struct list_head list; | 696 | struct list_head list; |
| 699 | 697 | ||
| 700 | /* for controlling how we free up space for allocations */ | ||
| 701 | wait_queue_head_t allocate_wait; | ||
| 702 | wait_queue_head_t flush_wait; | ||
| 703 | int allocating_chunk; | ||
| 704 | int flushing; | ||
| 705 | |||
| 706 | /* for block groups in our same type */ | 698 | /* for block groups in our same type */ |
| 707 | struct list_head block_groups; | 699 | struct list_head block_groups[BTRFS_NR_RAID_TYPES]; |
| 708 | spinlock_t lock; | 700 | spinlock_t lock; |
| 709 | struct rw_semaphore groups_sem; | 701 | struct rw_semaphore groups_sem; |
| 710 | atomic_t caching_threads; | 702 | atomic_t caching_threads; |
| 711 | }; | 703 | }; |
| 712 | 704 | ||
| 705 | struct btrfs_block_rsv { | ||
| 706 | u64 size; | ||
| 707 | u64 reserved; | ||
| 708 | u64 freed[2]; | ||
| 709 | struct btrfs_space_info *space_info; | ||
| 710 | struct list_head list; | ||
| 711 | spinlock_t lock; | ||
| 712 | atomic_t usage; | ||
| 713 | unsigned int priority:8; | ||
| 714 | unsigned int durable:1; | ||
| 715 | unsigned int refill_used:1; | ||
| 716 | unsigned int full:1; | ||
| 717 | }; | ||
| 718 | |||
| 713 | /* | 719 | /* |
| 714 | * free clusters are used to claim free space in relatively large chunks, | 720 | * free clusters are used to claim free space in relatively large chunks, |
| 715 | * allowing us to do less seeky writes. They are used for all metadata | 721 | * allowing us to do less seeky writes. They are used for all metadata |
| @@ -760,6 +766,7 @@ struct btrfs_block_group_cache { | |||
| 760 | spinlock_t lock; | 766 | spinlock_t lock; |
| 761 | u64 pinned; | 767 | u64 pinned; |
| 762 | u64 reserved; | 768 | u64 reserved; |
| 769 | u64 reserved_pinned; | ||
| 763 | u64 bytes_super; | 770 | u64 bytes_super; |
| 764 | u64 flags; | 771 | u64 flags; |
| 765 | u64 sectorsize; | 772 | u64 sectorsize; |
| @@ -825,6 +832,22 @@ struct btrfs_fs_info { | |||
| 825 | /* logical->physical extent mapping */ | 832 | /* logical->physical extent mapping */ |
| 826 | struct btrfs_mapping_tree mapping_tree; | 833 | struct btrfs_mapping_tree mapping_tree; |
| 827 | 834 | ||
| 835 | /* block reservation for extent, checksum and root tree */ | ||
| 836 | struct btrfs_block_rsv global_block_rsv; | ||
| 837 | /* block reservation for delay allocation */ | ||
| 838 | struct btrfs_block_rsv delalloc_block_rsv; | ||
| 839 | /* block reservation for metadata operations */ | ||
| 840 | struct btrfs_block_rsv trans_block_rsv; | ||
| 841 | /* block reservation for chunk tree */ | ||
| 842 | struct btrfs_block_rsv chunk_block_rsv; | ||
| 843 | |||
| 844 | struct btrfs_block_rsv empty_block_rsv; | ||
| 845 | |||
| 846 | /* list of block reservations that cross multiple transactions */ | ||
| 847 | struct list_head durable_block_rsv_list; | ||
| 848 | |||
| 849 | struct mutex durable_block_rsv_mutex; | ||
| 850 | |||
| 828 | u64 generation; | 851 | u64 generation; |
| 829 | u64 last_trans_committed; | 852 | u64 last_trans_committed; |
| 830 | 853 | ||
| @@ -927,7 +950,6 @@ struct btrfs_fs_info { | |||
| 927 | struct btrfs_workers endio_meta_write_workers; | 950 | struct btrfs_workers endio_meta_write_workers; |
| 928 | struct btrfs_workers endio_write_workers; | 951 | struct btrfs_workers endio_write_workers; |
| 929 | struct btrfs_workers submit_workers; | 952 | struct btrfs_workers submit_workers; |
| 930 | struct btrfs_workers enospc_workers; | ||
| 931 | /* | 953 | /* |
| 932 | * fixup workers take dirty pages that didn't properly go through | 954 | * fixup workers take dirty pages that didn't properly go through |
| 933 | * the cow mechanism and make them safe to write. It happens | 955 | * the cow mechanism and make them safe to write. It happens |
| @@ -943,6 +965,7 @@ struct btrfs_fs_info { | |||
| 943 | int do_barriers; | 965 | int do_barriers; |
| 944 | int closing; | 966 | int closing; |
| 945 | int log_root_recovering; | 967 | int log_root_recovering; |
| 968 | int enospc_unlink; | ||
| 946 | 969 | ||
| 947 | u64 total_pinned; | 970 | u64 total_pinned; |
| 948 | 971 | ||
| @@ -1012,6 +1035,9 @@ struct btrfs_root { | |||
| 1012 | struct completion kobj_unregister; | 1035 | struct completion kobj_unregister; |
| 1013 | struct mutex objectid_mutex; | 1036 | struct mutex objectid_mutex; |
| 1014 | 1037 | ||
| 1038 | spinlock_t accounting_lock; | ||
| 1039 | struct btrfs_block_rsv *block_rsv; | ||
| 1040 | |||
| 1015 | struct mutex log_mutex; | 1041 | struct mutex log_mutex; |
| 1016 | wait_queue_head_t log_writer_wait; | 1042 | wait_queue_head_t log_writer_wait; |
| 1017 | wait_queue_head_t log_commit_wait[2]; | 1043 | wait_queue_head_t log_commit_wait[2]; |
| @@ -1043,7 +1069,6 @@ struct btrfs_root { | |||
| 1043 | int ref_cows; | 1069 | int ref_cows; |
| 1044 | int track_dirty; | 1070 | int track_dirty; |
| 1045 | int in_radix; | 1071 | int in_radix; |
| 1046 | int clean_orphans; | ||
| 1047 | 1072 | ||
| 1048 | u64 defrag_trans_start; | 1073 | u64 defrag_trans_start; |
| 1049 | struct btrfs_key defrag_progress; | 1074 | struct btrfs_key defrag_progress; |
| @@ -1057,8 +1082,11 @@ struct btrfs_root { | |||
| 1057 | 1082 | ||
| 1058 | struct list_head root_list; | 1083 | struct list_head root_list; |
| 1059 | 1084 | ||
| 1060 | spinlock_t list_lock; | 1085 | spinlock_t orphan_lock; |
| 1061 | struct list_head orphan_list; | 1086 | struct list_head orphan_list; |
| 1087 | struct btrfs_block_rsv *orphan_block_rsv; | ||
| 1088 | int orphan_item_inserted; | ||
| 1089 | int orphan_cleanup_state; | ||
| 1062 | 1090 | ||
| 1063 | spinlock_t inode_lock; | 1091 | spinlock_t inode_lock; |
| 1064 | /* red-black tree that keeps track of in-memory inodes */ | 1092 | /* red-black tree that keeps track of in-memory inodes */ |
| @@ -1965,6 +1993,9 @@ void btrfs_put_block_group(struct btrfs_block_group_cache *cache); | |||
| 1965 | int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, | 1993 | int btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, |
| 1966 | struct btrfs_root *root, unsigned long count); | 1994 | struct btrfs_root *root, unsigned long count); |
| 1967 | int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len); | 1995 | int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len); |
| 1996 | int btrfs_lookup_extent_info(struct btrfs_trans_handle *trans, | ||
| 1997 | struct btrfs_root *root, u64 bytenr, | ||
| 1998 | u64 num_bytes, u64 *refs, u64 *flags); | ||
| 1968 | int btrfs_pin_extent(struct btrfs_root *root, | 1999 | int btrfs_pin_extent(struct btrfs_root *root, |
| 1969 | u64 bytenr, u64 num, int reserved); | 2000 | u64 bytenr, u64 num, int reserved); |
| 1970 | int btrfs_drop_leaf_ref(struct btrfs_trans_handle *trans, | 2001 | int btrfs_drop_leaf_ref(struct btrfs_trans_handle *trans, |
| @@ -1984,10 +2015,10 @@ struct extent_buffer *btrfs_alloc_free_block(struct btrfs_trans_handle *trans, | |||
| 1984 | u64 parent, u64 root_objectid, | 2015 | u64 parent, u64 root_objectid, |
| 1985 | struct btrfs_disk_key *key, int level, | 2016 | struct btrfs_disk_key *key, int level, |
| 1986 | u64 hint, u64 empty_size); | 2017 | u64 hint, u64 empty_size); |
| 1987 | int btrfs_free_tree_block(struct btrfs_trans_handle *trans, | 2018 | void btrfs_free_tree_block(struct btrfs_trans_handle *trans, |
| 1988 | struct btrfs_root *root, | 2019 | struct btrfs_root *root, |
| 1989 | u64 bytenr, u32 blocksize, | 2020 | struct extent_buffer *buf, |
| 1990 | u64 parent, u64 root_objectid, int level); | 2021 | u64 parent, int last_ref); |
| 1991 | struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans, | 2022 | struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans, |
| 1992 | struct btrfs_root *root, | 2023 | struct btrfs_root *root, |
| 1993 | u64 bytenr, u32 blocksize, | 2024 | u64 bytenr, u32 blocksize, |
| @@ -2041,27 +2072,49 @@ int btrfs_make_block_group(struct btrfs_trans_handle *trans, | |||
| 2041 | u64 size); | 2072 | u64 size); |
| 2042 | int btrfs_remove_block_group(struct btrfs_trans_handle *trans, | 2073 | int btrfs_remove_block_group(struct btrfs_trans_handle *trans, |
| 2043 | struct btrfs_root *root, u64 group_start); | 2074 | struct btrfs_root *root, u64 group_start); |
| 2044 | int btrfs_prepare_block_group_relocation(struct btrfs_root *root, | ||
| 2045 | struct btrfs_block_group_cache *group); | ||
| 2046 | |||
| 2047 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); | 2075 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); |
| 2048 | void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *ionde); | 2076 | void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *ionde); |
| 2049 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info); | 2077 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info); |
| 2050 | 2078 | int btrfs_check_data_free_space(struct inode *inode, u64 bytes); | |
| 2051 | int btrfs_reserve_metadata_space(struct btrfs_root *root, int num_items); | 2079 | void btrfs_free_reserved_data_space(struct inode *inode, u64 bytes); |
| 2052 | int btrfs_unreserve_metadata_space(struct btrfs_root *root, int num_items); | 2080 | int btrfs_trans_reserve_metadata(struct btrfs_trans_handle *trans, |
| 2053 | int btrfs_unreserve_metadata_for_delalloc(struct btrfs_root *root, | 2081 | struct btrfs_root *root, |
| 2054 | struct inode *inode, int num_items); | 2082 | int num_items, int *retries); |
| 2055 | int btrfs_reserve_metadata_for_delalloc(struct btrfs_root *root, | 2083 | void btrfs_trans_release_metadata(struct btrfs_trans_handle *trans, |
| 2056 | struct inode *inode, int num_items); | 2084 | struct btrfs_root *root); |
| 2057 | int btrfs_check_data_free_space(struct btrfs_root *root, struct inode *inode, | 2085 | int btrfs_orphan_reserve_metadata(struct btrfs_trans_handle *trans, |
| 2058 | u64 bytes); | 2086 | struct inode *inode); |
| 2059 | void btrfs_free_reserved_data_space(struct btrfs_root *root, | 2087 | void btrfs_orphan_release_metadata(struct inode *inode); |
| 2060 | struct inode *inode, u64 bytes); | 2088 | int btrfs_snap_reserve_metadata(struct btrfs_trans_handle *trans, |
| 2061 | void btrfs_delalloc_reserve_space(struct btrfs_root *root, struct inode *inode, | 2089 | struct btrfs_pending_snapshot *pending); |
| 2062 | u64 bytes); | 2090 | int btrfs_delalloc_reserve_metadata(struct inode *inode, u64 num_bytes); |
| 2063 | void btrfs_delalloc_free_space(struct btrfs_root *root, struct inode *inode, | 2091 | void btrfs_delalloc_release_metadata(struct inode *inode, u64 num_bytes); |
| 2064 | u64 bytes); | 2092 | int btrfs_delalloc_reserve_space(struct inode *inode, u64 num_bytes); |
| 2093 | void btrfs_delalloc_release_space(struct inode *inode, u64 num_bytes); | ||
| 2094 | void btrfs_init_block_rsv(struct btrfs_block_rsv *rsv); | ||
| 2095 | struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_root *root); | ||
| 2096 | void btrfs_free_block_rsv(struct btrfs_root *root, | ||
| 2097 | struct btrfs_block_rsv *rsv); | ||
| 2098 | void btrfs_add_durable_block_rsv(struct btrfs_fs_info *fs_info, | ||
| 2099 | struct btrfs_block_rsv *rsv); | ||
| 2100 | int btrfs_block_rsv_add(struct btrfs_trans_handle *trans, | ||
| 2101 | struct btrfs_root *root, | ||
| 2102 | struct btrfs_block_rsv *block_rsv, | ||
| 2103 | u64 num_bytes, int *retries); | ||
| 2104 | int btrfs_block_rsv_check(struct btrfs_trans_handle *trans, | ||
| 2105 | struct btrfs_root *root, | ||
| 2106 | struct btrfs_block_rsv *block_rsv, | ||
| 2107 | u64 min_reserved, int min_factor); | ||
| 2108 | int btrfs_block_rsv_migrate(struct btrfs_block_rsv *src_rsv, | ||
| 2109 | struct btrfs_block_rsv *dst_rsv, | ||
| 2110 | u64 num_bytes); | ||
| 2111 | void btrfs_block_rsv_release(struct btrfs_root *root, | ||
| 2112 | struct btrfs_block_rsv *block_rsv, | ||
| 2113 | u64 num_bytes); | ||
| 2114 | int btrfs_set_block_group_ro(struct btrfs_root *root, | ||
| 2115 | struct btrfs_block_group_cache *cache); | ||
| 2116 | int btrfs_set_block_group_rw(struct btrfs_root *root, | ||
| 2117 | struct btrfs_block_group_cache *cache); | ||
| 2065 | /* ctree.c */ | 2118 | /* ctree.c */ |
| 2066 | int btrfs_bin_search(struct extent_buffer *eb, struct btrfs_key *key, | 2119 | int btrfs_bin_search(struct extent_buffer *eb, struct btrfs_key *key, |
| 2067 | int level, int *slot); | 2120 | int level, int *slot); |
| @@ -2152,7 +2205,8 @@ static inline int btrfs_insert_empty_item(struct btrfs_trans_handle *trans, | |||
| 2152 | int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path); | 2205 | int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path); |
| 2153 | int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path); | 2206 | int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path); |
| 2154 | int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf); | 2207 | int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf); |
| 2155 | int btrfs_drop_snapshot(struct btrfs_root *root, int update_ref); | 2208 | int btrfs_drop_snapshot(struct btrfs_root *root, |
| 2209 | struct btrfs_block_rsv *block_rsv, int update_ref); | ||
| 2156 | int btrfs_drop_subtree(struct btrfs_trans_handle *trans, | 2210 | int btrfs_drop_subtree(struct btrfs_trans_handle *trans, |
| 2157 | struct btrfs_root *root, | 2211 | struct btrfs_root *root, |
| 2158 | struct extent_buffer *node, | 2212 | struct extent_buffer *node, |
| @@ -2245,6 +2299,12 @@ int btrfs_del_inode_ref(struct btrfs_trans_handle *trans, | |||
| 2245 | struct btrfs_root *root, | 2299 | struct btrfs_root *root, |
| 2246 | const char *name, int name_len, | 2300 | const char *name, int name_len, |
| 2247 | u64 inode_objectid, u64 ref_objectid, u64 *index); | 2301 | u64 inode_objectid, u64 ref_objectid, u64 *index); |
| 2302 | struct btrfs_inode_ref * | ||
| 2303 | btrfs_lookup_inode_ref(struct btrfs_trans_handle *trans, | ||
| 2304 | struct btrfs_root *root, | ||
| 2305 | struct btrfs_path *path, | ||
| 2306 | const char *name, int name_len, | ||
| 2307 | u64 inode_objectid, u64 ref_objectid, int mod); | ||
| 2248 | int btrfs_insert_empty_inode(struct btrfs_trans_handle *trans, | 2308 | int btrfs_insert_empty_inode(struct btrfs_trans_handle *trans, |
| 2249 | struct btrfs_root *root, | 2309 | struct btrfs_root *root, |
| 2250 | struct btrfs_path *path, u64 objectid); | 2310 | struct btrfs_path *path, u64 objectid); |
| @@ -2257,6 +2317,8 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans, | |||
| 2257 | struct btrfs_root *root, u64 bytenr, u64 len); | 2317 | struct btrfs_root *root, u64 bytenr, u64 len); |
| 2258 | int btrfs_lookup_bio_sums(struct btrfs_root *root, struct inode *inode, | 2318 | int btrfs_lookup_bio_sums(struct btrfs_root *root, struct inode *inode, |
| 2259 | struct bio *bio, u32 *dst); | 2319 | struct bio *bio, u32 *dst); |
| 2320 | int btrfs_lookup_bio_sums_dio(struct btrfs_root *root, struct inode *inode, | ||
| 2321 | struct bio *bio, u64 logical_offset, u32 *dst); | ||
| 2260 | int btrfs_insert_file_extent(struct btrfs_trans_handle *trans, | 2322 | int btrfs_insert_file_extent(struct btrfs_trans_handle *trans, |
| 2261 | struct btrfs_root *root, | 2323 | struct btrfs_root *root, |
| 2262 | u64 objectid, u64 pos, | 2324 | u64 objectid, u64 pos, |
| @@ -2311,6 +2373,7 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, | |||
| 2311 | u32 min_type); | 2373 | u32 min_type); |
| 2312 | 2374 | ||
| 2313 | int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput); | 2375 | int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput); |
| 2376 | int btrfs_start_one_delalloc_inode(struct btrfs_root *root, int delay_iput); | ||
| 2314 | int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end, | 2377 | int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end, |
| 2315 | struct extent_state **cached_state); | 2378 | struct extent_state **cached_state); |
| 2316 | int btrfs_writepages(struct address_space *mapping, | 2379 | int btrfs_writepages(struct address_space *mapping, |
| @@ -2349,10 +2412,20 @@ int btrfs_update_inode(struct btrfs_trans_handle *trans, | |||
| 2349 | int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); | 2412 | int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); |
| 2350 | int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode); | 2413 | int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode); |
| 2351 | void btrfs_orphan_cleanup(struct btrfs_root *root); | 2414 | void btrfs_orphan_cleanup(struct btrfs_root *root); |
| 2415 | void btrfs_orphan_pre_snapshot(struct btrfs_trans_handle *trans, | ||
| 2416 | struct btrfs_pending_snapshot *pending, | ||
| 2417 | u64 *bytes_to_reserve); | ||
| 2418 | void btrfs_orphan_post_snapshot(struct btrfs_trans_handle *trans, | ||
| 2419 | struct btrfs_pending_snapshot *pending); | ||
| 2420 | void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans, | ||
| 2421 | struct btrfs_root *root); | ||
| 2352 | int btrfs_cont_expand(struct inode *inode, loff_t size); | 2422 | int btrfs_cont_expand(struct inode *inode, loff_t size); |
| 2353 | int btrfs_invalidate_inodes(struct btrfs_root *root); | 2423 | int btrfs_invalidate_inodes(struct btrfs_root *root); |
| 2354 | void btrfs_add_delayed_iput(struct inode *inode); | 2424 | void btrfs_add_delayed_iput(struct inode *inode); |
| 2355 | void btrfs_run_delayed_iputs(struct btrfs_root *root); | 2425 | void btrfs_run_delayed_iputs(struct btrfs_root *root); |
| 2426 | int btrfs_prealloc_file_range(struct inode *inode, int mode, | ||
| 2427 | u64 start, u64 num_bytes, u64 min_size, | ||
| 2428 | loff_t actual_len, u64 *alloc_hint); | ||
| 2356 | extern const struct dentry_operations btrfs_dentry_operations; | 2429 | extern const struct dentry_operations btrfs_dentry_operations; |
| 2357 | 2430 | ||
| 2358 | /* ioctl.c */ | 2431 | /* ioctl.c */ |
| @@ -2409,4 +2482,12 @@ int btrfs_update_reloc_root(struct btrfs_trans_handle *trans, | |||
| 2409 | struct btrfs_root *root); | 2482 | struct btrfs_root *root); |
| 2410 | int btrfs_recover_relocation(struct btrfs_root *root); | 2483 | int btrfs_recover_relocation(struct btrfs_root *root); |
| 2411 | int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len); | 2484 | int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len); |
| 2485 | void btrfs_reloc_cow_block(struct btrfs_trans_handle *trans, | ||
| 2486 | struct btrfs_root *root, struct extent_buffer *buf, | ||
| 2487 | struct extent_buffer *cow); | ||
| 2488 | void btrfs_reloc_pre_snapshot(struct btrfs_trans_handle *trans, | ||
| 2489 | struct btrfs_pending_snapshot *pending, | ||
| 2490 | u64 *bytes_to_reserve); | ||
| 2491 | void btrfs_reloc_post_snapshot(struct btrfs_trans_handle *trans, | ||
| 2492 | struct btrfs_pending_snapshot *pending); | ||
| 2412 | #endif | 2493 | #endif |
