Cleanups, cruft removal
cover Cleanups, cruft removal
[resending, did not reach the list yesterday]
Hi,
sending out first bunch of function interface cleanups, removing unused parameters in the easily reviewable cases, plus some compiler warning fixes. No functional changes.
There is a measurable effect on code text size
(master is Linux 2.6.39-rc4 f0e615c3)
text data bss dec hex filename 518973 8112 216 527301 80bc5 btrfs.ko.master 517594 8112 216 525922 80662 btrfs.ko.cleanups
smaller runtime stack footprint will gain some speedup. There are still 100+ warnings about unused parameters, but some of them need deeper look into hisotry to verify that it's safe to remove them or are used within a longer callchain.
Such cleanups may break yet unmerged features (eg. automerge succesful with scrub, a few trivial conflicts with ino-alloc), so I'd like to hear if is the right time to send such patches.
thanks,
david
---
David Sterba (12):
btrfs: rename variables clashing with global function names
btrfs: remove nested duplicate variable declarations
btrfs: fix dereference before check
btrfs: unify checking of IS_ERR and null
btrfs: remove useless mutex lock/unlock sequences
btrfs: make functions static when possible
btrfs: drop unused argument from extent_io_tree_init
btrfs: drop unused parameter from extent_map_tree_init
btrfs: drop gfp parameter from alloc_extent_map
btrfs: drop gfp parameter from find_extent_buffer
btrfs: drop gfp parameter from alloc_extent_buffer
btrfs: drop unused parameter from btrfs_release_path
fs/btrfs/acl.c | 2 +- fs/btrfs/compression.c | 42 +++++++++--------- fs/btrfs/compression.h | 2 +- fs/btrfs/ctree.c | 33 +++++++------- fs/btrfs/ctree.h | 4 +- fs/btrfs/dir-item.c | 2 +- fs/btrfs/disk-io.c | 31 ++++++------- fs/btrfs/extent-tree.c | 58 +++++++++++------------- fs/btrfs/extent_io.c | 52 ++++++++++----------- fs/btrfs/extent_io.h | 10 ++--- fs/btrfs/extent_map.c | 8 +-- fs/btrfs/extent_map.h | 4 +- fs/btrfs/file-item.c | 12 +++--- fs/btrfs/file.c | 18 ++++---- fs/btrfs/free-space-cache.c | 21 ++++----- fs/btrfs/inode.c | 88 ++++++++++++++++++------------------ fs/btrfs/ioctl.c | 12 +++--- fs/btrfs/relocation.c | 36 ++++++++-------- fs/btrfs/root-tree.c | 10 ++-- fs/btrfs/super.c | 4 +- fs/btrfs/transaction.c | 3 +- fs/btrfs/tree-defrag.c | 2 +- fs/btrfs/tree-log.c | 102 +++++++++++++++++++++--------------------- fs/btrfs/volumes.c | 22 +++++----- fs/btrfs/xattr.c | 4 +- 25 files changed, 282 insertions(+), 300 deletions(-)
Signature · 1 line
1.7.5.rc3
PATCH 1/12 btrfs: rename variables clashing with global function names
reported by gcc -Wshadow:page_index, page_offset, new_inode, dev_name
--- fs/btrfs/compression.c | 42 +++++++++++++++++++++--------------------- fs/btrfs/compression.h | 2 +- fs/btrfs/ctree.h | 2 +- fs/btrfs/disk-io.c | 2 +- fs/btrfs/extent_io.c | 28 ++++++++++++++-------------- fs/btrfs/extent_io.h | 2 +- fs/btrfs/inode.c | 24 ++++++++++++------------ fs/btrfs/super.c | 4 ++-- 8 files changed, 53 insertions(+), 53 deletions(-)
fs/btrfs/compression.c +21 -21
@@ -332,7 +332,7 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,struct compressed_bio *cb;unsigned long bytes_left;struct extent_io_tree *io_tree = &BTRFS_I (inode)->io_tree; -int page_index =0 ; +int pg_index =0 ;struct page *page;u64 first_byte = disk_start;struct block_device *bdev;
@@ -366,8 +366,8 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,/* create and submit bios for the compressed pages */ bytes_left = compressed_len; -for (page_index =0 ; page_index < cb->nr_pages; page_index++) { - page = compressed_pages[page_index]; +for (pg_index =0 ; pg_index < cb->nr_pages; pg_index++) { + page = compressed_pages[pg_index]; page->mapping = inode->i_mapping;if (bio->bi_size) ret = io_tree->ops->merge_bio_hook(page, 0,
@@ -432,7 +432,7 @@ static noinline int add_ra_bio_pages(struct inode *inode, struct compressed_bio *cb) {unsigned long end_index; -unsigned long page_index; +unsigned long pg_index;u64 last_offset;u64 isize =i_size_read (inode);int ret;
@@ -456,13 +456,13 @@ static noinline int add_ra_bio_pages(struct inode *inode, end_index = (i_size_read (inode) -1 ) >>PAGE_CACHE_SHIFT ;while (last_offset < compressed_end) { - page_index = last_offset >>PAGE_CACHE_SHIFT ; + pg_index = last_offset >>PAGE_CACHE_SHIFT ; -if (page_index > end_index) +if (pg_index > end_index)break ;rcu_read_lock (); - page =radix_tree_lookup (&mapping->page_tree, page_index); + page =radix_tree_lookup (&mapping->page_tree, pg_index);rcu_read_unlock ();if (page) { misses++;
@@ -476,7 +476,7 @@ static noinline int add_ra_bio_pages(struct inode *inode,if (!page)break ; -if (add_to_page_cache_lru (page, mapping, page_index, +if (add_to_page_cache_lru (page, mapping, pg_index,GFP_NOFS )) {page_cache_release (page); goto next;
@@ -560,7 +560,7 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,unsigned long uncompressed_len = bio->bi_vcnt *PAGE_CACHE_SIZE ;unsigned long compressed_len;unsigned long nr_pages; -unsigned long page_index; +unsigned long pg_index;struct page *page;struct block_device *bdev;struct bio *comp_bio;
@@ -613,10 +613,10 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, bdev =BTRFS_I (inode)->root->fs_info->fs_devices->latest_bdev; -for (page_index =0 ; page_index < nr_pages; page_index++) { - cb->compressed_pages[page_index] =alloc_page (GFP_NOFS | +for (pg_index =0 ; pg_index < nr_pages; pg_index++) { + cb->compressed_pages[pg_index] =alloc_page (GFP_NOFS | __GFP_HIGHMEM); -if (!cb->compressed_pages[page_index]) +if (!cb->compressed_pages[pg_index]) goto fail2; } cb->nr_pages = nr_pages;
@@ -634,8 +634,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, comp_bio->bi_end_io = end_compressed_bio_read;atomic_inc (&cb->pending_bios); -for (page_index =0 ; page_index < nr_pages; page_index++) { - page = cb->compressed_pages[page_index]; +for (pg_index =0 ; pg_index < nr_pages; pg_index++) { + page = cb->compressed_pages[pg_index]; page->mapping = inode->i_mapping; page->index = em_start >>PAGE_CACHE_SHIFT ;
@@ -702,8 +702,8 @@ int btrfs_submit_compressed_read(struct inode *inode, struct bio *bio,return 0 ; fail2: -for (page_index =0 ; page_index < nr_pages; page_index++) -free_page ((unsigned long )cb->compressed_pages[page_index]); +for (pg_index =0 ; pg_index < nr_pages; pg_index++) +free_page ((unsigned long )cb->compressed_pages[pg_index]);kfree (cb->compressed_pages); fail1:
@@ -945,7 +945,7 @@ void btrfs_exit_compress(void)int btrfs_decompress_buf2page (char *buf,unsigned long buf_start,unsigned long total_out,u64 disk_start,struct bio_vec *bvec,int vcnt, -unsigned long *page_index, +unsigned long *pg_index,unsigned long *pg_offset) {unsigned long buf_offset;
@@ -954,7 +954,7 @@ int btrfs_decompress_buf2page(char *buf, unsigned long buf_start,unsigned long working_bytes = total_out - buf_start;unsigned long bytes;char *kaddr; -struct page *page_out = bvec[*page_index].bv_page; +struct page *page_out = bvec[*pg_index].bv_page;/* * start byte is the first byte of the page we're currently
@@ -995,11 +995,11 @@ int btrfs_decompress_buf2page(char *buf, unsigned long buf_start,/* check if we need to pick another page */ if (*pg_offset ==PAGE_CACHE_SIZE ) { - (*page_index)++; -if (*page_index >= vcnt) + (*pg_index)++; +if (*pg_index >= vcnt)return 0 ; - page_out = bvec[*page_index].bv_page; + page_out = bvec[*pg_index].bv_page; *pg_offset =0 ; start_byte =page_offset (page_out) - disk_start;
fs/btrfs/compression.h +1 -1
@@ -37,7 +37,7 @@ int btrfs_decompress(int type, unsigned char *data_in, struct page *dest_page,int btrfs_decompress_buf2page (char *buf,unsigned long buf_start,unsigned long total_out,u64 disk_start,struct bio_vec *bvec,int vcnt, -unsigned long *page_index, +unsigned long *pg_index,unsigned long *pg_offset); int btrfs_submit_compressed_write(struct inode *inode, u64 start,
fs/btrfs/ctree.h +1 -1
@@ -2534,7 +2534,7 @@ struct inode *btrfs_iget(struct super_block *s, struct btrfs_key *location,int btrfs_commit_write (struct file *file,struct page *page,unsigned from,unsigned to);struct extent_map *btrfs_get_extent (struct inode *inode,struct page *page, -size_t page_offset,u64 start,u64 end, +size_t pg_offset,u64 start,u64 end,int create); int btrfs_update_inode(struct btrfs_trans_handle *trans, struct btrfs_root *root,
fs/btrfs/disk-io.c +1 -1
@@ -137,7 +137,7 @@ static const char *btrfs_eb_name[BTRFS_MAX_LEVEL + 1] = {* that covers the entire device */ static struct extent_map *btree_get_extent (struct inode *inode, -struct page *page,size_t page_offset,u64 start,u64 len, +struct page *page,size_t pg_offset,u64 start,u64 len,int create) {struct extent_map_tree *em_tree = &BTRFS_I (inode)->extent_tree;
fs/btrfs/extent_io.c +14 -14
@@ -2007,7 +2007,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,struct btrfs_ordered_extent *ordered;int ret;int nr =0 ; -size_t page_offset =0 ; +size_t pg_offset =0 ;size_t iosize;size_t disk_io_size;size_t blocksize = inode->i_sb->s_blocksize;
@@ -2043,9 +2043,9 @@ static int __extent_read_full_page(struct extent_io_tree *tree,char *userpage;struct extent_state *cached =NULL ; - iosize =PAGE_CACHE_SIZE - page_offset; + iosize =PAGE_CACHE_SIZE - pg_offset; userpage =kmap_atomic (page,KM_USER0 ); -memset (userpage + page_offset,0 , iosize); +memset (userpage + pg_offset,0 , iosize);flush_dcache_page (page);kunmap_atomic (userpage,KM_USER0 ); set_extent_uptodate(tree, cur, cur + iosize - 1,
@@ -2054,7 +2054,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree, &cached, GFP_NOFS);break ; } - em =get_extent (inode, page, page_offset, cur, + em =get_extent (inode, page, pg_offset, cur, end - cur +1 ,0 );if (IS_ERR (em) || !em) {SetPageError (page);
@@ -2094,7 +2094,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,struct extent_state *cached =NULL ; userpage =kmap_atomic (page,KM_USER0 ); -memset (userpage + page_offset,0 , iosize); +memset (userpage + pg_offset,0 , iosize);flush_dcache_page (page);kunmap_atomic (userpage,KM_USER0 );
@@ -2103,7 +2103,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,unlock_extent_cached (tree, cur, cur + iosize -1 , &cached,GFP_NOFS ); cur = cur + iosize; - page_offset += iosize; + pg_offset += iosize;continue ; }/* the get_extent function already copied into the page */
@@ -2112,7 +2112,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,check_page_uptodate (tree, page);unlock_extent (tree, cur, cur + iosize -1 ,GFP_NOFS ); cur = cur + iosize; - page_offset += iosize; + pg_offset += iosize;continue ; }/* we have an inline extent but it didn't get marked up
@@ -2122,7 +2122,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,SetPageError (page);unlock_extent (tree, cur, cur + iosize -1 ,GFP_NOFS ); cur = cur + iosize; - page_offset += iosize; + pg_offset += iosize;continue ; }
@@ -2135,7 +2135,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,unsigned long pnr = (last_byte >>PAGE_CACHE_SHIFT ) +1 ; pnr -= page->index; ret = submit_extent_page(READ, tree, page, - sector, disk_io_size, page_offset, + sector, disk_io_size, pg_offset, bdev, bio, pnr, end_bio_extent_readpage, mirror_num, *bio_flags,
@@ -2146,7 +2146,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree,if (ret)SetPageError (page); cur = cur + iosize; - page_offset += iosize; + pg_offset += iosize; }if (!nr) {if (!PageError (page))
@@ -2751,7 +2751,7 @@ int extent_prepare_write(struct extent_io_tree *tree,u64 cur_end;struct extent_map *em;unsigned blocksize =1 << inode->i_blkbits; -size_t page_offset =0 ; +size_t pg_offset =0 ;size_t block_off_start;size_t block_off_end;int err =0 ;
@@ -2767,7 +2767,7 @@ int extent_prepare_write(struct extent_io_tree *tree,lock_extent (tree, page_start, page_end,GFP_NOFS );while (block_start <= block_end) { - em =get_extent (inode, page, page_offset, block_start, + em =get_extent (inode, page, pg_offset, block_start, block_end - block_start +1 ,1 );if (IS_ERR (em) || !em) goto err;
@@ -2811,7 +2811,7 @@ int extent_prepare_write(struct extent_io_tree *tree, block_start + iosize -1 , EXTENT_LOCKED, 0, NULL, NULL, GFP_NOFS); ret =submit_extent_page (READ , tree, page, - sector, iosize, page_offset, em->bdev, + sector, iosize, pg_offset, em->bdev,NULL ,1 , end_bio_extent_preparewrite,0 ,0 ,0 );
@@ -2828,7 +2828,7 @@ int extent_prepare_write(struct extent_io_tree *tree, &cached, GFP_NOFS); block_start = cur_end +1 ; } - page_offset = block_start & (PAGE_CACHE_SIZE -1 ); + pg_offset = block_start & (PAGE_CACHE_SIZE -1 );free_extent_map (em); }if (iocount) {
fs/btrfs/extent_io.h +1 -1
@@ -164,7 +164,7 @@ static inline struct extent_state *extent_state_next(struct extent_state *state)typedef struct extent_map *(get_extent_t )(struct inode *inode,struct page *page, -size_t page_offset, +size_t pg_offset,u64 start,u64 len,int create);
fs/btrfs/inode.c +12 -12
@@ -6980,7 +6980,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,struct btrfs_trans_handle *trans;struct btrfs_root *root =BTRFS_I (old_dir)->root;struct btrfs_root *dest =BTRFS_I (new_dir)->root; -struct inode *new_inode = new_dentry->d_inode; +struct inode *newinode = new_dentry->d_inode;struct inode *old_inode = old_dentry->d_inode;struct timespec ctime =CURRENT_TIME ;u64 index =0 ;
@@ -6995,18 +6995,18 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,return -EXDEV ;if (old_inode->i_ino ==BTRFS_EMPTY_SUBVOL_DIR_OBJECTID || - (new_inode && new_inode->i_ino ==BTRFS_FIRST_FREE_OBJECTID )) + (newinode && newinode->i_ino ==BTRFS_FIRST_FREE_OBJECTID ))return -ENOTEMPTY ; -if (S_ISDIR (old_inode->i_mode) && new_inode && - new_inode->i_size >BTRFS_EMPTY_DIR_SIZE ) +if (S_ISDIR (old_inode->i_mode) && newinode && + newinode->i_size >BTRFS_EMPTY_DIR_SIZE )return -ENOTEMPTY ;/* * we're using rename to replace one file with another. * and the replacement file is large. Start IO on it now so * we don't add too much work to the end of the transaction */ -if (new_inode &&S_ISREG (old_inode->i_mode) && new_inode->i_size && +if (newinode &&S_ISREG (old_inode->i_mode) && newinode->i_size && old_inode->i_size >BTRFS_ORDERED_OPERATIONS_FLUSH_LIMIT )filemap_flush (old_inode->i_mapping);
@@ -7060,7 +7060,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,* make sure the inode gets flushed if it is replacing * something. */ -if (new_inode && new_inode->i_size && +if (newinode && newinode->i_size && old_inode &&S_ISREG (old_inode->i_mode)) {btrfs_add_ordered_operation (trans, root, old_inode); }
@@ -7087,16 +7087,16 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, }BUG_ON (ret); -if (new_inode) { - new_inode->i_ctime =CURRENT_TIME ; -if (unlikely (new_inode->i_ino == +if (newinode) { + newinode->i_ctime =CURRENT_TIME ; +if (unlikely (newinode->i_ino ==BTRFS_EMPTY_SUBVOL_DIR_OBJECTID )) { - root_objectid =BTRFS_I (new_inode)->location.objectid; + root_objectid =BTRFS_I (newinode)->location.objectid; ret =btrfs_unlink_subvol (trans, dest, new_dir, root_objectid, new_dentry->d_name.name, new_dentry->d_name.len); -BUG_ON (new_inode->i_nlink ==0 ); +BUG_ON (newinode->i_nlink ==0 ); }else { ret = btrfs_unlink_inode(trans, dest, new_dir, new_dentry->d_inode,
@@ -7104,7 +7104,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, new_dentry->d_name.len); }BUG_ON (ret); -if (new_inode->i_nlink ==0 ) { +if (newinode->i_nlink ==0 ) { ret =btrfs_orphan_add (trans, new_dentry->d_inode);BUG_ON (ret); }
fs/btrfs/super.c +2 -2
@@ -739,7 +739,7 @@ static int btrfs_set_super(struct super_block *s, void *data)* for multiple device setup. Make sure to keep it in sync. */ static struct dentry *btrfs_mount (struct file_system_type *fs_type,int flags, -const char *dev_name,void *data) +const char *device_name,void *data) {struct block_device *bdev =NULL ;struct super_block *s;
@@ -762,7 +762,7 @@ static struct dentry *btrfs_mount(struct file_system_type *fs_type, int flags,if (error)return ERR_PTR (error); - error =btrfs_scan_one_device (dev_name, mode, fs_type, &fs_devices); + error =btrfs_scan_one_device (device_name, mode, fs_type, &fs_devices);if (error) goto error_free_subvol_name;
Signature · 1 line
1.7.5.rc3
PATCH 2/12 btrfs: remove nested duplicate variable declarations
In reply to David Sterba--- fs/btrfs/ctree.c | 1 - fs/btrfs/free-space-cache.c | 3 --- 2 files changed, 0 insertions(+), 4 deletions(-)
fs/btrfs/ctree.c +0 -1
@@ -3647,7 +3647,6 @@ setup_items_for_insert(struct btrfs_trans_handle *trans, ret =0 ;if (slot ==0 ) { -struct btrfs_disk_key disk_key;btrfs_cpu_key_to_disk (&disk_key, cpu_key); ret =fixup_low_keys (trans, root, path, &disk_key,1 ); }
fs/btrfs/free-space-cache.c +0 -3
@@ -1907,8 +1907,6 @@ u64 btrfs_alloc_from_cluster(struct btrfs_block_group_cache *block_group,while (1 ) {if (entry->bytes < bytes || (!entry->bitmap && entry->offset < min_start)) { -struct rb_node *node; - node =rb_next (&entry->offset_index);if (!node)break ;
@@ -1922,7 +1920,6 @@ u64 btrfs_alloc_from_cluster(struct btrfs_block_group_cache *block_group, cluster, entry, bytes, min_start);if (ret ==0 ) { -struct rb_node *node; node =rb_next (&entry->offset_index);if (!node)break ;
Signature · 1 line
1.7.5.rc3
PATCH 3/12 btrfs: fix dereference before check
In reply to David SterbaThe superblock's ->s_fs_info is properly set in btrfs_fill_super, after a call to open_ctree, which derefereces it before check. Although tree_root is set via btrfs_set_super, let's be defensive and leave the check in place.
--- fs/btrfs/disk-io.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
fs/btrfs/disk-io.c +3 -2
@@ -1611,7 +1611,7 @@ struct btrfs_root *open_ctree(struct super_block *sb,struct btrfs_root *csum_root =kzalloc (sizeof (struct btrfs_root ),GFP_NOFS );struct btrfs_root *tree_root =btrfs_sb (sb); -struct btrfs_fs_info *fs_info = tree_root->fs_info; +struct btrfs_fs_info *fs_info =NULL ;struct btrfs_root *chunk_root =kzalloc (sizeof (struct btrfs_root ),GFP_NOFS ); struct btrfs_root *dev_root = kzalloc(sizeof(struct btrfs_root),
@@ -1623,11 +1623,12 @@ struct btrfs_root *open_ctree(struct super_block *sb,struct btrfs_super_block *disk_super; -if (!extent_root || !tree_root || !fs_info || +if (!extent_root || !tree_root || !tree_root->fs_info || !chunk_root || !dev_root || !csum_root) { err = -ENOMEM ; goto fail; } + fs_info = tree_root->fs_info; ret =init_srcu_struct (&fs_info->subvol_srcu);if (ret) {
Signature · 1 line
1.7.5.rc3
PATCH 4/12 btrfs: unify checking of IS_ERR and null
In reply to David Sterbause IS_ERR_OR_NULL when possible, done by this coccinelle script:
@ match @
identifier id;
@@
(
- BUG_ON(IS_ERR(id) || !id);
+ BUG_ON(IS_ERR_OR_NULL(id));
|
- IS_ERR(id) || !id
+ IS_ERR_OR_NULL(id)
|
- !id || IS_ERR(id)
+ IS_ERR_OR_NULL(id)
)
--- fs/btrfs/acl.c | 2 +- fs/btrfs/extent_io.c | 12 ++++++------ fs/btrfs/file.c | 2 +- fs/btrfs/inode.c | 12 ++++++------ fs/btrfs/relocation.c | 2 +- fs/btrfs/tree-log.c | 4 ++-- 6 files changed, 17 insertions(+), 17 deletions(-)
fs/btrfs/acl.c +1 -1
@@ -287,7 +287,7 @@ int btrfs_acl_chmod(struct inode *inode)return 0 ; acl =btrfs_get_acl (inode,ACL_TYPE_ACCESS ); -if (IS_ERR (acl) || !acl) +if (IS_ERR_OR_NULL (acl))return PTR_ERR (acl); clone =posix_acl_clone (acl,GFP_KERNEL );
fs/btrfs/extent_io.c +6 -6
@@ -2056,7 +2056,7 @@ static int __extent_read_full_page(struct extent_io_tree *tree, } em =get_extent (inode, page, pg_offset, cur, end - cur +1 ,0 ); -if (IS_ERR (em) || !em) { +if (IS_ERR_OR_NULL (em)) {SetPageError (page);unlock_extent (tree, cur, end,GFP_NOFS );break ;
@@ -2341,7 +2341,7 @@ static int __extent_writepage(struct page *page, struct writeback_control *wbc, } em = epd->get_extent (inode, page, pg_offset, cur, end - cur +1 ,1 ); -if (IS_ERR (em) || !em) { +if (IS_ERR_OR_NULL (em)) {SetPageError (page);break ; }
@@ -2769,7 +2769,7 @@ int extent_prepare_write(struct extent_io_tree *tree,while (block_start <= block_end) { em =get_extent (inode, page, pg_offset, block_start, block_end - block_start +1 ,1 ); -if (IS_ERR (em) || !em) +if (IS_ERR_OR_NULL (em)) goto err; cur_end =min (block_end,extent_map_end (em) -1 );
@@ -2899,7 +2899,7 @@ int try_release_extent_mapping(struct extent_map_tree *map, len = end - start +1 ;write_lock (&map->lock); em =lookup_extent_mapping (map, start, len); -if (!em ||IS_ERR (em)) { +if (IS_ERR_OR_NULL (em)) {write_unlock (&map->lock);break ; }
@@ -2942,7 +2942,7 @@ sector_t extent_bmap(struct address_space *mapping, sector_t iblock, em =get_extent (inode,NULL ,0 , start, blksize,0 );unlock_extent_cached (&BTRFS_I (inode)->io_tree, start, start + blksize -1 , &cached_state,GFP_NOFS ); -if (!em ||IS_ERR (em)) +if (IS_ERR_OR_NULL (em))return 0 ;if (em->block_start >EXTENT_MAP_LAST_BYTE )
@@ -2976,7 +2976,7 @@ static struct extent_map *get_extent_skip_holes(struct inode *inode,break ; len = (len + sectorsize -1 ) & ~(sectorsize -1 ); em =get_extent (inode,NULL ,0 , offset, len,0 ); -if (!em ||IS_ERR (em)) +if (IS_ERR_OR_NULL (em))return em;/* if this isn't a hole return it */
fs/btrfs/file.c +1 -1
@@ -1375,7 +1375,7 @@ static long btrfs_fallocate(struct file *file, int mode,while (1 ) { em =btrfs_get_extent (inode,NULL ,0 , cur_offset, alloc_end - cur_offset,0 ); -BUG_ON (IS_ERR (em) || !em); +BUG_ON (IS_ERR_OR_NULL (em)); last_byte =min (extent_map_end (em), alloc_end); last_byte = (last_byte + mask) & ~mask; if (em->block_start == EXTENT_MAP_HOLE ||
fs/btrfs/inode.c +6 -6
@@ -1854,7 +1854,7 @@ static int btrfs_io_failed_hook(struct bio *failed_bio, }read_unlock (&em_tree->lock); -if (!em ||IS_ERR (em)) { +if (IS_ERR_OR_NULL (em)) {kfree (failrec);return -EIO ; }
@@ -3005,7 +3005,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, di =btrfs_lookup_dir_item (trans, root, path, dir->i_ino, name, name_len,-1 ); -BUG_ON (!di ||IS_ERR (di)); +BUG_ON (IS_ERR_OR_NULL (di)); leaf = path->nodes[0 ];btrfs_dir_item_key_to_cpu (leaf, di, &key);
@@ -3021,7 +3021,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,BUG_ON (ret != -ENOENT ); di =btrfs_search_dir_index_item (root, path, dir->i_ino, name, name_len); -BUG_ON (!di ||IS_ERR (di)); +BUG_ON (IS_ERR_OR_NULL (di)); leaf = path->nodes[0 ];btrfs_item_key_to_cpu (leaf, &key, path->slots[0 ]);
@@ -3031,7 +3031,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, di =btrfs_lookup_dir_index_item (trans, root, path, dir->i_ino, index, name, name_len,-1 ); -BUG_ON (!di ||IS_ERR (di)); +BUG_ON (IS_ERR_OR_NULL (di)); leaf = path->nodes[0 ];btrfs_dir_item_key_to_cpu (leaf, di, &key);
@@ -3634,7 +3634,7 @@ int btrfs_cont_expand(struct inode *inode, loff_t oldsize, loff_t size)while (1 ) { em =btrfs_get_extent (inode,NULL ,0 , cur_offset, block_end - cur_offset,0 ); -BUG_ON (IS_ERR (em) || !em); +BUG_ON (IS_ERR_OR_NULL (em)); last_byte =min (extent_map_end (em), block_end); last_byte = (last_byte + mask) & ~mask;if (!test_bit (EXTENT_FLAG_PREALLOC , &em->flags)) {
@@ -3840,7 +3840,7 @@ static int btrfs_inode_by_name(struct inode *dir, struct dentry *dentry,if (IS_ERR (di)) ret =PTR_ERR (di); -if (!di ||IS_ERR (di)) +if (IS_ERR_OR_NULL (di)) goto out_err;btrfs_dir_item_key_to_cpu (path->nodes[0 ], di, location);
fs/btrfs/relocation.c +1 -1
@@ -3220,7 +3220,7 @@ static int delete_block_group_cache(struct btrfs_fs_info *fs_info, key.offset =0 ; inode =btrfs_iget (fs_info->sb, &key, root,NULL ); -if (!inode ||IS_ERR (inode) ||is_bad_inode (inode)) { +if (IS_ERR_OR_NULL (inode) ||is_bad_inode (inode)) {if (inode && !IS_ERR (inode))iput (inode);return -ENOENT ;
fs/btrfs/tree-log.c +2 -2
@@ -1205,7 +1205,7 @@ static noinline int replay_one_name(struct btrfs_trans_handle *trans, }else {BUG (); } -if (!dst_di ||IS_ERR (dst_di)) { +if (IS_ERR_OR_NULL (dst_di)) {/* we need a sequence number to insert, so we only * do inserts for the BTRFS_DIR_INDEX_KEY types */
@@ -1426,7 +1426,7 @@ again: dir_key->offset, name, name_len, 0); } -if (!log_di ||IS_ERR (log_di)) { +if (IS_ERR_OR_NULL (log_di)) {btrfs_dir_item_key_to_cpu (eb, di, &location);btrfs_release_path (root, path);btrfs_release_path (log, log_path);
Signature · 1 line
1.7.5.rc3
PATCH 5/12 btrfs: remove useless mutex lock/unlock sequences
In reply to David Sterba--- fs/btrfs/extent-tree.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)
fs/btrfs/extent-tree.c +0 -6
@@ -756,8 +756,6 @@ again:btrfs_release_path (root->fs_info->extent_root, path); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node); goto again; }
@@ -2297,8 +2295,6 @@ again:atomic_inc (&ref->refs);spin_unlock (&delayed_refs->lock); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (ref);cond_resched ();
@@ -2363,8 +2359,6 @@ static noinline int check_delayed_ref(struct btrfs_trans_handle *trans,btrfs_release_path (root->fs_info->extent_root, path); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node);return -EAGAIN ; }
Signature · 1 line
1.7.5.rc3
Re: [PATCH 05/12] btrfs: remove useless mutex lock/unlock sequences
Quoted 10 lines · David Sterba
Signed-off-by David Sterba <[email protected]>--- fs/btrfs/extent-tree.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)fs/btrfs/extent-tree.c +0
-0
fs/btrfs/extent-tree.c again: · line 760
Quoted 7 lines
fs/btrfs/extent-tree.c +0
-2@@ -756,8 +756,6 @@ again:btrfs_release_path (root->fs_info->extent_root, path); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node); goto again;
This code tests whether the mutex_lock can be acquired, and when the mutex_lock can be taken, it try again.
So I think that it is not a meaningless code.
Thanks,
Tsutomu
Quoted 19 lines
fs/btrfs/extent-tree.c +0
-4}@@ -2297,8 +2295,6 @@ again:atomic_inc (&ref->refs);spin_unlock (&delayed_refs->lock); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (ref);cond_resched ();@@ -2363,8 +2359,6 @@ static noinline int check_delayed_ref(struct btrfs_trans_handle *trans,btrfs_release_path (root->fs_info->extent_root, path); -mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node);return -EAGAIN ; }
Re: [PATCH 05/12] btrfs: remove useless mutex lock/unlock sequences
Excerpts from Tsutomu Itoh's message of 2011-04-25 02:25:58 -0400:
Quoted 14 lines
Quoted 13 lines · David Sterba
Signed-off-by David Sterba <[email protected]>--- fs/btrfs/extent-tree.c | 6 ------ 1 files changed, 0 insertions(+), 6 deletions(-)fs/btrfs/extent-tree.c +0
-0@@ -756,8 +756,6 @@ again:btrfs_release_path (root->fs_info->extent_root, path);
Quoted 8 lines
fs/btrfs/extent-tree.c again: · line 760
Quoted 4 lines
fs/btrfs/extent-tree.c +0
-2-mutex_lock (&head->mutex); -mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node); goto again;This code tests whether the
mutex_lockcan be acquired, and when themutex_lockcan be taken, it try again.
So I think that it is not a meaningless code.
Correct, this code is waiting for the current lock holder to finish. It's not exactly pretty but it needs to stay.
-chris
Re: [PATCH 05/12] btrfs: remove useless mutex lock/unlock sequences
Quoted 6 lines · Chris Mason
Quoted 3 lines
This code tests whether the
mutex_lockcan be acquired, and when themutex_lockcan be taken, it try again.
So I think that it is not a meaningless code.Correct, this code is waiting for the current lock holder to finish. It's not exactly pretty but it needs to stay.
Ok, I think it deserves a comment, will add it and resend.
david
PATCH 1/1 btrfs: Document a mutex lock/unlock sequence
In reply to David Sterba--- fs/btrfs/extent-tree.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-)
fs/btrfs/extent-tree.c +12 -0
@@ -756,6 +756,10 @@ again:btrfs_release_path (path); +/* +* Mutex was contended, block until it's released and try +* again +*/ mutex_lock (&head->mutex);mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node);
@@ -2297,6 +2301,10 @@ again:atomic_inc (&ref->refs);spin_unlock (&delayed_refs->lock); +/* +* Mutex was contended, block until it's +* released and try again +*/ mutex_lock (&head->mutex);mutex_unlock (&head->mutex);
@@ -2363,6 +2371,10 @@ static noinline int check_delayed_ref(struct btrfs_trans_handle *trans,btrfs_release_path (path); +/* +* Mutex was contended, block until it's released and let +* caller try again +*/ mutex_lock (&head->mutex);mutex_unlock (&head->mutex);btrfs_put_delayed_ref (&head->node);
Signature · 1 line
1.7.5.rc3
PATCH 6/12 btrfs: make functions static when possible
In reply to David Sterba--- fs/btrfs/ctree.c | 4 ++-- fs/btrfs/extent-tree.c | 6 +++--- fs/btrfs/free-space-cache.c | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-)
fs/btrfs/ctree.c +2 -2
@@ -74,8 +74,8 @@ noinline void btrfs_set_path_blocking(struct btrfs_path *p)* retake all the spinlocks in the path. You can safely use NULL * for held */ -noinline void btrfs_clear_path_blocking(struct btrfs_path *p, -struct extent_buffer *held) +static noinline void btrfs_clear_path_blocking(struct btrfs_path *p, +struct extent_buffer *held) {int i;
fs/btrfs/extent-tree.c +3 -3
@@ -94,7 +94,7 @@ static int block_group_bits(struct btrfs_block_group_cache *cache, u64 bits)return (cache->flags & bits) == bits; } -void btrfs_get_block_group (struct btrfs_block_group_cache *cache) +static void btrfs_get_block_group (struct btrfs_block_group_cache *cache) {atomic_inc (&cache->count); }
@@ -3645,8 +3645,8 @@ static void block_rsv_add_bytes(struct btrfs_block_rsv *block_rsv,spin_unlock (&block_rsv->lock); } -void block_rsv_release_bytes (struct btrfs_block_rsv *block_rsv, -struct btrfs_block_rsv *dest,u64 num_bytes) +static void block_rsv_release_bytes (struct btrfs_block_rsv *block_rsv, +struct btrfs_block_rsv *dest,u64 num_bytes) {struct btrfs_space_info *space_info = block_rsv->space_info;
fs/btrfs/free-space-cache.c +2 -2
@@ -1455,8 +1455,8 @@ out:return ret; } -bool try_merge_free_space (struct btrfs_block_group_cache *block_group, -struct btrfs_free_space *info,bool update_stat) +static bool try_merge_free_space (struct btrfs_block_group_cache *block_group, +struct btrfs_free_space *info,bool update_stat) {struct btrfs_free_space *left_info;struct btrfs_free_space *right_info;
Signature · 1 line
1.7.5.rc3
PATCH 7/12 btrfs: drop unused argument from extent_io_tree_init
In reply to David Sterbaall callers pass GFP_NOFS, but the GFP mask argument is not used in the function; GFP_ATOMIC is passed to radix tree initialization and it's the only correct one, since we're using the preload/insert mechanism of radix tree.
Let's drop the gfp mask from btrfs function, this will not change behaviour.
--- fs/btrfs/disk-io.c | 9 ++++----- fs/btrfs/extent_io.c | 2 +- fs/btrfs/extent_io.h | 2 +- fs/btrfs/inode.c | 4 ++-- fs/btrfs/relocation.c | 2 +- fs/btrfs/transaction.c | 3 +-- 6 files changed, 10 insertions(+), 12 deletions(-)
fs/btrfs/disk-io.c +4 -5
@@ -1080,7 +1080,7 @@ static int __setup_root(u32 nodesize, u32 leafsize, u32 sectorsize, root->log_transid =0 ; root->last_log_commit =0 ;extent_io_tree_init (&root->dirty_log_pages, - fs_info->btree_inode->i_mapping,GFP_NOFS ); + fs_info->btree_inode->i_mapping);memset (&root->root_key,0 ,sizeof (root->root_key));memset (&root->root_item,0 ,sizeof (root->root_item));
@@ -1712,8 +1712,7 @@ struct btrfs_root *open_ctree(struct super_block *sb,RB_CLEAR_NODE (&BTRFS_I (fs_info->btree_inode)->rb_node);extent_io_tree_init (&BTRFS_I (fs_info->btree_inode)->io_tree, - fs_info->btree_inode->i_mapping, -GFP_NOFS ); + fs_info->btree_inode->i_mapping);extent_map_tree_init (&BTRFS_I (fs_info->btree_inode)->extent_tree,GFP_NOFS );
@@ -1729,9 +1728,9 @@ struct btrfs_root *open_ctree(struct super_block *sb, fs_info->block_group_cache_tree =RB_ROOT ;extent_io_tree_init (&fs_info->freed_extents[0 ], - fs_info->btree_inode->i_mapping,GFP_NOFS ); + fs_info->btree_inode->i_mapping);extent_io_tree_init (&fs_info->freed_extents[1 ], - fs_info->btree_inode->i_mapping,GFP_NOFS ); + fs_info->btree_inode->i_mapping); fs_info->pinned_extents = &fs_info->freed_extents[0 ]; fs_info->do_barriers =1 ;
fs/btrfs/extent_io.c +1 -1
@@ -101,7 +101,7 @@ void extent_io_exit(void) }void extent_io_tree_init (struct extent_io_tree *tree, -struct address_space *mapping,gfp_t mask) +struct address_space *mapping) { tree->state =RB_ROOT ;INIT_RADIX_TREE (&tree->buffer,GFP_ATOMIC );
fs/btrfs/extent_io.h +1 -1
@@ -169,7 +169,7 @@ typedef struct extent_map *(get_extent_t)(struct inode *inode, int create);void extent_io_tree_init (struct extent_io_tree *tree, -struct address_space *mapping,gfp_t mask); +struct address_space *mapping);int try_release_extent_mapping (struct extent_map_tree *map,struct extent_io_tree *tree,struct page *page,gfp_t mask);
fs/btrfs/inode.c +2 -2
@@ -6781,8 +6781,8 @@ struct inode *btrfs_alloc_inode(struct super_block *sb) inode = &ei->vfs_inode;extent_map_tree_init (&ei->extent_tree,GFP_NOFS ); -extent_io_tree_init (&ei->io_tree, &inode->i_data,GFP_NOFS ); -extent_io_tree_init (&ei->io_failure_tree, &inode->i_data,GFP_NOFS ); +extent_io_tree_init (&ei->io_tree, &inode->i_data); +extent_io_tree_init (&ei->io_failure_tree, &inode->i_data);mutex_init (&ei->log_mutex);btrfs_ordered_inode_tree_init (&ei->ordered_tree);INIT_LIST_HEAD (&ei->i_orphan);
fs/btrfs/relocation.c +1 -1
@@ -3935,7 +3935,7 @@ static struct reloc_control *alloc_reloc_control(void)INIT_LIST_HEAD (&rc->reloc_roots);backref_cache_init (&rc->backref_cache);mapping_tree_init (&rc->reloc_root_tree); -extent_io_tree_init (&rc->processed_blocks,NULL ,GFP_NOFS ); +extent_io_tree_init (&rc->processed_blocks,NULL );return rc; }
fs/btrfs/transaction.c +1 -2
@@ -80,8 +80,7 @@ static noinline int join_transaction(struct btrfs_root *root)INIT_LIST_HEAD (&cur_trans->pending_snapshots);list_add_tail (&cur_trans->list, &root->fs_info->trans_list);extent_io_tree_init (&cur_trans->dirty_pages, - root->fs_info->btree_inode->i_mapping, -GFP_NOFS ); + root->fs_info->btree_inode->i_mapping);spin_lock (&root->fs_info->new_trans_lock); root->fs_info->running_transaction = cur_trans;spin_unlock (&root->fs_info->new_trans_lock);
Signature · 1 line
1.7.5.rc3
PATCH 8/12 btrfs: drop unused parameter from extent_map_tree_init
In reply to David Sterbathe GFP flags are not stored anywhere and all allocations are done via alloc_extent_map(GFP_NOFS).
--- fs/btrfs/disk-io.c | 3 +-- fs/btrfs/extent_map.c | 3 +-- fs/btrfs/extent_map.h | 2 +- fs/btrfs/inode.c | 2 +- fs/btrfs/volumes.c | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-)
fs/btrfs/disk-io.c +1 -2
@@ -1713,8 +1713,7 @@ struct btrfs_root *open_ctree(struct super_block *sb,RB_CLEAR_NODE (&BTRFS_I (fs_info->btree_inode)->rb_node);extent_io_tree_init (&BTRFS_I (fs_info->btree_inode)->io_tree, fs_info->btree_inode->i_mapping); -extent_map_tree_init (&BTRFS_I (fs_info->btree_inode)->extent_tree, -GFP_NOFS ); +extent_map_tree_init (&BTRFS_I (fs_info->btree_inode)->extent_tree);BTRFS_I (fs_info->btree_inode)->io_tree.ops = &btree_extent_io_ops;
fs/btrfs/extent_map.c +1 -2
@@ -28,12 +28,11 @@ void extent_map_exit(void)/** * extent_map_tree_init - initialize extent map tree * @tree: tree to initialize -* @mask: flags for memory allocations during tree operations * * Initialize the extent tree @tree. Should be called for each new inode * or other user of the extent_map interface. */ -void extent_map_tree_init (struct extent_map_tree *tree,gfp_t mask) +void extent_map_tree_init (struct extent_map_tree *tree) { tree->map =RB_ROOT ;rwlock_init (&tree->lock);
fs/btrfs/extent_map.h +1 -1
@@ -49,7 +49,7 @@ static inline u64 extent_map_block_end(struct extent_map *em)return em->block_start + em->block_len; } -void extent_map_tree_init (struct extent_map_tree *tree,gfp_t mask); +void extent_map_tree_init (struct extent_map_tree *tree);struct extent_map *lookup_extent_mapping (struct extent_map_tree *tree,u64 start,u64 len); int add_extent_mapping(struct extent_map_tree *tree,
fs/btrfs/inode.c +1 -1
@@ -6780,7 +6780,7 @@ struct inode *btrfs_alloc_inode(struct super_block *sb) ei->force_compress =BTRFS_COMPRESS_NONE ; inode = &ei->vfs_inode; -extent_map_tree_init (&ei->extent_tree,GFP_NOFS ); +extent_map_tree_init (&ei->extent_tree);extent_io_tree_init (&ei->io_tree, &inode->i_data);extent_io_tree_init (&ei->io_failure_tree, &inode->i_data);mutex_init (&ei->log_mutex);
fs/btrfs/volumes.c +1 -1
@@ -2839,7 +2839,7 @@ int btrfs_chunk_readonly(struct btrfs_root *root, u64 chunk_offset)void btrfs_mapping_init (struct btrfs_mapping_tree *tree) { -extent_map_tree_init (&tree->map_tree,GFP_NOFS ); +extent_map_tree_init (&tree->map_tree); }void btrfs_mapping_tree_free (struct btrfs_mapping_tree *tree)
Signature · 1 line
1.7.5.rc3
PATCH 9/12 btrfs: drop gfp parameter from alloc_extent_map
In reply to David Sterbapass GFP_NOFS directly to kmem_cache_alloc
--- fs/btrfs/disk-io.c | 2 +- fs/btrfs/extent-tree.c | 2 +- fs/btrfs/extent_map.c | 5 ++--- fs/btrfs/extent_map.h | 2 +- fs/btrfs/file.c | 4 ++-- fs/btrfs/inode.c | 12 ++++++------ fs/btrfs/relocation.c | 2 +- fs/btrfs/volumes.c | 4 ++-- 8 files changed, 16 insertions(+), 17 deletions(-)
fs/btrfs/disk-io.c +1 -1
@@ -154,7 +154,7 @@ static struct extent_map *btree_get_extent(struct inode *inode, }read_unlock (&em_tree->lock); - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em) { em =ERR_PTR (-ENOMEM ); goto out;
fs/btrfs/extent-tree.c +1 -1
@@ -6688,7 +6688,7 @@ static noinline int relocate_data_extent(struct inode *reloc_inode,u64 start = extent_key->objectid - offset;u64 end = start + extent_key->offset -1 ; - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();BUG_ON (!em); em->start = start;
fs/btrfs/extent_map.c +2 -3
@@ -40,16 +40,15 @@ void extent_map_tree_init(struct extent_map_tree *tree)/** * alloc_extent_map - allocate new extent map structure -* @mask: memory allocation flags * * Allocate a new extent_map structure. The new structure is * returned with a reference count of one and needs to be * freed using free_extent_map() */ -struct extent_map *alloc_extent_map (gfp_t mask) +struct extent_map *alloc_extent_map (void ) {struct extent_map *em; - em =kmem_cache_alloc (extent_map_cache, mask); + em =kmem_cache_alloc (extent_map_cache,GFP_NOFS );if (!em)return NULL ; em->in_tree =0 ;
fs/btrfs/extent_map.h +1 -1
@@ -56,7 +56,7 @@ int add_extent_mapping(struct extent_map_tree *tree, struct extent_map *em);int remove_extent_mapping (struct extent_map_tree *tree,struct extent_map *em); -struct extent_map *alloc_extent_map (gfp_t mask); +struct extent_map *alloc_extent_map (void );void free_extent_map (struct extent_map *em);int __init extent_map_init (void );void extent_map_exit (void );
fs/btrfs/file.c +2 -2
@@ -191,9 +191,9 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, }while (1 ) {if (!split) - split =alloc_extent_map (GFP_NOFS ); + split =alloc_extent_map ();if (!split2) - split2 =alloc_extent_map (GFP_NOFS ); + split2 =alloc_extent_map ();BUG_ON (!split || !split2);write_lock (&em_tree->lock);
fs/btrfs/inode.c +6 -6
@@ -649,7 +649,7 @@ retry: async_extent->start + async_extent->ram_size - 1, 0); - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();BUG_ON (!em); em->start = async_extent->start; em->len = async_extent->ram_size;
@@ -826,7 +826,7 @@ static noinline int cow_file_range(struct inode *inode, (u64)-1, &ins, 1);BUG_ON (ret); - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();BUG_ON (!em); em->start = start; em->orig_start = em->start;
@@ -1176,7 +1176,7 @@ out_check:struct extent_map *em;struct extent_map_tree *em_tree; em_tree = &BTRFS_I (inode)->extent_tree; - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();BUG_ON (!em); em->start = cur_offset; em->orig_start = em->start;
@@ -5064,7 +5064,7 @@ again:else goto out; } - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em) { err = -ENOMEM ; goto out;
@@ -5377,7 +5377,7 @@ struct extent_map *btrfs_get_extent_fiemap(struct inode *inode, struct page *pagu64 hole_start = start;u64 hole_len = len; - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em) { err = -ENOMEM ; goto out;
@@ -5478,7 +5478,7 @@ static struct extent_map *btrfs_new_extent_direct(struct inode *inode, }if (!em) { - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em) { em =ERR_PTR (-ENOMEM ); goto out;
fs/btrfs/relocation.c +1 -1
@@ -2870,7 +2870,7 @@ int setup_extent_mapping(struct inode *inode, u64 start, u64 end,struct extent_map *em;int ret =0 ; - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em)return -ENOMEM ;
fs/btrfs/volumes.c +2 -2
@@ -2599,7 +2599,7 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,trace_btrfs_chunk_alloc (info->chunk_root, map, start, *num_bytes); - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em) { ret = -ENOMEM ; goto error;
@@ -3489,7 +3489,7 @@ static int read_one_chunk(struct btrfs_root *root, struct btrfs_key *key,free_extent_map (em); } - em =alloc_extent_map (GFP_NOFS ); + em =alloc_extent_map ();if (!em)return -ENOMEM ; num_stripes =btrfs_chunk_num_stripes (leaf, chunk);
Signature · 1 line
1.7.5.rc3
PATCH 10/12 btrfs: drop gfp parameter from find_extent_buffer
In reply to David Sterbapass GFP_NOFS directly to kmem_cache_alloc
--- fs/btrfs/disk-io.c | 4 ++-- fs/btrfs/extent_io.c | 3 +-- fs/btrfs/extent_io.h | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-)
fs/btrfs/disk-io.c +2 -2
@@ -963,7 +963,7 @@ struct extent_buffer *btrfs_find_tree_block(struct btrfs_root *root,struct inode *btree_inode = root->fs_info->btree_inode;struct extent_buffer *eb; eb =find_extent_buffer (&BTRFS_I (btree_inode)->io_tree, - bytenr, blocksize,GFP_NOFS ); + bytenr, blocksize);return eb; }
@@ -2696,7 +2696,7 @@ int btree_lock_page_hook(struct page *page) goto out; len = page->private >>2 ; - eb =find_extent_buffer (io_tree, bytenr, len,GFP_NOFS ); + eb =find_extent_buffer (io_tree, bytenr, len);if (!eb) goto out;
fs/btrfs/extent_io.c +1 -2
@@ -3377,8 +3377,7 @@ free_eb: }struct extent_buffer *find_extent_buffer (struct extent_io_tree *tree, -u64 start,unsigned long len, -gfp_t mask) +u64 start,unsigned long len) {struct extent_buffer *eb;
fs/btrfs/extent_io.h +1 -2
@@ -263,8 +263,7 @@ struct extent_buffer *alloc_extent_buffer(struct extent_io_tree *tree,struct page *page0, gfp_t mask);struct extent_buffer *find_extent_buffer (struct extent_io_tree *tree, -u64 start,unsigned long len, -gfp_t mask); +u64 start,unsigned long len);void free_extent_buffer (struct extent_buffer *eb); int read_extent_buffer_pages(struct extent_io_tree *tree, struct extent_buffer *eb, u64 start, int wait,
Signature · 1 line
1.7.5.rc3
PATCH 11/12 btrfs: drop gfp parameter from alloc_extent_buffer
In reply to David Sterbapass GFP_NOFS directly to kmem_cache_alloc
--- fs/btrfs/disk-io.c | 6 +++--- fs/btrfs/extent_io.c | 7 +++---- fs/btrfs/extent_io.h | 3 +-- 3 files changed, 7 insertions(+), 9 deletions(-)
fs/btrfs/disk-io.c +3 -3
@@ -380,7 +380,7 @@ static int csum_dirty_buffer(struct btrfs_root *root, struct page *page) len = page->private >>2 ;WARN_ON (len ==0 ); - eb =alloc_extent_buffer (tree, start, len, page,GFP_NOFS ); + eb =alloc_extent_buffer (tree, start, len, page);if (eb ==NULL ) {WARN_ON (1 ); goto out;
@@ -525,7 +525,7 @@ static int btree_readpage_end_io_hook(struct page *page, u64 start, u64 end, len = page->private >>2 ;WARN_ON (len ==0 ); - eb =alloc_extent_buffer (tree, start, len, page,GFP_NOFS ); + eb =alloc_extent_buffer (tree, start, len, page);if (eb ==NULL ) { ret = -EIO ; goto out;
@@ -974,7 +974,7 @@ struct extent_buffer *btrfs_find_create_tree_block(struct btrfs_root *root,struct extent_buffer *eb; eb =alloc_extent_buffer (&BTRFS_I (btree_inode)->io_tree, - bytenr, blocksize,NULL ,GFP_NOFS ); + bytenr, blocksize,NULL );return eb; }
fs/btrfs/extent_io.c +3 -4
@@ -3266,8 +3266,7 @@ static inline void btrfs_release_extent_buffer(struct extent_buffer *eb)struct extent_buffer *alloc_extent_buffer (struct extent_io_tree *tree,u64 start,unsigned long len, -struct page *page0, -gfp_t mask) +struct page *page0) {unsigned long num_pages =num_extent_pages (start, len);unsigned long i;
@@ -3288,7 +3287,7 @@ struct extent_buffer *alloc_extent_buffer(struct extent_io_tree *tree, }rcu_read_unlock (); - eb =__alloc_extent_buffer (tree, start, len, mask); + eb =__alloc_extent_buffer (tree, start, len,GFP_NOFS );if (!eb)return NULL ;
@@ -3305,7 +3304,7 @@ struct extent_buffer *alloc_extent_buffer(struct extent_io_tree *tree, i =0 ; }for (; i < num_pages; i++, index++) { - p =find_or_create_page (mapping, index, mask | __GFP_HIGHMEM); + p =find_or_create_page (mapping, index,GFP_NOFS | __GFP_HIGHMEM);if (!p) {WARN_ON (1 ); goto free_eb;
fs/btrfs/extent_io.h +1 -2
@@ -260,8 +260,7 @@ void set_page_extent_mapped(struct page *page);struct extent_buffer *alloc_extent_buffer (struct extent_io_tree *tree,u64 start,unsigned long len, -struct page *page0, -gfp_t mask); +struct page *page0);struct extent_buffer *find_extent_buffer (struct extent_io_tree *tree,u64 start,unsigned long len);void free_extent_buffer (struct extent_buffer *eb);
Signature · 1 line
1.7.5.rc3
PATCH 12/12 btrfs: drop unused parameter from btrfs_release_path
In reply to David Sterbaparameter tree root it's not used since commit 5f39d397dfbe140a14edecd4e73c34ce23c4f9ee ("Btrfs: Create extent_buffer interface for large blocksizes")
--- fs/btrfs/ctree.c | 28 ++++++------ fs/btrfs/ctree.h | 2 +- fs/btrfs/dir-item.c | 2 +- fs/btrfs/extent-tree.c | 44 ++++++++++---------- fs/btrfs/file-item.c | 12 +++--- fs/btrfs/file.c | 12 +++--- fs/btrfs/free-space-cache.c | 14 +++--- fs/btrfs/inode.c | 34 +++++++------- fs/btrfs/ioctl.c | 12 +++--- fs/btrfs/relocation.c | 30 +++++++------- fs/btrfs/root-tree.c | 10 ++-- fs/btrfs/tree-defrag.c | 2 +- fs/btrfs/tree-log.c | 98 +++++++++++++++++++++--------------------- fs/btrfs/volumes.c | 16 ++++---- fs/btrfs/xattr.c | 4 +- 15 files changed, 160 insertions(+), 160 deletions(-)
fs/btrfs/ctree.c +14 -14
@@ -107,7 +107,7 @@ void btrfs_free_path(struct btrfs_path *p) {if (!p)return ; -btrfs_release_path (NULL , p); +btrfs_release_path (p);kmem_cache_free (btrfs_path_cachep, p); }
@@ -117,7 +117,7 @@ void btrfs_free_path(struct btrfs_path *p)* * It is safe to call this on paths that no locks or extent buffers held. */ -noinline void btrfs_release_path(struct btrfs_root *root, struct btrfs_path *p) +noinline void btrfs_release_path(struct btrfs_path *p) {int i;
@@ -1328,7 +1328,7 @@ static noinline int reada_for_balance(struct btrfs_root *root, ret = -EAGAIN ;/* release the whole path */ -btrfs_release_path (root, path); +btrfs_release_path (path);/* read the blocks */ if (block1)
@@ -1475,7 +1475,7 @@ read_block_for_search(struct btrfs_trans_handle *trans,return 0 ; }free_extent_buffer (tmp); -btrfs_release_path (NULL , p); +btrfs_release_path (p);return -EIO ; } }
@@ -1494,7 +1494,7 @@ read_block_for_search(struct btrfs_trans_handle *trans,if (p->reada)reada_for_search (root, p, level, slot, key->objectid); -btrfs_release_path (NULL , p); +btrfs_release_path (p); ret = -EAGAIN ; tmp =read_tree_block (root, blocknr, blocksize,0 );
@@ -1563,7 +1563,7 @@ setup_nodes_for_search(struct btrfs_trans_handle *trans, } b = p->nodes[level];if (!b) { -btrfs_release_path (NULL , p); +btrfs_release_path (p); goto again; }BUG_ON (btrfs_header_nritems (b) ==1 );
@@ -1753,7 +1753,7 @@ done:if (!p->leave_spinning)btrfs_set_path_blocking (p);if (ret <0 ) -btrfs_release_path (root, p); +btrfs_release_path (p);return ret; }
@@ -3026,7 +3026,7 @@ static noinline int setup_leaf_for_split(struct btrfs_trans_handle *trans, struct btrfs_file_extent_item); extent_len =btrfs_file_extent_num_bytes (leaf, fi); } -btrfs_release_path (root, path); +btrfs_release_path (path); path->keep_locks =1 ; path->search_for_split =1 ;
@@ -3948,7 +3948,7 @@ int btrfs_prev_leaf(struct btrfs_root *root, struct btrfs_path *path)else return 1 ; -btrfs_release_path (root, path); +btrfs_release_path (path); ret =btrfs_search_slot (NULL , root, &key, path,0 ,0 );if (ret <0 )return ret;
@@ -4072,7 +4072,7 @@ find_next_key: sret =btrfs_find_next_key (root, path, min_key, level, cache_only, min_trans);if (sret ==0 ) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; }else { goto out;
@@ -4151,7 +4151,7 @@ next:btrfs_node_key_to_cpu (c, &cur_key, slot); orig_lowest = path->lowest_level; -btrfs_release_path (root, path); +btrfs_release_path (path); path->lowest_level = level; ret =btrfs_search_slot (NULL , root, &cur_key, path,0 ,0 );
@@ -4228,7 +4228,7 @@ int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path) again: level =1 ; next =NULL ; -btrfs_release_path (root, path); +btrfs_release_path (path); path->keep_locks =1 ;
@@ -4284,7 +4284,7 @@ again: goto again;if (ret <0 ) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto done; }
@@ -4323,7 +4323,7 @@ again: goto again;if (ret <0 ) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto done; }
fs/btrfs/ctree.h +1 -1
@@ -2290,7 +2290,7 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans, struct btrfs_root *root, struct extent_buffer *parent, int start_slot, int cache_only, u64 *last_ret, struct btrfs_key *progress); -void btrfs_release_path (struct btrfs_root *root,struct btrfs_path *p); +void btrfs_release_path (struct btrfs_path *p);struct btrfs_path *btrfs_alloc_path (void );void btrfs_free_path (struct btrfs_path *p);void btrfs_set_path_blocking (struct btrfs_path *p);
fs/btrfs/dir-item.c +1 -1
@@ -172,7 +172,7 @@ second_insert: ret =0 ; goto out_free; } -btrfs_release_path (root, path); +btrfs_release_path (path);btrfs_set_key_type (&key,BTRFS_DIR_INDEX_KEY ); key.offset = index;
fs/btrfs/extent-tree.c +22 -22
174 lines not on this page · raw message
fs/btrfs/file-item.c +6 -6
@@ -193,7 +193,7 @@ static int __btrfs_lookup_bio_sums(struct btrfs_root *root,u32 item_size;if (item) -btrfs_release_path (root, path); +btrfs_release_path (path); item =btrfs_lookup_csum (NULL , root->fs_info->csum_root, path, disk_bytenr,0 );if (IS_ERR (item)) {
@@ -213,7 +213,7 @@ static int __btrfs_lookup_bio_sums(struct btrfs_root *root, (unsigned long long)offset); } item =NULL ; -btrfs_release_path (root, path); +btrfs_release_path (path); goto found; } btrfs_item_key_to_cpu(path->nodes[0], &found_key,
@@ -631,7 +631,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,if (key.offset < bytenr)break ; } -btrfs_release_path (root, path); +btrfs_release_path (path); } out:btrfs_free_path (path);
@@ -722,7 +722,7 @@ again:* at this point, we know the tree has an item, but it isn't big * enough yet to put our csum in. Grow it */ -btrfs_release_path (root, path); +btrfs_release_path (path); ret =btrfs_search_slot (trans, root, &file_key, path, csum_size,1 );if (ret <0 )
@@ -766,7 +766,7 @@ again: } insert: -btrfs_release_path (root, path); +btrfs_release_path (path); csum_offset =0 ;if (found_next) {u64 tmp = total_bytes + root->sectorsize;
@@ -850,7 +850,7 @@ next_sector: }btrfs_mark_buffer_dirty (path->nodes[0 ]);if (total_bytes < sums->len) { -btrfs_release_path (root, path); +btrfs_release_path (path);cond_resched (); goto again; }
fs/btrfs/file.c +6 -6
@@ -376,7 +376,7 @@ next_slot: search_start =max (key.offset, start);if (recow) { -btrfs_release_path (root, path); +btrfs_release_path (path);continue ; }
@@ -393,7 +393,7 @@ next_slot: ret =btrfs_duplicate_item (trans, root, path, &new_key);if (ret == -EAGAIN ) { -btrfs_release_path (root, path); +btrfs_release_path (path);continue ; }if (ret <0 )
@@ -516,7 +516,7 @@ next_slot: del_nr =0 ; del_slot =0 ; -btrfs_release_path (root, path); +btrfs_release_path (path);continue ; }
@@ -681,7 +681,7 @@ again: new_key.offset = split; ret =btrfs_duplicate_item (trans, root, path, &new_key);if (ret == -EAGAIN ) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; }BUG_ON (ret <0 );
@@ -721,7 +721,7 @@ again: inode->i_ino, bytenr, orig_offset, &other_start, &other_end)) {if (recow) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; } extent_end = other_end;
@@ -738,7 +738,7 @@ again: inode->i_ino, bytenr, orig_offset, &other_start, &other_end)) {if (recow) { -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; } key.offset = other_start;
fs/btrfs/free-space-cache.c +7 -7
@@ -61,7 +61,7 @@ struct inode *lookup_free_space_inode(struct btrfs_root *root,if (ret <0 )return ERR_PTR (ret);if (ret >0 ) { -btrfs_release_path (root, path); +btrfs_release_path (path);return ERR_PTR (-ENOENT ); }
@@ -70,7 +70,7 @@ struct inode *lookup_free_space_inode(struct btrfs_root *root, struct btrfs_free_space_header);btrfs_free_space_key (leaf, header, &disk_key);btrfs_disk_key_to_cpu (&location, &disk_key); -btrfs_release_path (root, path); +btrfs_release_path (path); inode =btrfs_iget (root->fs_info->sb, &location, root,NULL );if (!inode)
@@ -134,7 +134,7 @@ int create_free_space_inode(struct btrfs_root *root,btrfs_set_inode_block_group (leaf, inode_item, block_group->key.objectid);btrfs_mark_buffer_dirty (leaf); -btrfs_release_path (root, path); +btrfs_release_path (path); key.objectid =BTRFS_FREE_SPACE_OBJECTID ; key.offset = block_group->key.objectid;
@@ -143,7 +143,7 @@ int create_free_space_inode(struct btrfs_root *root, ret =btrfs_insert_empty_item (trans, root, path, &key,sizeof (struct btrfs_free_space_header ));if (ret <0 ) { -btrfs_release_path (root, path); +btrfs_release_path (path);return ret; } leaf = path->nodes[0 ];
@@ -152,7 +152,7 @@ int create_free_space_inode(struct btrfs_root *root,memset_extent_buffer (leaf,0 , (unsigned long )header,sizeof (*header));btrfs_set_free_space_key (leaf, header, &disk_key);btrfs_mark_buffer_dirty (leaf); -btrfs_release_path (root, path); +btrfs_release_path (path);return 0 ; }
@@ -822,7 +822,7 @@ int btrfs_write_out_cache(struct btrfs_root *root,EXTENT_DIRTY |EXTENT_DELALLOC |EXTENT_DO_ACCOUNTING ,0 ,0 ,NULL , GFP_NOFS); -btrfs_release_path (root, path); +btrfs_release_path (path); goto out_free; } }
@@ -832,7 +832,7 @@ int btrfs_write_out_cache(struct btrfs_root *root,btrfs_set_free_space_bitmaps (leaf, header, bitmaps);btrfs_set_free_space_generation (leaf, header, trans->transid);btrfs_mark_buffer_dirty (leaf); -btrfs_release_path (root, path); +btrfs_release_path (path); ret =1 ;
fs/btrfs/inode.c +17 -17
@@ -1163,7 +1163,7 @@ out_check: goto next_slot; } -btrfs_release_path (root, path); +btrfs_release_path (path);if (cow_start != (u64)-1 ) { ret = cow_file_range(inode, locked_page, cow_start, found_key.offset - 1, page_started,
@@ -1221,7 +1221,7 @@ out_check:if (cur_offset > end)break ; } -btrfs_release_path (root, path); +btrfs_release_path (path);if (cur_offset <= end && cow_start == (u64)-1 ) cow_start = cur_offset;
@@ -2345,7 +2345,7 @@ int btrfs_orphan_cleanup(struct btrfs_root *root)break ;/* release the path since we're done with it */ -btrfs_release_path (root, path); +btrfs_release_path (path);/* * this is where we are basically btrfs_lookup, without the
@@ -2711,7 +2711,7 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans, ret =btrfs_delete_one_dir_name (trans, root, path, di);if (ret) goto err; -btrfs_release_path (root, path); +btrfs_release_path (path); ret = btrfs_del_inode_ref(trans, root, name, name_len, inode->i_ino,
@@ -2734,7 +2734,7 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans, goto err; } ret =btrfs_delete_one_dir_name (trans, root, path, di); -btrfs_release_path (root, path); +btrfs_release_path (path); ret =btrfs_del_inode_ref_in_log (trans, root, name, name_len, inode, dir->i_ino);
@@ -2861,7 +2861,7 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, }else { check_link =0 ; } -btrfs_release_path (root, path); +btrfs_release_path (path); ret =btrfs_lookup_inode (trans, root, path, &BTRFS_I (inode)->location,0 );
@@ -2875,7 +2875,7 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, }else { check_link =0 ; } -btrfs_release_path (root, path); +btrfs_release_path (path);if (ret ==0 &&S_ISREG (inode->i_mode)) { ret = btrfs_lookup_file_extent(trans, root, path,
@@ -2887,7 +2887,7 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,BUG_ON (ret ==0 );if (check_path_shared (root, path)) goto out; -btrfs_release_path (root, path); +btrfs_release_path (path); }if (!check_link) {
@@ -2908,7 +2908,7 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir, err =0 ; goto out; } -btrfs_release_path (root, path); +btrfs_release_path (path); ref = btrfs_lookup_inode_ref(trans, root, path, dentry->d_name.name, dentry->d_name.len,
@@ -2921,7 +2921,7 @@ static struct btrfs_trans_handle *__unlink_start_trans(struct inode *dir,if (check_path_shared (root, path)) goto out; index =btrfs_inode_ref_index (path->nodes[0 ], ref); -btrfs_release_path (root, path); +btrfs_release_path (path); di =btrfs_lookup_dir_index_item (trans, root, path, dir->i_ino, index, dentry->d_name.name, dentry->d_name.len,0 );
@@ -3012,7 +3012,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,WARN_ON (key.type !=BTRFS_ROOT_ITEM_KEY || key.objectid != objectid); ret =btrfs_delete_one_dir_name (trans, root, path, di);BUG_ON (ret); -btrfs_release_path (root, path); +btrfs_release_path (path); ret = btrfs_del_root_ref(trans, root->fs_info->tree_root, objectid, root->root_key.objectid,
@@ -3025,7 +3025,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, leaf = path->nodes[0 ];btrfs_item_key_to_cpu (leaf, &key, path->slots[0 ]); -btrfs_release_path (root, path); +btrfs_release_path (path); index = key.offset; }
@@ -3038,7 +3038,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,WARN_ON (key.type !=BTRFS_ROOT_ITEM_KEY || key.objectid != objectid); ret =btrfs_delete_one_dir_name (trans, root, path, di);BUG_ON (ret); -btrfs_release_path (root, path); +btrfs_release_path (path);btrfs_i_size_write (dir, dir->i_size - name_len *2 ); dir->i_mtime = dir->i_ctime =CURRENT_TIME ;
@@ -3476,7 +3476,7 @@ delete:BUG_ON (ret); pending_del_nr =0 ; } -btrfs_release_path (root, path); +btrfs_release_path (path); goto search_again; }else { path->slots[0 ]--;
@@ -3898,7 +3898,7 @@ static int fixup_tree_root_location(struct btrfs_root *root,if (ret) goto out; -btrfs_release_path (root->fs_info->tree_root, path); +btrfs_release_path (path); new_root =btrfs_read_fs_root_no_name (root->fs_info, location);if (IS_ERR (new_root)) {
@@ -5218,7 +5218,7 @@ again:kunmap (page);free_extent_map (em); em =NULL ; -btrfs_release_path (root, path); +btrfs_release_path (path); trans =btrfs_join_transaction (root,1 );if (IS_ERR (trans))return ERR_CAST (trans);
@@ -5244,7 +5244,7 @@ not_found_em: em->block_start =EXTENT_MAP_HOLE ;set_bit (EXTENT_FLAG_VACANCY , &em->flags); insert: -btrfs_release_path (root, path); +btrfs_release_path (path);if (em->start > start ||extent_map_end (em) <= start) { printk(KERN_ERR "Btrfs: bad extent! em: [%llu %llu] passed " "[%llu %llu]\n", (unsigned long long)em->start,
fs/btrfs/ioctl.c +6 -6
@@ -1396,7 +1396,7 @@ static noinline int search_ioctl(struct inode *inode, } ret =copy_to_sk (root, path, &key, sk, args->buf, &sk_offset, &num_found); -btrfs_release_path (root, path); +btrfs_release_path (path);if (ret || num_found >= sk->nr_items)break ;
@@ -1503,7 +1503,7 @@ static noinline int btrfs_search_path_in_tree(struct btrfs_fs_info *info,if (key.offset ==BTRFS_FIRST_FREE_OBJECTID )break ; -btrfs_release_path (root, path); +btrfs_release_path (path); key.objectid = key.offset; key.offset = (u64)-1 ; dirid = key.objectid;
@@ -1982,7 +1982,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, datal =btrfs_file_extent_ram_bytes (leaf, extent); } -btrfs_release_path (root, path); +btrfs_release_path (path);if (key.offset + datal <= off || key.offset >= off+len)
@@ -2092,7 +2092,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, }btrfs_mark_buffer_dirty (leaf); -btrfs_release_path (root, path); +btrfs_release_path (path); inode->i_mtime = inode->i_ctime =CURRENT_TIME ;
@@ -2113,12 +2113,12 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd,btrfs_end_transaction (trans, root); } next: -btrfs_release_path (root, path); +btrfs_release_path (path); key.offset++; } ret =0 ; out: -btrfs_release_path (root, path); +btrfs_release_path (path);unlock_extent (&BTRFS_I (src)->io_tree, off, off+len,GFP_NOFS ); out_unlock:mutex_unlock (&src->i_mutex);
fs/btrfs/relocation.c +15 -15
@@ -961,7 +961,7 @@ again: lower = upper; upper =NULL ; } -btrfs_release_path (root, path2); +btrfs_release_path (path2); next:if (ptr < end) { ptr +=btrfs_extent_inline_ref_size (key.type);
@@ -974,7 +974,7 @@ next:if (ptr >= end) path1->slots[0 ]++; } -btrfs_release_path (rc->extent_root, path1); +btrfs_release_path (path1); cur->checked =1 ;WARN_ON (exist);
@@ -1749,7 +1749,7 @@ again:btrfs_node_key_to_cpu (path->nodes[level], &key, path->slots[level]); -btrfs_release_path (src, path); +btrfs_release_path (path); path->lowest_level = level; ret =btrfs_search_slot (trans, src, &key, path,0 ,1 );
@@ -2496,7 +2496,7 @@ static int do_relocation(struct btrfs_trans_handle *trans, path->locks[upper->level] =0 ; slot = path->slots[upper->level]; -btrfs_release_path (NULL , path); +btrfs_release_path (path); }else { ret =btrfs_bin_search (upper->eb, key, upper->level, &slot);
@@ -2737,7 +2737,7 @@ static int relocate_tree_block(struct btrfs_trans_handle *trans, }else { path->lowest_level = node->level; ret =btrfs_search_slot (trans, root, key, path,0 ,1 ); -btrfs_release_path (root, path); +btrfs_release_path (path);if (ret >0 ) ret =0 ; }
@@ -3119,7 +3119,7 @@ static int add_tree_block(struct reloc_control *rc,#endif } -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path);BUG_ON (level ==-1 );
@@ -3505,7 +3505,7 @@ int add_data_references(struct reloc_control *rc, } path->slots[0 ]++; } -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path);if (err)free_block_list (blocks);return err;
@@ -3568,7 +3568,7 @@ next: EXTENT_DIRTY);if (ret ==0 && start <= key.objectid) { -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path); rc->search_start = end +1 ; }else { rc->search_start = key.objectid + key.offset;
@@ -3576,7 +3576,7 @@ next:return 0 ; } } -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path);return ret; }
@@ -3713,7 +3713,7 @@ restart: flags =BTRFS_EXTENT_FLAG_DATA ;if (path_change) { -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path); path->search_commit_root =1 ; path->skip_locking =1 ;
@@ -3736,7 +3736,7 @@ restart: (flags & BTRFS_EXTENT_FLAG_DATA)) { ret = add_data_references(rc, &key, path, &blocks); } else { -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path); ret =0 ; }if (ret <0 ) {
@@ -3799,7 +3799,7 @@ restart: } } -btrfs_release_path (rc->extent_root, path); +btrfs_release_path (path);clear_extent_bits (&rc->processed_blocks,0 , (u64)-1 ,EXTENT_DIRTY ,GFP_NOFS );
@@ -3867,7 +3867,7 @@ static int __insert_orphan_inode(struct btrfs_trans_handle *trans,btrfs_set_inode_flags (leaf, item,BTRFS_INODE_NOCOMPRESS |BTRFS_INODE_PREALLOC );btrfs_mark_buffer_dirty (leaf); -btrfs_release_path (root, path); +btrfs_release_path (path); out:btrfs_free_path (path);return ret;
@@ -4109,7 +4109,7 @@ int btrfs_recover_relocation(struct btrfs_root *root) } leaf = path->nodes[0 ];btrfs_item_key_to_cpu (leaf, &key, path->slots[0 ]); -btrfs_release_path (root->fs_info->tree_root, path); +btrfs_release_path (path);if (key.objectid !=BTRFS_TREE_RELOC_OBJECTID || key.type !=BTRFS_ROOT_ITEM_KEY )
@@ -4141,7 +4141,7 @@ int btrfs_recover_relocation(struct btrfs_root *root) key.offset--; } -btrfs_release_path (root->fs_info->tree_root, path); +btrfs_release_path (path);if (list_empty (&reloc_roots)) goto out;
fs/btrfs/root-tree.c +5 -5
@@ -57,7 +57,7 @@ again:btrfs_item_key_to_cpu (path->nodes[0 ], &search_key, path->slots[0 ]);if (search_key.type !=BTRFS_ROOT_ITEM_KEY ) { search_key.offset++; -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; } ret =0 ;
@@ -230,7 +230,7 @@ again:memcpy (&found_key, &key,sizeof (key)); key.offset++; -btrfs_release_path (root, path); +btrfs_release_path (path); dead_root =btrfs_read_fs_root_no_radix (root->fs_info->tree_root, &found_key);
@@ -292,7 +292,7 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root) }btrfs_item_key_to_cpu (leaf, &key, path->slots[0 ]); -btrfs_release_path (tree_root, path); +btrfs_release_path (path);if (key.objectid !=BTRFS_ORPHAN_OBJECTID || key.type !=BTRFS_ORPHAN_ITEM_KEY )
@@ -390,7 +390,7 @@ again: err = -ENOENT ;if (key.type ==BTRFS_ROOT_BACKREF_KEY ) { -btrfs_release_path (tree_root, path); +btrfs_release_path (path); key.objectid = ref_id; key.type =BTRFS_ROOT_REF_KEY ; key.offset = root_id;
@@ -463,7 +463,7 @@ again:btrfs_mark_buffer_dirty (leaf);if (key.type ==BTRFS_ROOT_BACKREF_KEY ) { -btrfs_release_path (tree_root, path); +btrfs_release_path (path); key.objectid = ref_id; key.type =BTRFS_ROOT_REF_KEY ; key.offset = root_id;
fs/btrfs/tree-defrag.c +1 -1
@@ -97,7 +97,7 @@ int btrfs_defrag_leaves(struct btrfs_trans_handle *trans, ret =0 ; goto out; } -btrfs_release_path (root, path); +btrfs_release_path (path); wret =btrfs_search_slot (trans, root, &key, path,0 ,1 );if (wret <0 ) {
fs/btrfs/tree-log.c +49 -49
345 lines not on this page · raw message
fs/btrfs/volumes.c +8 -8
@@ -1465,7 +1465,7 @@ next_slot: goto error; leaf = path->nodes[0 ];btrfs_item_key_to_cpu (leaf, &key, path->slots[0 ]); -btrfs_release_path (root, path); +btrfs_release_path (path);continue ; }
@@ -1937,7 +1937,7 @@ again: chunk =btrfs_item_ptr (leaf, path->slots[0 ], struct btrfs_chunk); chunk_type =btrfs_chunk_type (leaf, chunk); -btrfs_release_path (chunk_root, path); +btrfs_release_path (path);if (chunk_type &BTRFS_BLOCK_GROUP_SYSTEM ) { ret = btrfs_relocate_chunk(chunk_root, chunk_tree,
@@ -2055,7 +2055,7 @@ int btrfs_balance(struct btrfs_root *dev_root)if (found_key.offset ==0 )break ; -btrfs_release_path (chunk_root, path); +btrfs_release_path (path); ret = btrfs_relocate_chunk(chunk_root, chunk_root->root_key.objectid, found_key.objectid,
@@ -2127,7 +2127,7 @@ again: goto done;if (ret) { ret =0 ; -btrfs_release_path (root, path); +btrfs_release_path (path);break ; }
@@ -2136,7 +2136,7 @@ again:btrfs_item_key_to_cpu (l, &key, path->slots[0 ]);if (key.objectid != device->devid) { -btrfs_release_path (root, path); +btrfs_release_path (path);break ; }
@@ -2144,14 +2144,14 @@ again: length =btrfs_dev_extent_length (l, dev_extent);if (key.offset + length <= new_size) { -btrfs_release_path (root, path); +btrfs_release_path (path);break ; } chunk_tree =btrfs_dev_extent_chunk_tree (l, dev_extent); chunk_objectid =btrfs_dev_extent_chunk_objectid (l, dev_extent); chunk_offset =btrfs_dev_extent_chunk_offset (l, dev_extent); -btrfs_release_path (root, path); +btrfs_release_path (path); ret =btrfs_relocate_chunk (root, chunk_tree, chunk_objectid, chunk_offset);
@@ -3803,7 +3803,7 @@ again: }if (key.objectid ==BTRFS_DEV_ITEMS_OBJECTID ) { key.objectid =0 ; -btrfs_release_path (root, path); +btrfs_release_path (path); goto again; } ret =0 ;
fs/btrfs/xattr.c +2 -2
@@ -120,13 +120,13 @@ static int do_setxattr(struct btrfs_trans_handle *trans, ret =btrfs_delete_one_dir_name (trans, root, path, di);BUG_ON (ret); -btrfs_release_path (root, path); +btrfs_release_path (path);/* if we don't have a value then we are removing the xattr */ if (!value) goto out; }else { -btrfs_release_path (root, path); +btrfs_release_path (path);if (flags &XATTR_REPLACE ) {/* we couldn't find the attr to replace */
Signature · 1 line
1.7.5.rc3
Hi,
this patch series, with the updated mutex patch, can be pulled from
git://repo.or.cz/linux-2.6/btrfs-unstable.git #cleanups
David Sterba (12):
btrfs: rename variables clashing with global function names
btrfs: remove nested duplicate variable declarations
btrfs: fix dereference before check
btrfs: unify checking of IS_ERR and null
btrfs: make functions static when possible
btrfs: drop unused argument from extent_io_tree_init
btrfs: drop unused parameter from extent_map_tree_init
btrfs: drop gfp parameter from alloc_extent_map
btrfs: drop gfp parameter from find_extent_buffer
btrfs: drop gfp parameter from alloc_extent_buffer
btrfs: drop unused parameter from btrfs_release_path
btrfs: Document a mutex lock/unlock sequence
fs/btrfs/acl.c | 2 +- fs/btrfs/compression.c | 42 +++++++++--------- fs/btrfs/compression.h | 2 +- fs/btrfs/ctree.c | 33 +++++++------- fs/btrfs/ctree.h | 4 +- fs/btrfs/dir-item.c | 2 +- fs/btrfs/disk-io.c | 31 ++++++------- fs/btrfs/extent-tree.c | 64 ++++++++++++++++----------- fs/btrfs/extent_io.c | 52 ++++++++++----------- fs/btrfs/extent_io.h | 10 ++--- fs/btrfs/extent_map.c | 8 +-- fs/btrfs/extent_map.h | 4 +- fs/btrfs/file-item.c | 12 +++--- fs/btrfs/file.c | 18 ++++---- fs/btrfs/free-space-cache.c | 21 ++++----- fs/btrfs/inode.c | 88 ++++++++++++++++++------------------ fs/btrfs/ioctl.c | 12 +++--- fs/btrfs/relocation.c | 36 ++++++++-------- fs/btrfs/root-tree.c | 10 ++-- fs/btrfs/super.c | 4 +- fs/btrfs/transaction.c | 3 +- fs/btrfs/tree-defrag.c | 2 +- fs/btrfs/tree-log.c | 102 +++++++++++++++++++++--------------------- fs/btrfs/volumes.c | 22 +++++----- fs/btrfs/xattr.c | 4 +- 25 files changed, 294 insertions(+), 294 deletions(-)