diff options
34 files changed, 135 insertions, 392 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 04b5b3093893..b4fb41558111 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c | |||
@@ -1189,6 +1189,20 @@ int btrfs_find_one_extref(struct btrfs_root *root, u64 inode_objectid, | |||
1189 | return ret; | 1189 | return ret; |
1190 | } | 1190 | } |
1191 | 1191 | ||
1192 | /* | ||
1193 | * this iterates to turn a name (from iref/extref) into a full filesystem path. | ||
1194 | * Elements of the path are separated by '/' and the path is guaranteed to be | ||
1195 | * 0-terminated. the path is only given within the current file system. | ||
1196 | * Therefore, it never starts with a '/'. the caller is responsible to provide | ||
1197 | * "size" bytes in "dest". the dest buffer will be filled backwards. finally, | ||
1198 | * the start point of the resulting string is returned. this pointer is within | ||
1199 | * dest, normally. | ||
1200 | * in case the path buffer would overflow, the pointer is decremented further | ||
1201 | * as if output was written to the buffer, though no more output is actually | ||
1202 | * generated. that way, the caller can determine how much space would be | ||
1203 | * required for the path to fit into the buffer. in that case, the returned | ||
1204 | * value will be smaller than dest. callers must check this! | ||
1205 | */ | ||
1192 | char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, | 1206 | char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, |
1193 | u32 name_len, unsigned long name_off, | 1207 | u32 name_len, unsigned long name_off, |
1194 | struct extent_buffer *eb_in, u64 parent, | 1208 | struct extent_buffer *eb_in, u64 parent, |
@@ -1258,32 +1272,6 @@ char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, | |||
1258 | } | 1272 | } |
1259 | 1273 | ||
1260 | /* | 1274 | /* |
1261 | * this iterates to turn a btrfs_inode_ref into a full filesystem path. elements | ||
1262 | * of the path are separated by '/' and the path is guaranteed to be | ||
1263 | * 0-terminated. the path is only given within the current file system. | ||
1264 | * Therefore, it never starts with a '/'. the caller is responsible to provide | ||
1265 | * "size" bytes in "dest". the dest buffer will be filled backwards. finally, | ||
1266 | * the start point of the resulting string is returned. this pointer is within | ||
1267 | * dest, normally. | ||
1268 | * in case the path buffer would overflow, the pointer is decremented further | ||
1269 | * as if output was written to the buffer, though no more output is actually | ||
1270 | * generated. that way, the caller can determine how much space would be | ||
1271 | * required for the path to fit into the buffer. in that case, the returned | ||
1272 | * value will be smaller than dest. callers must check this! | ||
1273 | */ | ||
1274 | char *btrfs_iref_to_path(struct btrfs_root *fs_root, | ||
1275 | struct btrfs_path *path, | ||
1276 | struct btrfs_inode_ref *iref, | ||
1277 | struct extent_buffer *eb_in, u64 parent, | ||
1278 | char *dest, u32 size) | ||
1279 | { | ||
1280 | return btrfs_ref_to_path(fs_root, path, | ||
1281 | btrfs_inode_ref_name_len(eb_in, iref), | ||
1282 | (unsigned long)(iref + 1), | ||
1283 | eb_in, parent, dest, size); | ||
1284 | } | ||
1285 | |||
1286 | /* | ||
1287 | * this makes the path point to (logical EXTENT_ITEM *) | 1275 | * this makes the path point to (logical EXTENT_ITEM *) |
1288 | * returns BTRFS_EXTENT_FLAG_DATA for data, BTRFS_EXTENT_FLAG_TREE_BLOCK for | 1276 | * returns BTRFS_EXTENT_FLAG_DATA for data, BTRFS_EXTENT_FLAG_TREE_BLOCK for |
1289 | * tree blocks and <0 on error. | 1277 | * tree blocks and <0 on error. |
diff --git a/fs/btrfs/backref.h b/fs/btrfs/backref.h index 310a7f6d09b1..0f446d7ca2c0 100644 --- a/fs/btrfs/backref.h +++ b/fs/btrfs/backref.h | |||
@@ -59,9 +59,6 @@ int paths_from_inode(u64 inum, struct inode_fs_paths *ipath); | |||
59 | int btrfs_find_all_roots(struct btrfs_trans_handle *trans, | 59 | int btrfs_find_all_roots(struct btrfs_trans_handle *trans, |
60 | struct btrfs_fs_info *fs_info, u64 bytenr, | 60 | struct btrfs_fs_info *fs_info, u64 bytenr, |
61 | u64 time_seq, struct ulist **roots); | 61 | u64 time_seq, struct ulist **roots); |
62 | char *btrfs_iref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, | ||
63 | struct btrfs_inode_ref *iref, struct extent_buffer *eb, | ||
64 | u64 parent, char *dest, u32 size); | ||
65 | char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, | 62 | char *btrfs_ref_to_path(struct btrfs_root *fs_root, struct btrfs_path *path, |
66 | u32 name_len, unsigned long name_off, | 63 | u32 name_len, unsigned long name_off, |
67 | struct extent_buffer *eb_in, u64 parent, | 64 | struct extent_buffer *eb_in, u64 parent, |
diff --git a/fs/btrfs/compression.c b/fs/btrfs/compression.c index b9c565028605..b189bd1e7a3e 100644 --- a/fs/btrfs/compression.c +++ b/fs/btrfs/compression.c | |||
@@ -82,6 +82,10 @@ struct compressed_bio { | |||
82 | u32 sums; | 82 | u32 sums; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | static int btrfs_decompress_biovec(int type, struct page **pages_in, | ||
86 | u64 disk_start, struct bio_vec *bvec, | ||
87 | int vcnt, size_t srclen); | ||
88 | |||
85 | static inline int compressed_bio_size(struct btrfs_root *root, | 89 | static inline int compressed_bio_size(struct btrfs_root *root, |
86 | unsigned long disk_size) | 90 | unsigned long disk_size) |
87 | { | 91 | { |
@@ -738,7 +742,7 @@ static int comp_num_workspace[BTRFS_COMPRESS_TYPES]; | |||
738 | static atomic_t comp_alloc_workspace[BTRFS_COMPRESS_TYPES]; | 742 | static atomic_t comp_alloc_workspace[BTRFS_COMPRESS_TYPES]; |
739 | static wait_queue_head_t comp_workspace_wait[BTRFS_COMPRESS_TYPES]; | 743 | static wait_queue_head_t comp_workspace_wait[BTRFS_COMPRESS_TYPES]; |
740 | 744 | ||
741 | struct btrfs_compress_op *btrfs_compress_op[] = { | 745 | static struct btrfs_compress_op *btrfs_compress_op[] = { |
742 | &btrfs_zlib_compress, | 746 | &btrfs_zlib_compress, |
743 | &btrfs_lzo_compress, | 747 | &btrfs_lzo_compress, |
744 | }; | 748 | }; |
@@ -909,8 +913,9 @@ int btrfs_compress_pages(int type, struct address_space *mapping, | |||
909 | * be contiguous. They all correspond to the range of bytes covered by | 913 | * be contiguous. They all correspond to the range of bytes covered by |
910 | * the compressed extent. | 914 | * the compressed extent. |
911 | */ | 915 | */ |
912 | int btrfs_decompress_biovec(int type, struct page **pages_in, u64 disk_start, | 916 | static int btrfs_decompress_biovec(int type, struct page **pages_in, |
913 | struct bio_vec *bvec, int vcnt, size_t srclen) | 917 | u64 disk_start, struct bio_vec *bvec, |
918 | int vcnt, size_t srclen) | ||
914 | { | 919 | { |
915 | struct list_head *workspace; | 920 | struct list_head *workspace; |
916 | int ret; | 921 | int ret; |
diff --git a/fs/btrfs/compression.h b/fs/btrfs/compression.h index 9afb0a62ae82..0c803b4fbf93 100644 --- a/fs/btrfs/compression.h +++ b/fs/btrfs/compression.h | |||
@@ -30,8 +30,6 @@ int btrfs_compress_pages(int type, struct address_space *mapping, | |||
30 | unsigned long *total_in, | 30 | unsigned long *total_in, |
31 | unsigned long *total_out, | 31 | unsigned long *total_out, |
32 | unsigned long max_out); | 32 | unsigned long max_out); |
33 | int btrfs_decompress_biovec(int type, struct page **pages_in, u64 disk_start, | ||
34 | struct bio_vec *bvec, int vcnt, size_t srclen); | ||
35 | int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page, | 33 | int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page, |
36 | unsigned long start_byte, size_t srclen, size_t destlen); | 34 | unsigned long start_byte, size_t srclen, size_t destlen); |
37 | int btrfs_decompress_buf2page(char *buf, unsigned long buf_start, | 35 | int btrfs_decompress_buf2page(char *buf, unsigned long buf_start, |
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index a17d9991c333..de6de8e60b46 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -41,12 +41,7 @@ static void del_ptr(struct btrfs_root *root, struct btrfs_path *path, | |||
41 | int level, int slot); | 41 | int level, int slot); |
42 | static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, | 42 | static void tree_mod_log_free_eb(struct btrfs_fs_info *fs_info, |
43 | struct extent_buffer *eb); | 43 | struct extent_buffer *eb); |
44 | struct extent_buffer *read_old_tree_block(struct btrfs_root *root, u64 bytenr, | 44 | static int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path); |
45 | u32 blocksize, u64 parent_transid, | ||
46 | u64 time_seq); | ||
47 | struct extent_buffer *btrfs_find_old_tree_block(struct btrfs_root *root, | ||
48 | u64 bytenr, u32 blocksize, | ||
49 | u64 time_seq); | ||
50 | 45 | ||
51 | struct btrfs_path *btrfs_alloc_path(void) | 46 | struct btrfs_path *btrfs_alloc_path(void) |
52 | { | 47 | { |
@@ -208,7 +203,7 @@ struct extent_buffer *btrfs_lock_root_node(struct btrfs_root *root) | |||
208 | * tree until you end up with a lock on the root. A locked buffer | 203 | * tree until you end up with a lock on the root. A locked buffer |
209 | * is returned, with a reference held. | 204 | * is returned, with a reference held. |
210 | */ | 205 | */ |
211 | struct extent_buffer *btrfs_read_lock_root_node(struct btrfs_root *root) | 206 | static struct extent_buffer *btrfs_read_lock_root_node(struct btrfs_root *root) |
212 | { | 207 | { |
213 | struct extent_buffer *eb; | 208 | struct extent_buffer *eb; |
214 | 209 | ||
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index d9bed5fd3347..4272fbb08732 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -3044,8 +3044,6 @@ struct btrfs_block_group_cache *btrfs_lookup_block_group( | |||
3044 | struct btrfs_fs_info *info, | 3044 | struct btrfs_fs_info *info, |
3045 | u64 bytenr); | 3045 | u64 bytenr); |
3046 | void btrfs_put_block_group(struct btrfs_block_group_cache *cache); | 3046 | void btrfs_put_block_group(struct btrfs_block_group_cache *cache); |
3047 | u64 btrfs_find_block_group(struct btrfs_root *root, | ||
3048 | u64 search_start, u64 search_hint, int owner); | ||
3049 | struct extent_buffer *btrfs_alloc_free_block(struct btrfs_trans_handle *trans, | 3047 | struct extent_buffer *btrfs_alloc_free_block(struct btrfs_trans_handle *trans, |
3050 | struct btrfs_root *root, u32 blocksize, | 3048 | struct btrfs_root *root, u32 blocksize, |
3051 | u64 parent, u64 root_objectid, | 3049 | u64 parent, u64 root_objectid, |
@@ -3055,10 +3053,6 @@ void btrfs_free_tree_block(struct btrfs_trans_handle *trans, | |||
3055 | struct btrfs_root *root, | 3053 | struct btrfs_root *root, |
3056 | struct extent_buffer *buf, | 3054 | struct extent_buffer *buf, |
3057 | u64 parent, int last_ref); | 3055 | u64 parent, int last_ref); |
3058 | struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans, | ||
3059 | struct btrfs_root *root, | ||
3060 | u64 bytenr, u32 blocksize, | ||
3061 | int level); | ||
3062 | int btrfs_alloc_reserved_file_extent(struct btrfs_trans_handle *trans, | 3056 | int btrfs_alloc_reserved_file_extent(struct btrfs_trans_handle *trans, |
3063 | struct btrfs_root *root, | 3057 | struct btrfs_root *root, |
3064 | u64 root_objectid, u64 owner, | 3058 | u64 root_objectid, u64 owner, |
@@ -3111,7 +3105,6 @@ int btrfs_remove_block_group(struct btrfs_trans_handle *trans, | |||
3111 | struct btrfs_root *root, u64 group_start); | 3105 | struct btrfs_root *root, u64 group_start); |
3112 | void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans, | 3106 | void btrfs_create_pending_block_groups(struct btrfs_trans_handle *trans, |
3113 | struct btrfs_root *root); | 3107 | struct btrfs_root *root); |
3114 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); | ||
3115 | u64 btrfs_get_alloc_profile(struct btrfs_root *root, int data); | 3108 | u64 btrfs_get_alloc_profile(struct btrfs_root *root, int data); |
3116 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info); | 3109 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info); |
3117 | 3110 | ||
@@ -3300,7 +3293,6 @@ static inline int btrfs_next_item(struct btrfs_root *root, struct btrfs_path *p) | |||
3300 | { | 3293 | { |
3301 | return btrfs_next_old_item(root, p, 0); | 3294 | return btrfs_next_old_item(root, p, 0); |
3302 | } | 3295 | } |
3303 | int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path); | ||
3304 | int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf); | 3296 | int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf); |
3305 | int __must_check btrfs_drop_snapshot(struct btrfs_root *root, | 3297 | int __must_check btrfs_drop_snapshot(struct btrfs_root *root, |
3306 | struct btrfs_block_rsv *block_rsv, | 3298 | struct btrfs_block_rsv *block_rsv, |
@@ -3395,9 +3387,6 @@ struct btrfs_dir_item * | |||
3395 | btrfs_search_dir_index_item(struct btrfs_root *root, | 3387 | btrfs_search_dir_index_item(struct btrfs_root *root, |
3396 | struct btrfs_path *path, u64 dirid, | 3388 | struct btrfs_path *path, u64 dirid, |
3397 | const char *name, int name_len); | 3389 | const char *name, int name_len); |
3398 | struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_root *root, | ||
3399 | struct btrfs_path *path, | ||
3400 | const char *name, int name_len); | ||
3401 | int btrfs_delete_one_dir_name(struct btrfs_trans_handle *trans, | 3390 | int btrfs_delete_one_dir_name(struct btrfs_trans_handle *trans, |
3402 | struct btrfs_root *root, | 3391 | struct btrfs_root *root, |
3403 | struct btrfs_path *path, | 3392 | struct btrfs_path *path, |
@@ -3475,16 +3464,11 @@ int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans, | |||
3475 | struct btrfs_root *root, | 3464 | struct btrfs_root *root, |
3476 | struct btrfs_path *path, u64 objectid, | 3465 | struct btrfs_path *path, u64 objectid, |
3477 | u64 bytenr, int mod); | 3466 | u64 bytenr, int mod); |
3478 | u64 btrfs_file_extent_length(struct btrfs_path *path); | ||
3479 | int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans, | 3467 | int btrfs_csum_file_blocks(struct btrfs_trans_handle *trans, |
3480 | struct btrfs_root *root, | 3468 | struct btrfs_root *root, |
3481 | struct btrfs_ordered_sum *sums); | 3469 | struct btrfs_ordered_sum *sums); |
3482 | int btrfs_csum_one_bio(struct btrfs_root *root, struct inode *inode, | 3470 | int btrfs_csum_one_bio(struct btrfs_root *root, struct inode *inode, |
3483 | struct bio *bio, u64 file_start, int contig); | 3471 | struct bio *bio, u64 file_start, int contig); |
3484 | struct btrfs_csum_item *btrfs_lookup_csum(struct btrfs_trans_handle *trans, | ||
3485 | struct btrfs_root *root, | ||
3486 | struct btrfs_path *path, | ||
3487 | u64 bytenr, int cow); | ||
3488 | int btrfs_csum_truncate(struct btrfs_trans_handle *trans, | 3472 | int btrfs_csum_truncate(struct btrfs_trans_handle *trans, |
3489 | struct btrfs_root *root, struct btrfs_path *path, | 3473 | struct btrfs_root *root, struct btrfs_path *path, |
3490 | u64 isize); | 3474 | u64 isize); |
@@ -3546,8 +3530,6 @@ int btrfs_truncate_inode_items(struct btrfs_trans_handle *trans, | |||
3546 | int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput); | 3530 | int btrfs_start_delalloc_inodes(struct btrfs_root *root, int delay_iput); |
3547 | int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end, | 3531 | int btrfs_set_extent_delalloc(struct inode *inode, u64 start, u64 end, |
3548 | struct extent_state **cached_state); | 3532 | struct extent_state **cached_state); |
3549 | int btrfs_writepages(struct address_space *mapping, | ||
3550 | struct writeback_control *wbc); | ||
3551 | int btrfs_create_subvol_root(struct btrfs_trans_handle *trans, | 3533 | int btrfs_create_subvol_root(struct btrfs_trans_handle *trans, |
3552 | struct btrfs_root *new_root, u64 new_dirid); | 3534 | struct btrfs_root *new_root, u64 new_dirid); |
3553 | int btrfs_merge_bio_hook(int rw, struct page *page, unsigned long offset, | 3535 | int btrfs_merge_bio_hook(int rw, struct page *page, unsigned long offset, |
@@ -3557,7 +3539,6 @@ int btrfs_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf); | |||
3557 | int btrfs_readpage(struct file *file, struct page *page); | 3539 | int btrfs_readpage(struct file *file, struct page *page); |
3558 | void btrfs_evict_inode(struct inode *inode); | 3540 | void btrfs_evict_inode(struct inode *inode); |
3559 | int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); | 3541 | int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc); |
3560 | int btrfs_dirty_inode(struct inode *inode); | ||
3561 | struct inode *btrfs_alloc_inode(struct super_block *sb); | 3542 | struct inode *btrfs_alloc_inode(struct super_block *sb); |
3562 | void btrfs_destroy_inode(struct inode *inode); | 3543 | void btrfs_destroy_inode(struct inode *inode); |
3563 | int btrfs_drop_inode(struct inode *inode); | 3544 | int btrfs_drop_inode(struct inode *inode); |
@@ -3575,7 +3556,6 @@ int btrfs_update_inode(struct btrfs_trans_handle *trans, | |||
3575 | int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans, | 3556 | int btrfs_update_inode_fallback(struct btrfs_trans_handle *trans, |
3576 | struct btrfs_root *root, struct inode *inode); | 3557 | struct btrfs_root *root, struct inode *inode); |
3577 | int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); | 3558 | int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode); |
3578 | int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode); | ||
3579 | int btrfs_orphan_cleanup(struct btrfs_root *root); | 3559 | int btrfs_orphan_cleanup(struct btrfs_root *root); |
3580 | void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans, | 3560 | void btrfs_orphan_commit_root(struct btrfs_trans_handle *trans, |
3581 | struct btrfs_root *root); | 3561 | struct btrfs_root *root); |
@@ -3626,7 +3606,6 @@ int btrfs_drop_extents(struct btrfs_trans_handle *trans, | |||
3626 | int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, | 3606 | int btrfs_mark_extent_written(struct btrfs_trans_handle *trans, |
3627 | struct inode *inode, u64 start, u64 end); | 3607 | struct inode *inode, u64 start, u64 end); |
3628 | int btrfs_release_file(struct inode *inode, struct file *file); | 3608 | int btrfs_release_file(struct inode *inode, struct file *file); |
3629 | void btrfs_drop_pages(struct page **pages, size_t num_pages); | ||
3630 | int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode, | 3609 | int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode, |
3631 | struct page **pages, size_t num_pages, | 3610 | struct page **pages, size_t num_pages, |
3632 | loff_t pos, size_t write_bytes, | 3611 | loff_t pos, size_t write_bytes, |
@@ -3802,7 +3781,6 @@ void btrfs_scrub_continue_super(struct btrfs_root *root); | |||
3802 | int btrfs_scrub_cancel(struct btrfs_fs_info *info); | 3781 | int btrfs_scrub_cancel(struct btrfs_fs_info *info); |
3803 | int btrfs_scrub_cancel_dev(struct btrfs_fs_info *info, | 3782 | int btrfs_scrub_cancel_dev(struct btrfs_fs_info *info, |
3804 | struct btrfs_device *dev); | 3783 | struct btrfs_device *dev); |
3805 | int btrfs_scrub_cancel_devid(struct btrfs_root *root, u64 devid); | ||
3806 | int btrfs_scrub_progress(struct btrfs_root *root, u64 devid, | 3784 | int btrfs_scrub_progress(struct btrfs_root *root, u64 devid, |
3807 | struct btrfs_scrub_progress *progress); | 3785 | struct btrfs_scrub_progress *progress); |
3808 | 3786 | ||
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 71b78c27496d..f26f38ccd194 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -202,7 +202,7 @@ static void btrfs_dequeue_delayed_node(struct btrfs_delayed_root *root, | |||
202 | spin_unlock(&root->lock); | 202 | spin_unlock(&root->lock); |
203 | } | 203 | } |
204 | 204 | ||
205 | struct btrfs_delayed_node *btrfs_first_delayed_node( | 205 | static struct btrfs_delayed_node *btrfs_first_delayed_node( |
206 | struct btrfs_delayed_root *delayed_root) | 206 | struct btrfs_delayed_root *delayed_root) |
207 | { | 207 | { |
208 | struct list_head *p; | 208 | struct list_head *p; |
@@ -221,7 +221,7 @@ out: | |||
221 | return node; | 221 | return node; |
222 | } | 222 | } |
223 | 223 | ||
224 | struct btrfs_delayed_node *btrfs_next_delayed_node( | 224 | static struct btrfs_delayed_node *btrfs_next_delayed_node( |
225 | struct btrfs_delayed_node *node) | 225 | struct btrfs_delayed_node *node) |
226 | { | 226 | { |
227 | struct btrfs_delayed_root *delayed_root; | 227 | struct btrfs_delayed_root *delayed_root; |
@@ -282,7 +282,7 @@ static inline void btrfs_release_delayed_node(struct btrfs_delayed_node *node) | |||
282 | __btrfs_release_delayed_node(node, 0); | 282 | __btrfs_release_delayed_node(node, 0); |
283 | } | 283 | } |
284 | 284 | ||
285 | struct btrfs_delayed_node *btrfs_first_prepared_delayed_node( | 285 | static struct btrfs_delayed_node *btrfs_first_prepared_delayed_node( |
286 | struct btrfs_delayed_root *delayed_root) | 286 | struct btrfs_delayed_root *delayed_root) |
287 | { | 287 | { |
288 | struct list_head *p; | 288 | struct list_head *p; |
@@ -308,7 +308,7 @@ static inline void btrfs_release_prepared_delayed_node( | |||
308 | __btrfs_release_delayed_node(node, 1); | 308 | __btrfs_release_delayed_node(node, 1); |
309 | } | 309 | } |
310 | 310 | ||
311 | struct btrfs_delayed_item *btrfs_alloc_delayed_item(u32 data_len) | 311 | static struct btrfs_delayed_item *btrfs_alloc_delayed_item(u32 data_len) |
312 | { | 312 | { |
313 | struct btrfs_delayed_item *item; | 313 | struct btrfs_delayed_item *item; |
314 | item = kmalloc(sizeof(*item) + data_len, GFP_NOFS); | 314 | item = kmalloc(sizeof(*item) + data_len, GFP_NOFS); |
@@ -383,7 +383,7 @@ static struct btrfs_delayed_item *__btrfs_lookup_delayed_item( | |||
383 | return NULL; | 383 | return NULL; |
384 | } | 384 | } |
385 | 385 | ||
386 | struct btrfs_delayed_item *__btrfs_lookup_delayed_insertion_item( | 386 | static struct btrfs_delayed_item *__btrfs_lookup_delayed_insertion_item( |
387 | struct btrfs_delayed_node *delayed_node, | 387 | struct btrfs_delayed_node *delayed_node, |
388 | struct btrfs_key *key) | 388 | struct btrfs_key *key) |
389 | { | 389 | { |
@@ -394,45 +394,6 @@ struct btrfs_delayed_item *__btrfs_lookup_delayed_insertion_item( | |||
394 | return item; | 394 | return item; |
395 | } | 395 | } |
396 | 396 | ||
397 | struct btrfs_delayed_item *__btrfs_lookup_delayed_deletion_item( | ||
398 | struct btrfs_delayed_node *delayed_node, | ||
399 | struct btrfs_key *key) | ||
400 | { | ||
401 | struct btrfs_delayed_item *item; | ||
402 | |||
403 | item = __btrfs_lookup_delayed_item(&delayed_node->del_root, key, | ||
404 | NULL, NULL); | ||
405 | return item; | ||
406 | } | ||
407 | |||
408 | struct btrfs_delayed_item *__btrfs_search_delayed_insertion_item( | ||
409 | struct btrfs_delayed_node *delayed_node, | ||
410 | struct btrfs_key *key) | ||
411 | { | ||
412 | struct btrfs_delayed_item *item, *next; | ||
413 | |||
414 | item = __btrfs_lookup_delayed_item(&delayed_node->ins_root, key, | ||
415 | NULL, &next); | ||
416 | if (!item) | ||
417 | item = next; | ||
418 | |||
419 | return item; | ||
420 | } | ||
421 | |||
422 | struct btrfs_delayed_item *__btrfs_search_delayed_deletion_item( | ||
423 | struct btrfs_delayed_node *delayed_node, | ||
424 | struct btrfs_key *key) | ||
425 | { | ||
426 | struct btrfs_delayed_item *item, *next; | ||
427 | |||
428 | item = __btrfs_lookup_delayed_item(&delayed_node->del_root, key, | ||
429 | NULL, &next); | ||
430 | if (!item) | ||
431 | item = next; | ||
432 | |||
433 | return item; | ||
434 | } | ||
435 | |||
436 | static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, | 397 | static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, |
437 | struct btrfs_delayed_item *ins, | 398 | struct btrfs_delayed_item *ins, |
438 | int action) | 399 | int action) |
@@ -535,7 +496,7 @@ static void btrfs_release_delayed_item(struct btrfs_delayed_item *item) | |||
535 | } | 496 | } |
536 | } | 497 | } |
537 | 498 | ||
538 | struct btrfs_delayed_item *__btrfs_first_delayed_insertion_item( | 499 | static struct btrfs_delayed_item *__btrfs_first_delayed_insertion_item( |
539 | struct btrfs_delayed_node *delayed_node) | 500 | struct btrfs_delayed_node *delayed_node) |
540 | { | 501 | { |
541 | struct rb_node *p; | 502 | struct rb_node *p; |
@@ -548,7 +509,7 @@ struct btrfs_delayed_item *__btrfs_first_delayed_insertion_item( | |||
548 | return item; | 509 | return item; |
549 | } | 510 | } |
550 | 511 | ||
551 | struct btrfs_delayed_item *__btrfs_first_delayed_deletion_item( | 512 | static struct btrfs_delayed_item *__btrfs_first_delayed_deletion_item( |
552 | struct btrfs_delayed_node *delayed_node) | 513 | struct btrfs_delayed_node *delayed_node) |
553 | { | 514 | { |
554 | struct rb_node *p; | 515 | struct rb_node *p; |
@@ -561,7 +522,7 @@ struct btrfs_delayed_item *__btrfs_first_delayed_deletion_item( | |||
561 | return item; | 522 | return item; |
562 | } | 523 | } |
563 | 524 | ||
564 | struct btrfs_delayed_item *__btrfs_next_delayed_item( | 525 | static struct btrfs_delayed_item *__btrfs_next_delayed_item( |
565 | struct btrfs_delayed_item *item) | 526 | struct btrfs_delayed_item *item) |
566 | { | 527 | { |
567 | struct rb_node *p; | 528 | struct rb_node *p; |
diff --git a/fs/btrfs/dir-item.c b/fs/btrfs/dir-item.c index 71fa113fe41f..79e594e341c7 100644 --- a/fs/btrfs/dir-item.c +++ b/fs/btrfs/dir-item.c | |||
@@ -21,6 +21,10 @@ | |||
21 | #include "hash.h" | 21 | #include "hash.h" |
22 | #include "transaction.h" | 22 | #include "transaction.h" |
23 | 23 | ||
24 | static struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_root *root, | ||
25 | struct btrfs_path *path, | ||
26 | const char *name, int name_len); | ||
27 | |||
24 | /* | 28 | /* |
25 | * insert a name into a directory, doing overflow properly if there is a hash | 29 | * insert a name into a directory, doing overflow properly if there is a hash |
26 | * collision. data_size indicates how big the item inserted should be. On | 30 | * collision. data_size indicates how big the item inserted should be. On |
@@ -379,7 +383,7 @@ struct btrfs_dir_item *btrfs_lookup_xattr(struct btrfs_trans_handle *trans, | |||
379 | * this walks through all the entries in a dir item and finds one | 383 | * this walks through all the entries in a dir item and finds one |
380 | * for a specific name. | 384 | * for a specific name. |
381 | */ | 385 | */ |
382 | struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_root *root, | 386 | static struct btrfs_dir_item *btrfs_match_dir_item_name(struct btrfs_root *root, |
383 | struct btrfs_path *path, | 387 | struct btrfs_path *path, |
384 | const char *name, int name_len) | 388 | const char *name, int name_len) |
385 | { | 389 | { |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index f651a37c7e0a..ac132d9637bb 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -70,6 +70,8 @@ static int btrfs_destroy_marked_extents(struct btrfs_root *root, | |||
70 | int mark); | 70 | int mark); |
71 | static int btrfs_destroy_pinned_extent(struct btrfs_root *root, | 71 | static int btrfs_destroy_pinned_extent(struct btrfs_root *root, |
72 | struct extent_io_tree *pinned_extents); | 72 | struct extent_io_tree *pinned_extents); |
73 | static int btrfs_cleanup_transaction(struct btrfs_root *root); | ||
74 | static void btrfs_error_commit_super(struct btrfs_root *root); | ||
73 | 75 | ||
74 | /* | 76 | /* |
75 | * end_io_wq structs are used to do processing in task context when an IO is | 77 | * end_io_wq structs are used to do processing in task context when an IO is |
@@ -531,41 +533,6 @@ static noinline int check_leaf(struct btrfs_root *root, | |||
531 | return 0; | 533 | return 0; |
532 | } | 534 | } |
533 | 535 | ||
534 | struct extent_buffer *find_eb_for_page(struct extent_io_tree *tree, | ||
535 | struct page *page, int max_walk) | ||
536 | { | ||
537 | struct extent_buffer *eb; | ||
538 | u64 start = page_offset(page); | ||
539 | u64 target = start; | ||
540 | u64 min_start; | ||
541 | |||
542 | if (start < max_walk) | ||
543 | min_start = 0; | ||
544 | else | ||
545 | min_start = start - max_walk; | ||
546 | |||
547 | while (start >= min_start) { | ||
548 | eb = find_extent_buffer(tree, start, 0); | ||
549 | if (eb) { | ||
550 | /* | ||
551 | * we found an extent buffer and it contains our page | ||
552 | * horray! | ||
553 | */ | ||
554 | if (eb->start <= target && | ||
555 | eb->start + eb->len > target) | ||
556 | return eb; | ||
557 | |||
558 | /* we found an extent buffer that wasn't for us */ | ||
559 | free_extent_buffer(eb); | ||
560 | return NULL; | ||
561 | } | ||
562 | if (start == 0) | ||
563 | break; | ||
564 | start -= PAGE_CACHE_SIZE; | ||
565 | } | ||
566 | return NULL; | ||
567 | } | ||
568 | |||
569 | static int btree_readpage_end_io_hook(struct page *page, u64 start, u64 end, | 536 | static int btree_readpage_end_io_hook(struct page *page, u64 start, u64 end, |
570 | struct extent_state *state, int mirror) | 537 | struct extent_state *state, int mirror) |
571 | { | 538 | { |
@@ -3245,7 +3212,7 @@ int btrfs_calc_num_tolerated_disk_barrier_failures( | |||
3245 | return num_tolerated_disk_barrier_failures; | 3212 | return num_tolerated_disk_barrier_failures; |
3246 | } | 3213 | } |
3247 | 3214 | ||
3248 | int write_all_supers(struct btrfs_root *root, int max_mirrors) | 3215 | static int write_all_supers(struct btrfs_root *root, int max_mirrors) |
3249 | { | 3216 | { |
3250 | struct list_head *head; | 3217 | struct list_head *head; |
3251 | struct btrfs_device *dev; | 3218 | struct btrfs_device *dev; |
@@ -3611,7 +3578,7 @@ static int btrfs_check_super_valid(struct btrfs_fs_info *fs_info, | |||
3611 | return 0; | 3578 | return 0; |
3612 | } | 3579 | } |
3613 | 3580 | ||
3614 | void btrfs_error_commit_super(struct btrfs_root *root) | 3581 | static void btrfs_error_commit_super(struct btrfs_root *root) |
3615 | { | 3582 | { |
3616 | mutex_lock(&root->fs_info->cleaner_mutex); | 3583 | mutex_lock(&root->fs_info->cleaner_mutex); |
3617 | btrfs_run_delayed_iputs(root); | 3584 | btrfs_run_delayed_iputs(root); |
@@ -3879,7 +3846,7 @@ void btrfs_cleanup_one_transaction(struct btrfs_transaction *cur_trans, | |||
3879 | */ | 3846 | */ |
3880 | } | 3847 | } |
3881 | 3848 | ||
3882 | int btrfs_cleanup_transaction(struct btrfs_root *root) | 3849 | static int btrfs_cleanup_transaction(struct btrfs_root *root) |
3883 | { | 3850 | { |
3884 | struct btrfs_transaction *t; | 3851 | struct btrfs_transaction *t; |
3885 | LIST_HEAD(list); | 3852 | LIST_HEAD(list); |
diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h index 85c23e6c8fec..be69ce1b07a2 100644 --- a/fs/btrfs/disk-io.h +++ b/fs/btrfs/disk-io.h | |||
@@ -61,7 +61,6 @@ int write_ctree_super(struct btrfs_trans_handle *trans, | |||
61 | struct btrfs_root *root, int max_mirrors); | 61 | struct btrfs_root *root, int max_mirrors); |
62 | struct buffer_head *btrfs_read_dev_super(struct block_device *bdev); | 62 | struct buffer_head *btrfs_read_dev_super(struct block_device *bdev); |
63 | int btrfs_commit_super(struct btrfs_root *root); | 63 | int btrfs_commit_super(struct btrfs_root *root); |
64 | void btrfs_error_commit_super(struct btrfs_root *root); | ||
65 | struct extent_buffer *btrfs_find_tree_block(struct btrfs_root *root, | 64 | struct extent_buffer *btrfs_find_tree_block(struct btrfs_root *root, |
66 | u64 bytenr, u32 blocksize); | 65 | u64 bytenr, u32 blocksize); |
67 | struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_root *tree_root, | 66 | struct btrfs_root *btrfs_read_fs_root_no_radix(struct btrfs_root *tree_root, |
@@ -93,7 +92,6 @@ int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, | |||
93 | struct btrfs_fs_info *fs_info); | 92 | struct btrfs_fs_info *fs_info); |
94 | int btrfs_add_log_tree(struct btrfs_trans_handle *trans, | 93 | int btrfs_add_log_tree(struct btrfs_trans_handle *trans, |
95 | struct btrfs_root *root); | 94 | struct btrfs_root *root); |
96 | int btrfs_cleanup_transaction(struct btrfs_root *root); | ||
97 | void btrfs_cleanup_one_transaction(struct btrfs_transaction *trans, | 95 | void btrfs_cleanup_one_transaction(struct btrfs_transaction *trans, |
98 | struct btrfs_root *root); | 96 | struct btrfs_root *root); |
99 | struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans, | 97 | struct btrfs_root *btrfs_create_tree(struct btrfs_trans_handle *trans, |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index b0a3fab98713..039a77162817 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -105,6 +105,8 @@ static int btrfs_update_reserved_bytes(struct btrfs_block_group_cache *cache, | |||
105 | u64 num_bytes, int reserve); | 105 | u64 num_bytes, int reserve); |
106 | static int block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv, | 106 | static int block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv, |
107 | u64 num_bytes); | 107 | u64 num_bytes); |
108 | int btrfs_pin_extent(struct btrfs_root *root, | ||
109 | u64 bytenr, u64 num_bytes, int reserved); | ||
108 | 110 | ||
109 | static noinline int | 111 | static noinline int |
110 | block_group_cache_done(struct btrfs_block_group_cache *cache) | 112 | block_group_cache_done(struct btrfs_block_group_cache *cache) |
@@ -684,55 +686,6 @@ void btrfs_clear_space_info_full(struct btrfs_fs_info *info) | |||
684 | rcu_read_unlock(); | 686 | rcu_read_unlock(); |
685 | } | 687 | } |
686 | 688 | ||
687 | u64 btrfs_find_block_group(struct btrfs_root *root, | ||
688 | u64 search_start, u64 search_hint, int owner) | ||
689 | { | ||
690 | struct btrfs_block_group_cache *cache; | ||
691 | u64 used; | ||
692 | u64 last = max(search_hint, search_start); | ||
693 | u64 group_start = 0; | ||
694 | int full_search = 0; | ||
695 | int factor = 9; | ||
696 | int wrapped = 0; | ||
697 | again: | ||
698 | while (1) { | ||
699 | cache = btrfs_lookup_first_block_group(root->fs_info, last); | ||
700 | if (!cache) | ||
701 | break; | ||
702 | |||
703 | spin_lock(&cache->lock); | ||
704 | last = cache->key.objectid + cache->key.offset; | ||
705 | used = btrfs_block_group_used(&cache->item); | ||
706 | |||
707 | if ((full_search || !cache->ro) && | ||
708 | block_group_bits(cache, BTRFS_BLOCK_GROUP_METADATA)) { | ||
709 | if (used + cache->pinned + cache->reserved < | ||
710 | div_factor(cache->key.offset, factor)) { | ||
711 | group_start = cache->key.objectid; | ||
712 | spin_unlock(&cache->lock); | ||
713 | btrfs_put_block_group(cache); | ||
714 | goto found; | ||
715 | } | ||
716 | } | ||
717 | spin_unlock(&cache->lock); | ||
718 | btrfs_put_block_group(cache); | ||
719 | cond_resched(); | ||
720 | } | ||
721 | if (!wrapped) { | ||
722 | last = search_start; | ||
723 | wrapped = 1; | ||
724 | goto again; | ||
725 | } | ||
726 | if (!full_search && factor < 10) { | ||
727 | last = search_start; | ||
728 | full_search = 1; | ||
729 | factor = 10; | ||
730 | goto again; | ||
731 | } | ||
732 | found: | ||
733 | return group_start; | ||
734 | } | ||
735 | |||
736 | /* simple helper to search for an existing extent at a given offset */ | 689 | /* simple helper to search for an existing extent at a given offset */ |
737 | int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len) | 690 | int btrfs_lookup_extent(struct btrfs_root *root, u64 start, u64 len) |
738 | { | 691 | { |
@@ -3453,7 +3406,7 @@ static u64 get_restripe_target(struct btrfs_fs_info *fs_info, u64 flags) | |||
3453 | * progress (either running or paused) picks the target profile (if it's | 3406 | * progress (either running or paused) picks the target profile (if it's |
3454 | * already available), otherwise falls back to plain reducing. | 3407 | * already available), otherwise falls back to plain reducing. |
3455 | */ | 3408 | */ |
3456 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags) | 3409 | static u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags) |
3457 | { | 3410 | { |
3458 | /* | 3411 | /* |
3459 | * we add in the count of missing devices because we want | 3412 | * we add in the count of missing devices because we want |
@@ -3927,8 +3880,8 @@ static int can_overcommit(struct btrfs_root *root, | |||
3927 | return 0; | 3880 | return 0; |
3928 | } | 3881 | } |
3929 | 3882 | ||
3930 | void btrfs_writeback_inodes_sb_nr(struct btrfs_root *root, | 3883 | static void btrfs_writeback_inodes_sb_nr(struct btrfs_root *root, |
3931 | unsigned long nr_pages) | 3884 | unsigned long nr_pages) |
3932 | { | 3885 | { |
3933 | struct super_block *sb = root->fs_info->sb; | 3886 | struct super_block *sb = root->fs_info->sb; |
3934 | int started; | 3887 | int started; |
@@ -6652,10 +6605,9 @@ out: | |||
6652 | return ret; | 6605 | return ret; |
6653 | } | 6606 | } |
6654 | 6607 | ||
6655 | struct extent_buffer *btrfs_init_new_buffer(struct btrfs_trans_handle *trans, | 6608 | static struct extent_buffer * |
6656 | struct btrfs_root *root, | 6609 | btrfs_init_new_buffer(struct btrfs_trans_handle *trans, struct btrfs_root *root, |
6657 | u64 bytenr, u32 blocksize, | 6610 | u64 bytenr, u32 blocksize, int level) |
6658 | int level) | ||
6659 | { | 6611 | { |
6660 | struct extent_buffer *buf; | 6612 | struct extent_buffer *buf; |
6661 | 6613 | ||
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index f110d12de2d5..77c5914f6090 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -477,7 +477,7 @@ alloc_extent_state_atomic(struct extent_state *prealloc) | |||
477 | return prealloc; | 477 | return prealloc; |
478 | } | 478 | } |
479 | 479 | ||
480 | void extent_io_tree_panic(struct extent_io_tree *tree, int err) | 480 | static void extent_io_tree_panic(struct extent_io_tree *tree, int err) |
481 | { | 481 | { |
482 | btrfs_panic(tree_fs_info(tree), err, "Locking error: " | 482 | btrfs_panic(tree_fs_info(tree), err, "Locking error: " |
483 | "Extent tree was modified by another " | 483 | "Extent tree was modified by another " |
@@ -658,7 +658,8 @@ static void wait_on_state(struct extent_io_tree *tree, | |||
658 | * The range [start, end] is inclusive. | 658 | * The range [start, end] is inclusive. |
659 | * The tree lock is taken by this function | 659 | * The tree lock is taken by this function |
660 | */ | 660 | */ |
661 | void wait_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, int bits) | 661 | static void wait_extent_bit(struct extent_io_tree *tree, u64 start, |
662 | u64 end, int bits) | ||
662 | { | 663 | { |
663 | struct extent_state *state; | 664 | struct extent_state *state; |
664 | struct rb_node *node; | 665 | struct rb_node *node; |
@@ -1327,8 +1328,9 @@ static int set_range_writeback(struct extent_io_tree *tree, u64 start, u64 end) | |||
1327 | * return it. tree->lock must be held. NULL will returned if | 1328 | * return it. tree->lock must be held. NULL will returned if |
1328 | * nothing was found after 'start' | 1329 | * nothing was found after 'start' |
1329 | */ | 1330 | */ |
1330 | struct extent_state *find_first_extent_bit_state(struct extent_io_tree *tree, | 1331 | static struct extent_state * |
1331 | u64 start, int bits) | 1332 | find_first_extent_bit_state(struct extent_io_tree *tree, |
1333 | u64 start, int bits) | ||
1332 | { | 1334 | { |
1333 | struct rb_node *node; | 1335 | struct rb_node *node; |
1334 | struct extent_state *state; | 1336 | struct extent_state *state; |
@@ -2668,7 +2670,8 @@ static int submit_extent_page(int rw, struct extent_io_tree *tree, | |||
2668 | return ret; | 2670 | return ret; |
2669 | } | 2671 | } |
2670 | 2672 | ||
2671 | void attach_extent_buffer_page(struct extent_buffer *eb, struct page *page) | 2673 | static void attach_extent_buffer_page(struct extent_buffer *eb, |
2674 | struct page *page) | ||
2672 | { | 2675 | { |
2673 | if (!PagePrivate(page)) { | 2676 | if (!PagePrivate(page)) { |
2674 | SetPagePrivate(page); | 2677 | SetPagePrivate(page); |
@@ -3786,9 +3789,9 @@ int extent_invalidatepage(struct extent_io_tree *tree, | |||
3786 | * are locked or under IO and drops the related state bits if it is safe | 3789 | * are locked or under IO and drops the related state bits if it is safe |
3787 | * to drop the page. | 3790 | * to drop the page. |
3788 | */ | 3791 | */ |
3789 | int try_release_extent_state(struct extent_map_tree *map, | 3792 | static int try_release_extent_state(struct extent_map_tree *map, |
3790 | struct extent_io_tree *tree, struct page *page, | 3793 | struct extent_io_tree *tree, |
3791 | gfp_t mask) | 3794 | struct page *page, gfp_t mask) |
3792 | { | 3795 | { |
3793 | u64 start = page_offset(page); | 3796 | u64 start = page_offset(page); |
3794 | u64 end = start + PAGE_CACHE_SIZE - 1; | 3797 | u64 end = start + PAGE_CACHE_SIZE - 1; |
@@ -4571,17 +4574,6 @@ int set_extent_buffer_dirty(struct extent_buffer *eb) | |||
4571 | return was_dirty; | 4574 | return was_dirty; |
4572 | } | 4575 | } |
4573 | 4576 | ||
4574 | static int range_straddles_pages(u64 start, u64 len) | ||
4575 | { | ||
4576 | if (len < PAGE_CACHE_SIZE) | ||
4577 | return 1; | ||
4578 | if (start & (PAGE_CACHE_SIZE - 1)) | ||
4579 | return 1; | ||
4580 | if ((start + len) & (PAGE_CACHE_SIZE - 1)) | ||
4581 | return 1; | ||
4582 | return 0; | ||
4583 | } | ||
4584 | |||
4585 | int clear_extent_buffer_uptodate(struct extent_buffer *eb) | 4577 | int clear_extent_buffer_uptodate(struct extent_buffer *eb) |
4586 | { | 4578 | { |
4587 | unsigned long i; | 4579 | unsigned long i; |
@@ -4613,37 +4605,6 @@ int set_extent_buffer_uptodate(struct extent_buffer *eb) | |||
4613 | return 0; | 4605 | return 0; |
4614 | } | 4606 | } |
4615 | 4607 | ||
4616 | int extent_range_uptodate(struct extent_io_tree *tree, | ||
4617 | u64 start, u64 end) | ||
4618 | { | ||
4619 | struct page *page; | ||
4620 | int ret; | ||
4621 | int pg_uptodate = 1; | ||
4622 | int uptodate; | ||
4623 | unsigned long index; | ||
4624 | |||
4625 | if (range_straddles_pages(start, end - start + 1)) { | ||
4626 | ret = test_range_bit(tree, start, end, | ||
4627 | EXTENT_UPTODATE, 1, NULL); | ||
4628 | if (ret) | ||
4629 | return 1; | ||
4630 | } | ||
4631 | while (start <= end) { | ||
4632 | index = start >> PAGE_CACHE_SHIFT; | ||
4633 | page = find_get_page(tree->mapping, index); | ||
4634 | if (!page) | ||
4635 | return 1; | ||
4636 | uptodate = PageUptodate(page); | ||
4637 | page_cache_release(page); | ||
4638 | if (!uptodate) { | ||
4639 | pg_uptodate = 0; | ||
4640 | break; | ||
4641 | } | ||
4642 | start += PAGE_CACHE_SIZE; | ||
4643 | } | ||
4644 | return pg_uptodate; | ||
4645 | } | ||
4646 | |||
4647 | int extent_buffer_uptodate(struct extent_buffer *eb) | 4608 | int extent_buffer_uptodate(struct extent_buffer *eb) |
4648 | { | 4609 | { |
4649 | return test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); | 4610 | return test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags); |
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h index 59d883bc3ed3..9ebb4c7b86d1 100644 --- a/fs/btrfs/extent_io.h +++ b/fs/btrfs/extent_io.h | |||
@@ -190,9 +190,6 @@ int try_release_extent_mapping(struct extent_map_tree *map, | |||
190 | struct extent_io_tree *tree, struct page *page, | 190 | struct extent_io_tree *tree, struct page *page, |
191 | gfp_t mask); | 191 | gfp_t mask); |
192 | int try_release_extent_buffer(struct page *page, gfp_t mask); | 192 | int try_release_extent_buffer(struct page *page, gfp_t mask); |
193 | int try_release_extent_state(struct extent_map_tree *map, | ||
194 | struct extent_io_tree *tree, struct page *page, | ||
195 | gfp_t mask); | ||
196 | int lock_extent(struct extent_io_tree *tree, u64 start, u64 end); | 193 | int lock_extent(struct extent_io_tree *tree, u64 start, u64 end); |
197 | int lock_extent_bits(struct extent_io_tree *tree, u64 start, u64 end, | 194 | int lock_extent_bits(struct extent_io_tree *tree, u64 start, u64 end, |
198 | int bits, struct extent_state **cached); | 195 | int bits, struct extent_state **cached); |
@@ -242,8 +239,6 @@ int set_extent_defrag(struct extent_io_tree *tree, u64 start, u64 end, | |||
242 | int find_first_extent_bit(struct extent_io_tree *tree, u64 start, | 239 | int find_first_extent_bit(struct extent_io_tree *tree, u64 start, |
243 | u64 *start_ret, u64 *end_ret, int bits, | 240 | u64 *start_ret, u64 *end_ret, int bits, |
244 | struct extent_state **cached_state); | 241 | struct extent_state **cached_state); |
245 | struct extent_state *find_first_extent_bit_state(struct extent_io_tree *tree, | ||
246 | u64 start, int bits); | ||
247 | int extent_invalidatepage(struct extent_io_tree *tree, | 242 | int extent_invalidatepage(struct extent_io_tree *tree, |
248 | struct page *page, unsigned long offset); | 243 | struct page *page, unsigned long offset); |
249 | int extent_write_full_page(struct extent_io_tree *tree, struct page *page, | 244 | int extent_write_full_page(struct extent_io_tree *tree, struct page *page, |
@@ -322,7 +317,6 @@ void memmove_extent_buffer(struct extent_buffer *dst, unsigned long dst_offset, | |||
322 | unsigned long src_offset, unsigned long len); | 317 | unsigned long src_offset, unsigned long len); |
323 | void memset_extent_buffer(struct extent_buffer *eb, char c, | 318 | void memset_extent_buffer(struct extent_buffer *eb, char c, |
324 | unsigned long start, unsigned long len); | 319 | unsigned long start, unsigned long len); |
325 | void wait_extent_bit(struct extent_io_tree *tree, u64 start, u64 end, int bits); | ||
326 | void clear_extent_buffer_dirty(struct extent_buffer *eb); | 320 | void clear_extent_buffer_dirty(struct extent_buffer *eb); |
327 | int set_extent_buffer_dirty(struct extent_buffer *eb); | 321 | int set_extent_buffer_dirty(struct extent_buffer *eb); |
328 | int set_extent_buffer_uptodate(struct extent_buffer *eb); | 322 | int set_extent_buffer_uptodate(struct extent_buffer *eb); |
@@ -332,8 +326,6 @@ int map_private_extent_buffer(struct extent_buffer *eb, unsigned long offset, | |||
332 | unsigned long min_len, char **map, | 326 | unsigned long min_len, char **map, |
333 | unsigned long *map_start, | 327 | unsigned long *map_start, |
334 | unsigned long *map_len); | 328 | unsigned long *map_len); |
335 | int extent_range_uptodate(struct extent_io_tree *tree, | ||
336 | u64 start, u64 end); | ||
337 | int extent_range_clear_dirty_for_io(struct inode *inode, u64 start, u64 end); | 329 | int extent_range_clear_dirty_for_io(struct inode *inode, u64 start, u64 end); |
338 | int extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end); | 330 | int extent_range_redirty_for_io(struct inode *inode, u64 start, u64 end); |
339 | int extent_clear_unlock_delalloc(struct inode *inode, | 331 | int extent_clear_unlock_delalloc(struct inode *inode, |
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c index ca968742c3db..a4a7a1a8da95 100644 --- a/fs/btrfs/extent_map.c +++ b/fs/btrfs/extent_map.c | |||
@@ -345,8 +345,9 @@ static u64 range_end(u64 start, u64 len) | |||
345 | return start + len; | 345 | return start + len; |
346 | } | 346 | } |
347 | 347 | ||
348 | struct extent_map *__lookup_extent_mapping(struct extent_map_tree *tree, | 348 | static struct extent_map * |
349 | u64 start, u64 len, int strict) | 349 | __lookup_extent_mapping(struct extent_map_tree *tree, |
350 | u64 start, u64 len, int strict) | ||
350 | { | 351 | { |
351 | struct extent_map *em; | 352 | struct extent_map *em; |
352 | struct rb_node *rb_node; | 353 | struct rb_node *rb_node; |
diff --git a/fs/btrfs/file-item.c b/fs/btrfs/file-item.c index 769eb86f890c..b193bf324a41 100644 --- a/fs/btrfs/file-item.c +++ b/fs/btrfs/file-item.c | |||
@@ -83,10 +83,11 @@ out: | |||
83 | return ret; | 83 | return ret; |
84 | } | 84 | } |
85 | 85 | ||
86 | struct btrfs_csum_item *btrfs_lookup_csum(struct btrfs_trans_handle *trans, | 86 | static struct btrfs_csum_item * |
87 | struct btrfs_root *root, | 87 | btrfs_lookup_csum(struct btrfs_trans_handle *trans, |
88 | struct btrfs_path *path, | 88 | struct btrfs_root *root, |
89 | u64 bytenr, int cow) | 89 | struct btrfs_path *path, |
90 | u64 bytenr, int cow) | ||
90 | { | 91 | { |
91 | int ret; | 92 | int ret; |
92 | struct btrfs_key file_key; | 93 | struct btrfs_key file_key; |
@@ -152,27 +153,6 @@ int btrfs_lookup_file_extent(struct btrfs_trans_handle *trans, | |||
152 | return ret; | 153 | return ret; |
153 | } | 154 | } |
154 | 155 | ||
155 | u64 btrfs_file_extent_length(struct btrfs_path *path) | ||
156 | { | ||
157 | int extent_type; | ||
158 | struct btrfs_file_extent_item *fi; | ||
159 | u64 len; | ||
160 | |||
161 | fi = btrfs_item_ptr(path->nodes[0], path->slots[0], | ||
162 | struct btrfs_file_extent_item); | ||
163 | extent_type = btrfs_file_extent_type(path->nodes[0], fi); | ||
164 | |||
165 | if (extent_type == BTRFS_FILE_EXTENT_REG || | ||
166 | extent_type == BTRFS_FILE_EXTENT_PREALLOC) | ||
167 | len = btrfs_file_extent_num_bytes(path->nodes[0], fi); | ||
168 | else if (extent_type == BTRFS_FILE_EXTENT_INLINE) | ||
169 | len = btrfs_file_extent_inline_len(path->nodes[0], fi); | ||
170 | else | ||
171 | BUG(); | ||
172 | |||
173 | return len; | ||
174 | } | ||
175 | |||
176 | static int __btrfs_lookup_bio_sums(struct btrfs_root *root, | 156 | static int __btrfs_lookup_bio_sums(struct btrfs_root *root, |
177 | struct inode *inode, struct bio *bio, | 157 | struct inode *inode, struct bio *bio, |
178 | u64 logical_offset, u32 *dst, int dio) | 158 | u64 logical_offset, u32 *dst, int dio) |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index bef15c3ef41d..b3e359bc8e68 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -192,8 +192,8 @@ int btrfs_add_inode_defrag(struct btrfs_trans_handle *trans, | |||
192 | * the same inode in the tree, we will merge them together (by | 192 | * the same inode in the tree, we will merge them together (by |
193 | * __btrfs_add_inode_defrag()) and free the one that we want to requeue. | 193 | * __btrfs_add_inode_defrag()) and free the one that we want to requeue. |
194 | */ | 194 | */ |
195 | void btrfs_requeue_inode_defrag(struct inode *inode, | 195 | static void btrfs_requeue_inode_defrag(struct inode *inode, |
196 | struct inode_defrag *defrag) | 196 | struct inode_defrag *defrag) |
197 | { | 197 | { |
198 | struct btrfs_root *root = BTRFS_I(inode)->root; | 198 | struct btrfs_root *root = BTRFS_I(inode)->root; |
199 | int ret; | 199 | int ret; |
@@ -473,7 +473,7 @@ static noinline int btrfs_copy_from_user(loff_t pos, int num_pages, | |||
473 | /* | 473 | /* |
474 | * unlocks pages after btrfs_file_write is done with them | 474 | * unlocks pages after btrfs_file_write is done with them |
475 | */ | 475 | */ |
476 | void btrfs_drop_pages(struct page **pages, size_t num_pages) | 476 | static void btrfs_drop_pages(struct page **pages, size_t num_pages) |
477 | { | 477 | { |
478 | size_t i; | 478 | size_t i; |
479 | for (i = 0; i < num_pages; i++) { | 479 | for (i = 0; i < num_pages; i++) { |
@@ -497,9 +497,9 @@ void btrfs_drop_pages(struct page **pages, size_t num_pages) | |||
497 | * doing real data extents, marking pages dirty and delalloc as required. | 497 | * doing real data extents, marking pages dirty and delalloc as required. |
498 | */ | 498 | */ |
499 | int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode, | 499 | int btrfs_dirty_pages(struct btrfs_root *root, struct inode *inode, |
500 | struct page **pages, size_t num_pages, | 500 | struct page **pages, size_t num_pages, |
501 | loff_t pos, size_t write_bytes, | 501 | loff_t pos, size_t write_bytes, |
502 | struct extent_state **cached) | 502 | struct extent_state **cached) |
503 | { | 503 | { |
504 | int err = 0; | 504 | int err = 0; |
505 | int i; | 505 | int i; |
diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index 37b2b89a28f6..ecca6c7375a6 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c | |||
@@ -120,9 +120,10 @@ struct inode *lookup_free_space_inode(struct btrfs_root *root, | |||
120 | return inode; | 120 | return inode; |
121 | } | 121 | } |
122 | 122 | ||
123 | int __create_free_space_inode(struct btrfs_root *root, | 123 | static int __create_free_space_inode(struct btrfs_root *root, |
124 | struct btrfs_trans_handle *trans, | 124 | struct btrfs_trans_handle *trans, |
125 | struct btrfs_path *path, u64 ino, u64 offset) | 125 | struct btrfs_path *path, |
126 | u64 ino, u64 offset) | ||
126 | { | 127 | { |
127 | struct btrfs_key key; | 128 | struct btrfs_key key; |
128 | struct btrfs_disk_key disk_key; | 129 | struct btrfs_disk_key disk_key; |
@@ -625,9 +626,9 @@ next: | |||
625 | spin_unlock(&ctl->tree_lock); | 626 | spin_unlock(&ctl->tree_lock); |
626 | } | 627 | } |
627 | 628 | ||
628 | int __load_free_space_cache(struct btrfs_root *root, struct inode *inode, | 629 | static int __load_free_space_cache(struct btrfs_root *root, struct inode *inode, |
629 | struct btrfs_free_space_ctl *ctl, | 630 | struct btrfs_free_space_ctl *ctl, |
630 | struct btrfs_path *path, u64 offset) | 631 | struct btrfs_path *path, u64 offset) |
631 | { | 632 | { |
632 | struct btrfs_free_space_header *header; | 633 | struct btrfs_free_space_header *header; |
633 | struct extent_buffer *leaf; | 634 | struct extent_buffer *leaf; |
@@ -868,11 +869,11 @@ out: | |||
868 | * on mount. This will return 0 if it was successfull in writing the cache out, | 869 | * on mount. This will return 0 if it was successfull in writing the cache out, |
869 | * and -1 if it was not. | 870 | * and -1 if it was not. |
870 | */ | 871 | */ |
871 | int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode, | 872 | static int __btrfs_write_out_cache(struct btrfs_root *root, struct inode *inode, |
872 | struct btrfs_free_space_ctl *ctl, | 873 | struct btrfs_free_space_ctl *ctl, |
873 | struct btrfs_block_group_cache *block_group, | 874 | struct btrfs_block_group_cache *block_group, |
874 | struct btrfs_trans_handle *trans, | 875 | struct btrfs_trans_handle *trans, |
875 | struct btrfs_path *path, u64 offset) | 876 | struct btrfs_path *path, u64 offset) |
876 | { | 877 | { |
877 | struct btrfs_free_space_header *header; | 878 | struct btrfs_free_space_header *header; |
878 | struct extent_buffer *leaf; | 879 | struct extent_buffer *leaf; |
@@ -2067,7 +2068,8 @@ out: | |||
2067 | return 0; | 2068 | return 0; |
2068 | } | 2069 | } |
2069 | 2070 | ||
2070 | void __btrfs_remove_free_space_cache_locked(struct btrfs_free_space_ctl *ctl) | 2071 | static void __btrfs_remove_free_space_cache_locked( |
2072 | struct btrfs_free_space_ctl *ctl) | ||
2071 | { | 2073 | { |
2072 | struct btrfs_free_space *info; | 2074 | struct btrfs_free_space *info; |
2073 | struct rb_node *node; | 2075 | struct rb_node *node; |
diff --git a/fs/btrfs/inode-item.c b/fs/btrfs/inode-item.c index 1640e0344a40..e0b7034d6343 100644 --- a/fs/btrfs/inode-item.c +++ b/fs/btrfs/inode-item.c | |||
@@ -183,10 +183,11 @@ int btrfs_get_inode_ref_index(struct btrfs_trans_handle *trans, | |||
183 | return -ENOENT; | 183 | return -ENOENT; |
184 | } | 184 | } |
185 | 185 | ||
186 | int btrfs_del_inode_extref(struct btrfs_trans_handle *trans, | 186 | static int btrfs_del_inode_extref(struct btrfs_trans_handle *trans, |
187 | struct btrfs_root *root, | 187 | struct btrfs_root *root, |
188 | const char *name, int name_len, | 188 | const char *name, int name_len, |
189 | u64 inode_objectid, u64 ref_objectid, u64 *index) | 189 | u64 inode_objectid, u64 ref_objectid, |
190 | u64 *index) | ||
190 | { | 191 | { |
191 | struct btrfs_path *path; | 192 | struct btrfs_path *path; |
192 | struct btrfs_key key; | 193 | struct btrfs_key key; |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 0eab7b67e109..ec63d7af3460 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -103,6 +103,8 @@ static struct extent_map *create_pinned_em(struct inode *inode, u64 start, | |||
103 | u64 orig_block_len, u64 ram_bytes, | 103 | u64 orig_block_len, u64 ram_bytes, |
104 | int type); | 104 | int type); |
105 | 105 | ||
106 | static int btrfs_dirty_inode(struct inode *inode); | ||
107 | |||
106 | static int btrfs_init_inode_security(struct btrfs_trans_handle *trans, | 108 | static int btrfs_init_inode_security(struct btrfs_trans_handle *trans, |
107 | struct inode *inode, struct inode *dir, | 109 | struct inode *inode, struct inode *dir, |
108 | const struct qstr *qstr) | 110 | const struct qstr *qstr) |
@@ -3024,7 +3026,8 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode) | |||
3024 | * We have done the truncate/delete so we can go ahead and remove the orphan | 3026 | * We have done the truncate/delete so we can go ahead and remove the orphan |
3025 | * item for this particular inode. | 3027 | * item for this particular inode. |
3026 | */ | 3028 | */ |
3027 | int btrfs_orphan_del(struct btrfs_trans_handle *trans, struct inode *inode) | 3029 | static int btrfs_orphan_del(struct btrfs_trans_handle *trans, |
3030 | struct inode *inode) | ||
3028 | { | 3031 | { |
3029 | struct btrfs_root *root = BTRFS_I(inode)->root; | 3032 | struct btrfs_root *root = BTRFS_I(inode)->root; |
3030 | int delete_item = 0; | 3033 | int delete_item = 0; |
@@ -5342,7 +5345,7 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc) | |||
5342 | * FIXME, needs more benchmarking...there are no reasons other than performance | 5345 | * FIXME, needs more benchmarking...there are no reasons other than performance |
5343 | * to keep or drop this code. | 5346 | * to keep or drop this code. |
5344 | */ | 5347 | */ |
5345 | int btrfs_dirty_inode(struct inode *inode) | 5348 | static int btrfs_dirty_inode(struct inode *inode) |
5346 | { | 5349 | { |
5347 | struct btrfs_root *root = BTRFS_I(inode)->root; | 5350 | struct btrfs_root *root = BTRFS_I(inode)->root; |
5348 | struct btrfs_trans_handle *trans; | 5351 | struct btrfs_trans_handle *trans; |
@@ -7437,8 +7440,8 @@ static int btrfs_writepage(struct page *page, struct writeback_control *wbc) | |||
7437 | return extent_write_full_page(tree, page, btrfs_get_extent, wbc); | 7440 | return extent_write_full_page(tree, page, btrfs_get_extent, wbc); |
7438 | } | 7441 | } |
7439 | 7442 | ||
7440 | int btrfs_writepages(struct address_space *mapping, | 7443 | static int btrfs_writepages(struct address_space *mapping, |
7441 | struct writeback_control *wbc) | 7444 | struct writeback_control *wbc) |
7442 | { | 7445 | { |
7443 | struct extent_io_tree *tree; | 7446 | struct extent_io_tree *tree; |
7444 | 7447 | ||
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index f5f6af338b53..3aa37508bf23 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -3010,7 +3010,7 @@ void btrfs_get_block_group_info(struct list_head *groups_list, | |||
3010 | } | 3010 | } |
3011 | } | 3011 | } |
3012 | 3012 | ||
3013 | long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) | 3013 | static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg) |
3014 | { | 3014 | { |
3015 | struct btrfs_ioctl_space_args space_args; | 3015 | struct btrfs_ioctl_space_args space_args; |
3016 | struct btrfs_ioctl_space_info space; | 3016 | struct btrfs_ioctl_space_info space; |
diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c index e95df435d897..01277b8f2373 100644 --- a/fs/btrfs/locking.c +++ b/fs/btrfs/locking.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "extent_io.h" | 24 | #include "extent_io.h" |
25 | #include "locking.h" | 25 | #include "locking.h" |
26 | 26 | ||
27 | void btrfs_assert_tree_read_locked(struct extent_buffer *eb); | 27 | static void btrfs_assert_tree_read_locked(struct extent_buffer *eb); |
28 | 28 | ||
29 | /* | 29 | /* |
30 | * if we currently have a spinning reader or writer lock | 30 | * if we currently have a spinning reader or writer lock |
@@ -264,7 +264,7 @@ void btrfs_assert_tree_locked(struct extent_buffer *eb) | |||
264 | BUG_ON(!atomic_read(&eb->write_locks)); | 264 | BUG_ON(!atomic_read(&eb->write_locks)); |
265 | } | 265 | } |
266 | 266 | ||
267 | void btrfs_assert_tree_read_locked(struct extent_buffer *eb) | 267 | static void btrfs_assert_tree_read_locked(struct extent_buffer *eb) |
268 | { | 268 | { |
269 | BUG_ON(!atomic_read(&eb->read_locks)); | 269 | BUG_ON(!atomic_read(&eb->read_locks)); |
270 | } | 270 | } |
diff --git a/fs/btrfs/print-tree.h b/fs/btrfs/print-tree.h index da75efe534d5..7faddfacc5bd 100644 --- a/fs/btrfs/print-tree.h +++ b/fs/btrfs/print-tree.h | |||
@@ -19,5 +19,5 @@ | |||
19 | #ifndef __PRINT_TREE_ | 19 | #ifndef __PRINT_TREE_ |
20 | #define __PRINT_TREE_ | 20 | #define __PRINT_TREE_ |
21 | void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l); | 21 | void btrfs_print_leaf(struct btrfs_root *root, struct extent_buffer *l); |
22 | void btrfs_print_tree(struct btrfs_root *root, struct extent_buffer *t); | 22 | void btrfs_print_tree(struct btrfs_root *root, struct extent_buffer *c); |
23 | #endif | 23 | #endif |
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c index 9a79fb790adb..0740621daf6c 100644 --- a/fs/btrfs/raid56.c +++ b/fs/btrfs/raid56.c | |||
@@ -410,7 +410,7 @@ static void remove_rbio_from_cache(struct btrfs_raid_bio *rbio) | |||
410 | /* | 410 | /* |
411 | * remove everything in the cache | 411 | * remove everything in the cache |
412 | */ | 412 | */ |
413 | void btrfs_clear_rbio_cache(struct btrfs_fs_info *info) | 413 | static void btrfs_clear_rbio_cache(struct btrfs_fs_info *info) |
414 | { | 414 | { |
415 | struct btrfs_stripe_hash_table *table; | 415 | struct btrfs_stripe_hash_table *table; |
416 | unsigned long flags; | 416 | unsigned long flags; |
@@ -1010,12 +1010,12 @@ static int alloc_rbio_parity_pages(struct btrfs_raid_bio *rbio) | |||
1010 | * this will try to merge into existing bios if possible, and returns | 1010 | * this will try to merge into existing bios if possible, and returns |
1011 | * zero if all went well. | 1011 | * zero if all went well. |
1012 | */ | 1012 | */ |
1013 | int rbio_add_io_page(struct btrfs_raid_bio *rbio, | 1013 | static int rbio_add_io_page(struct btrfs_raid_bio *rbio, |
1014 | struct bio_list *bio_list, | 1014 | struct bio_list *bio_list, |
1015 | struct page *page, | 1015 | struct page *page, |
1016 | int stripe_nr, | 1016 | int stripe_nr, |
1017 | unsigned long page_index, | 1017 | unsigned long page_index, |
1018 | unsigned long bio_max_len) | 1018 | unsigned long bio_max_len) |
1019 | { | 1019 | { |
1020 | struct bio *last = bio_list->tail; | 1020 | struct bio *last = bio_list->tail; |
1021 | u64 last_end = 0; | 1021 | u64 last_end = 0; |
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 63cdd9246c70..d338df405e72 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c | |||
@@ -326,8 +326,7 @@ static struct rb_node *tree_search(struct rb_root *root, u64 bytenr) | |||
326 | return NULL; | 326 | return NULL; |
327 | } | 327 | } |
328 | 328 | ||
329 | void backref_tree_panic(struct rb_node *rb_node, int errno, | 329 | static void backref_tree_panic(struct rb_node *rb_node, int errno, u64 bytenr) |
330 | u64 bytenr) | ||
331 | { | 330 | { |
332 | 331 | ||
333 | struct btrfs_fs_info *fs_info = NULL; | 332 | struct btrfs_fs_info *fs_info = NULL; |
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 28db5dcde0aa..47500c25262e 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c | |||
@@ -3012,28 +3012,6 @@ int btrfs_scrub_cancel_dev(struct btrfs_fs_info *fs_info, | |||
3012 | return 0; | 3012 | return 0; |
3013 | } | 3013 | } |
3014 | 3014 | ||
3015 | int btrfs_scrub_cancel_devid(struct btrfs_root *root, u64 devid) | ||
3016 | { | ||
3017 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
3018 | struct btrfs_device *dev; | ||
3019 | int ret; | ||
3020 | |||
3021 | /* | ||
3022 | * we have to hold the device_list_mutex here so the device | ||
3023 | * does not go away in cancel_dev. FIXME: find a better solution | ||
3024 | */ | ||
3025 | mutex_lock(&fs_info->fs_devices->device_list_mutex); | ||
3026 | dev = btrfs_find_device(fs_info, devid, NULL, NULL); | ||
3027 | if (!dev) { | ||
3028 | mutex_unlock(&fs_info->fs_devices->device_list_mutex); | ||
3029 | return -ENODEV; | ||
3030 | } | ||
3031 | ret = btrfs_scrub_cancel_dev(fs_info, dev); | ||
3032 | mutex_unlock(&fs_info->fs_devices->device_list_mutex); | ||
3033 | |||
3034 | return ret; | ||
3035 | } | ||
3036 | |||
3037 | int btrfs_scrub_progress(struct btrfs_root *root, u64 devid, | 3015 | int btrfs_scrub_progress(struct btrfs_root *root, u64 devid, |
3038 | struct btrfs_scrub_progress *progress) | 3016 | struct btrfs_scrub_progress *progress) |
3039 | { | 3017 | { |
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index 2037fc0efab1..ff40f1c00ce3 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c | |||
@@ -387,7 +387,7 @@ static struct btrfs_path *alloc_path_for_send(void) | |||
387 | return path; | 387 | return path; |
388 | } | 388 | } |
389 | 389 | ||
390 | int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off) | 390 | static int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off) |
391 | { | 391 | { |
392 | int ret; | 392 | int ret; |
393 | mm_segment_t old_fs; | 393 | mm_segment_t old_fs; |
diff --git a/fs/btrfs/send.h b/fs/btrfs/send.h index 8bb18f7ccaa6..48d425aef05b 100644 --- a/fs/btrfs/send.h +++ b/fs/btrfs/send.h | |||
@@ -131,5 +131,4 @@ enum { | |||
131 | 131 | ||
132 | #ifdef __KERNEL__ | 132 | #ifdef __KERNEL__ |
133 | long btrfs_ioctl_send(struct file *mnt_file, void __user *arg); | 133 | long btrfs_ioctl_send(struct file *mnt_file, void __user *arg); |
134 | int write_buf(struct file *filp, const void *buf, u32 len, loff_t *off); | ||
135 | #endif | 134 | #endif |
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 18d6fb7be265..0544587d74f4 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -34,7 +34,7 @@ | |||
34 | 34 | ||
35 | #define BTRFS_ROOT_TRANS_TAG 0 | 35 | #define BTRFS_ROOT_TRANS_TAG 0 |
36 | 36 | ||
37 | void put_transaction(struct btrfs_transaction *transaction) | 37 | static void put_transaction(struct btrfs_transaction *transaction) |
38 | { | 38 | { |
39 | WARN_ON(atomic_read(&transaction->use_count) == 0); | 39 | WARN_ON(atomic_read(&transaction->use_count) == 0); |
40 | if (atomic_dec_and_test(&transaction->use_count)) { | 40 | if (atomic_dec_and_test(&transaction->use_count)) { |
diff --git a/fs/btrfs/transaction.h b/fs/btrfs/transaction.h index f6edd5e6baa3..24c97335a59f 100644 --- a/fs/btrfs/transaction.h +++ b/fs/btrfs/transaction.h | |||
@@ -146,5 +146,4 @@ int btrfs_wait_marked_extents(struct btrfs_root *root, | |||
146 | struct extent_io_tree *dirty_pages, int mark); | 146 | struct extent_io_tree *dirty_pages, int mark); |
147 | int btrfs_transaction_blocked(struct btrfs_fs_info *info); | 147 | int btrfs_transaction_blocked(struct btrfs_fs_info *info); |
148 | int btrfs_transaction_in_commit(struct btrfs_fs_info *info); | 148 | int btrfs_transaction_in_commit(struct btrfs_fs_info *info); |
149 | void put_transaction(struct btrfs_transaction *transaction); | ||
150 | #endif | 149 | #endif |
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 705aee6bd15b..c276ac9a0ec3 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c | |||
@@ -3839,9 +3839,9 @@ out: | |||
3839 | * only logging is done of any parent directories that are older than | 3839 | * only logging is done of any parent directories that are older than |
3840 | * the last committed transaction | 3840 | * the last committed transaction |
3841 | */ | 3841 | */ |
3842 | int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, | 3842 | static int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, |
3843 | struct btrfs_root *root, struct inode *inode, | 3843 | struct btrfs_root *root, struct inode *inode, |
3844 | struct dentry *parent, int exists_only) | 3844 | struct dentry *parent, int exists_only) |
3845 | { | 3845 | { |
3846 | int inode_only = exists_only ? LOG_INODE_EXISTS : LOG_INODE_ALL; | 3846 | int inode_only = exists_only ? LOG_INODE_EXISTS : LOG_INODE_ALL; |
3847 | struct super_block *sb; | 3847 | struct super_block *sb; |
diff --git a/fs/btrfs/tree-log.h b/fs/btrfs/tree-log.h index 862ac813f6b8..1d4ae0d15a70 100644 --- a/fs/btrfs/tree-log.h +++ b/fs/btrfs/tree-log.h | |||
@@ -40,9 +40,6 @@ int btrfs_del_inode_ref_in_log(struct btrfs_trans_handle *trans, | |||
40 | struct inode *inode, u64 dirid); | 40 | struct inode *inode, u64 dirid); |
41 | void btrfs_end_log_trans(struct btrfs_root *root); | 41 | void btrfs_end_log_trans(struct btrfs_root *root); |
42 | int btrfs_pin_log_trans(struct btrfs_root *root); | 42 | int btrfs_pin_log_trans(struct btrfs_root *root); |
43 | int btrfs_log_inode_parent(struct btrfs_trans_handle *trans, | ||
44 | struct btrfs_root *root, struct inode *inode, | ||
45 | struct dentry *parent, int exists_only); | ||
46 | void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans, | 43 | void btrfs_record_unlink_dir(struct btrfs_trans_handle *trans, |
47 | struct inode *dir, struct inode *inode, | 44 | struct inode *dir, struct inode *inode, |
48 | int for_rename); | 45 | int for_rename); |
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index c1a22178c6e8..a191bac31d85 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -46,6 +46,7 @@ static int init_first_rw_device(struct btrfs_trans_handle *trans, | |||
46 | struct btrfs_device *device); | 46 | struct btrfs_device *device); |
47 | static int btrfs_relocate_sys_chunks(struct btrfs_root *root); | 47 | static int btrfs_relocate_sys_chunks(struct btrfs_root *root); |
48 | static void __btrfs_reset_dev_stats(struct btrfs_device *dev); | 48 | static void __btrfs_reset_dev_stats(struct btrfs_device *dev); |
49 | static void btrfs_dev_stat_print_on_error(struct btrfs_device *dev); | ||
49 | static void btrfs_dev_stat_print_on_load(struct btrfs_device *device); | 50 | static void btrfs_dev_stat_print_on_load(struct btrfs_device *device); |
50 | 51 | ||
51 | static DEFINE_MUTEX(uuid_mutex); | 52 | static DEFINE_MUTEX(uuid_mutex); |
@@ -1199,10 +1200,10 @@ out: | |||
1199 | return ret; | 1200 | return ret; |
1200 | } | 1201 | } |
1201 | 1202 | ||
1202 | int btrfs_alloc_dev_extent(struct btrfs_trans_handle *trans, | 1203 | static int btrfs_alloc_dev_extent(struct btrfs_trans_handle *trans, |
1203 | struct btrfs_device *device, | 1204 | struct btrfs_device *device, |
1204 | u64 chunk_tree, u64 chunk_objectid, | 1205 | u64 chunk_tree, u64 chunk_objectid, |
1205 | u64 chunk_offset, u64 start, u64 num_bytes) | 1206 | u64 chunk_offset, u64 start, u64 num_bytes) |
1206 | { | 1207 | { |
1207 | int ret; | 1208 | int ret; |
1208 | struct btrfs_path *path; | 1209 | struct btrfs_path *path; |
@@ -1329,9 +1330,9 @@ error: | |||
1329 | * the device information is stored in the chunk root | 1330 | * the device information is stored in the chunk root |
1330 | * the btrfs_device struct should be fully filled in | 1331 | * the btrfs_device struct should be fully filled in |
1331 | */ | 1332 | */ |
1332 | int btrfs_add_device(struct btrfs_trans_handle *trans, | 1333 | static int btrfs_add_device(struct btrfs_trans_handle *trans, |
1333 | struct btrfs_root *root, | 1334 | struct btrfs_root *root, |
1334 | struct btrfs_device *device) | 1335 | struct btrfs_device *device) |
1335 | { | 1336 | { |
1336 | int ret; | 1337 | int ret; |
1337 | struct btrfs_path *path; | 1338 | struct btrfs_path *path; |
@@ -1710,8 +1711,8 @@ void btrfs_destroy_dev_replace_tgtdev(struct btrfs_fs_info *fs_info, | |||
1710 | mutex_unlock(&fs_info->fs_devices->device_list_mutex); | 1711 | mutex_unlock(&fs_info->fs_devices->device_list_mutex); |
1711 | } | 1712 | } |
1712 | 1713 | ||
1713 | int btrfs_find_device_by_path(struct btrfs_root *root, char *device_path, | 1714 | static int btrfs_find_device_by_path(struct btrfs_root *root, char *device_path, |
1714 | struct btrfs_device **device) | 1715 | struct btrfs_device **device) |
1715 | { | 1716 | { |
1716 | int ret = 0; | 1717 | int ret = 0; |
1717 | struct btrfs_super_block *disk_super; | 1718 | struct btrfs_super_block *disk_super; |
@@ -3607,7 +3608,7 @@ static int btrfs_cmp_device_info(const void *a, const void *b) | |||
3607 | return 0; | 3608 | return 0; |
3608 | } | 3609 | } |
3609 | 3610 | ||
3610 | struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { | 3611 | static struct btrfs_raid_attr btrfs_raid_array[BTRFS_NR_RAID_TYPES] = { |
3611 | [BTRFS_RAID_RAID10] = { | 3612 | [BTRFS_RAID_RAID10] = { |
3612 | .sub_stripes = 2, | 3613 | .sub_stripes = 2, |
3613 | .dev_stripes = 1, | 3614 | .dev_stripes = 1, |
@@ -5120,9 +5121,9 @@ struct async_sched { | |||
5120 | * This will add one bio to the pending list for a device and make sure | 5121 | * This will add one bio to the pending list for a device and make sure |
5121 | * the work struct is scheduled. | 5122 | * the work struct is scheduled. |
5122 | */ | 5123 | */ |
5123 | noinline void btrfs_schedule_bio(struct btrfs_root *root, | 5124 | static noinline void btrfs_schedule_bio(struct btrfs_root *root, |
5124 | struct btrfs_device *device, | 5125 | struct btrfs_device *device, |
5125 | int rw, struct bio *bio) | 5126 | int rw, struct bio *bio) |
5126 | { | 5127 | { |
5127 | int should_queue = 1; | 5128 | int should_queue = 1; |
5128 | struct btrfs_pending_bios *pending_bios; | 5129 | struct btrfs_pending_bios *pending_bios; |
@@ -5940,7 +5941,7 @@ void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index) | |||
5940 | btrfs_dev_stat_print_on_error(dev); | 5941 | btrfs_dev_stat_print_on_error(dev); |
5941 | } | 5942 | } |
5942 | 5943 | ||
5943 | void btrfs_dev_stat_print_on_error(struct btrfs_device *dev) | 5944 | static void btrfs_dev_stat_print_on_error(struct btrfs_device *dev) |
5944 | { | 5945 | { |
5945 | if (!dev->dev_stats_valid) | 5946 | if (!dev->dev_stats_valid) |
5946 | return; | 5947 | return; |
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h index 062d8604d35b..845ccbb0d2e3 100644 --- a/fs/btrfs/volumes.h +++ b/fs/btrfs/volumes.h | |||
@@ -254,10 +254,6 @@ int btrfs_account_dev_extents_size(struct btrfs_device *device, u64 start, | |||
254 | #define btrfs_bio_size(n) (sizeof(struct btrfs_bio) + \ | 254 | #define btrfs_bio_size(n) (sizeof(struct btrfs_bio) + \ |
255 | (sizeof(struct btrfs_bio_stripe) * (n))) | 255 | (sizeof(struct btrfs_bio_stripe) * (n))) |
256 | 256 | ||
257 | int btrfs_alloc_dev_extent(struct btrfs_trans_handle *trans, | ||
258 | struct btrfs_device *device, | ||
259 | u64 chunk_tree, u64 chunk_objectid, | ||
260 | u64 chunk_offset, u64 start, u64 num_bytes); | ||
261 | int btrfs_map_block(struct btrfs_fs_info *fs_info, int rw, | 257 | int btrfs_map_block(struct btrfs_fs_info *fs_info, int rw, |
262 | u64 logical, u64 *length, | 258 | u64 logical, u64 *length, |
263 | struct btrfs_bio **bbio_ret, int mirror_num); | 259 | struct btrfs_bio **bbio_ret, int mirror_num); |
@@ -282,11 +278,6 @@ void btrfs_close_extra_devices(struct btrfs_fs_info *fs_info, | |||
282 | int btrfs_find_device_missing_or_by_path(struct btrfs_root *root, | 278 | int btrfs_find_device_missing_or_by_path(struct btrfs_root *root, |
283 | char *device_path, | 279 | char *device_path, |
284 | struct btrfs_device **device); | 280 | struct btrfs_device **device); |
285 | int btrfs_find_device_by_path(struct btrfs_root *root, char *device_path, | ||
286 | struct btrfs_device **device); | ||
287 | int btrfs_add_device(struct btrfs_trans_handle *trans, | ||
288 | struct btrfs_root *root, | ||
289 | struct btrfs_device *device); | ||
290 | int btrfs_rm_device(struct btrfs_root *root, char *device_path); | 281 | int btrfs_rm_device(struct btrfs_root *root, char *device_path); |
291 | void btrfs_cleanup_fs_uuids(void); | 282 | void btrfs_cleanup_fs_uuids(void); |
292 | int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len); | 283 | int btrfs_num_copies(struct btrfs_fs_info *fs_info, u64 logical, u64 len); |
@@ -307,7 +298,6 @@ int btrfs_cancel_balance(struct btrfs_fs_info *fs_info); | |||
307 | int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset); | 298 | int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset); |
308 | int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, | 299 | int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, |
309 | u64 *start, u64 *max_avail); | 300 | u64 *start, u64 *max_avail); |
310 | void btrfs_dev_stat_print_on_error(struct btrfs_device *device); | ||
311 | void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); | 301 | void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index); |
312 | int btrfs_get_dev_stats(struct btrfs_root *root, | 302 | int btrfs_get_dev_stats(struct btrfs_root *root, |
313 | struct btrfs_ioctl_get_dev_stats *stats); | 303 | struct btrfs_ioctl_get_dev_stats *stats); |
@@ -321,9 +311,6 @@ void btrfs_destroy_dev_replace_tgtdev(struct btrfs_fs_info *fs_info, | |||
321 | void btrfs_init_dev_replace_tgtdev_for_resume(struct btrfs_fs_info *fs_info, | 311 | void btrfs_init_dev_replace_tgtdev_for_resume(struct btrfs_fs_info *fs_info, |
322 | struct btrfs_device *tgtdev); | 312 | struct btrfs_device *tgtdev); |
323 | int btrfs_scratch_superblock(struct btrfs_device *device); | 313 | int btrfs_scratch_superblock(struct btrfs_device *device); |
324 | void btrfs_schedule_bio(struct btrfs_root *root, | ||
325 | struct btrfs_device *device, | ||
326 | int rw, struct bio *bio); | ||
327 | int btrfs_is_parity_mirror(struct btrfs_mapping_tree *map_tree, | 314 | int btrfs_is_parity_mirror(struct btrfs_mapping_tree *map_tree, |
328 | u64 logical, u64 len, int mirror_num); | 315 | u64 logical, u64 len, int mirror_num); |
329 | unsigned long btrfs_full_stripe_len(struct btrfs_root *root, | 316 | unsigned long btrfs_full_stripe_len(struct btrfs_root *root, |
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 446a6848c554..05740b9789e4 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
@@ -406,8 +406,8 @@ int btrfs_removexattr(struct dentry *dentry, const char *name) | |||
406 | XATTR_REPLACE); | 406 | XATTR_REPLACE); |
407 | } | 407 | } |
408 | 408 | ||
409 | int btrfs_initxattrs(struct inode *inode, const struct xattr *xattr_array, | 409 | static int btrfs_initxattrs(struct inode *inode, |
410 | void *fs_info) | 410 | const struct xattr *xattr_array, void *fs_info) |
411 | { | 411 | { |
412 | const struct xattr *xattr; | 412 | const struct xattr *xattr; |
413 | struct btrfs_trans_handle *trans = fs_info; | 413 | struct btrfs_trans_handle *trans = fs_info; |