From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> The first patch removes some BUG_ONs() when walking backref tree. These BUG_ON()s can only be triggered because of ENOMEM, and the caller has checked the return value about it. So we just return directly rather than trigger BUG_ON() when out of memory happens. The second patch just makes some functions'' return value be void, Since these functions always return 0. Wang Shilong (2): Btrfs: remove some BUG_ONs() when walking backref tree Btrfs: make some functions return type be void in backref.c fs/btrfs/backref.c | 28 ++++++++++++---------------- 1 files changed, 12 insertions(+), 16 deletions(-) -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Wang Shilong
2013-Apr-10 11:22 UTC
[PATCH 1/2] Btrfs: remove some BUG_ONs() when walking backref tree
From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> The only error return value of __add_prelim_ref() is -ENOMEM, just return errors rather than trigger BUG_ON(). Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com> --- fs/btrfs/backref.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index bd605c8..dc200f6 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -582,7 +582,8 @@ static int __add_delayed_refs(struct btrfs_delayed_ref_head *head, u64 seq, default: WARN_ON(1); } - BUG_ON(ret); + if (ret) + return ret; } return 0; @@ -680,7 +681,8 @@ static int __add_inline_refs(struct btrfs_fs_info *fs_info, default: WARN_ON(1); } - BUG_ON(ret); + if (ret) + return ret; ptr += btrfs_extent_inline_ref_size(type); } @@ -762,7 +764,9 @@ static int __add_keyed_refs(struct btrfs_fs_info *fs_info, default: WARN_ON(1); } - BUG_ON(ret); + if (ret) + return ret; + } return ret; -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Wang Shilong
2013-Apr-10 11:22 UTC
[PATCH 2/2] Btrfs: make some functions return type be void in backref.c
From: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
__merge_refs() and __add_missing_keys() always return 0, it is unnecessary
for the caller to check the return value.
Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
---
fs/btrfs/backref.c | 18 +++++-------------
1 files changed, 5 insertions(+), 13 deletions(-)
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c
index dc200f6..3521206 100644
--- a/fs/btrfs/backref.c
+++ b/fs/btrfs/backref.c
@@ -404,7 +404,7 @@ static inline int ref_for_same_block(struct __prelim_ref
*ref1,
/*
* read tree blocks and add keys where required.
*/
-static int __add_missing_keys(struct btrfs_fs_info *fs_info,
+static void __add_missing_keys(struct btrfs_fs_info *fs_info,
struct list_head *head)
{
struct list_head *pos;
@@ -430,7 +430,6 @@ static int __add_missing_keys(struct btrfs_fs_info *fs_info,
btrfs_tree_read_unlock(eb);
free_extent_buffer(eb);
}
- return 0;
}
/*
@@ -443,7 +442,7 @@ static int __add_missing_keys(struct btrfs_fs_info *fs_info,
* having a parent).
* mode = 2: merge identical parents
*/
-static int __merge_refs(struct list_head *head, int mode)
+static void __merge_refs(struct list_head *head, int mode)
{
struct list_head *pos1;
@@ -489,7 +488,6 @@ static int __merge_refs(struct list_head *head, int mode)
}
}
- return 0;
}
/*
@@ -880,22 +878,16 @@ again:
list_splice_init(&prefs_delayed, &prefs);
- ret = __add_missing_keys(fs_info, &prefs);
- if (ret)
- goto out;
+ __add_missing_keys(fs_info, &prefs);
- ret = __merge_refs(&prefs, 1);
- if (ret)
- goto out;
+ __merge_refs(&prefs, 1);
ret = __resolve_indirect_refs(fs_info, search_commit_root, time_seq,
&prefs, extent_item_pos);
if (ret)
goto out;
- ret = __merge_refs(&prefs, 2);
- if (ret)
- goto out;
+ __merge_refs(&prefs, 2);
while (!list_empty(&prefs)) {
ref = list_first_entry(&prefs, struct __prelim_ref, list);
--
1.7.7.6
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs"
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2013-Apr-10 14:52 UTC
Re: [PATCH 1/2] Btrfs: remove some BUG_ONs() when walking backref tree
On Wed, Apr 10, 2013 at 07:22:50PM +0800, Wang Shilong wrote:> From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> > > The only error return value of __add_prelim_ref() is -ENOMEM, > just return errors rather than trigger BUG_ON(). > > Signed-off-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>Reviewed-by: David Sterba <dsterba@suse.cz> -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
David Sterba
2013-Apr-10 15:01 UTC
Re: [PATCH 2/2] Btrfs: make some functions return type be void in backref.c
On Wed, Apr 10, 2013 at 07:22:51PM +0800, Wang Shilong wrote:> From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> > > __merge_refs() and __add_missing_keys() always return 0, it is unnecessary > for the caller to check the return value.ok for __merge_refs, nak for __add_missing_keys: there''s unhandled BUG_ON from read_tree_block 422 eb = read_tree_block(fs_info->tree_root, ref->wanted_disk_byte, 423 fs_info->tree_root->leafsize, 0); 424 BUG_ON(!eb); this should become a proper error handling someday and use the int return value. Keep the callers aware of that. david -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Wang Shilong
2013-Apr-11 07:14 UTC
Re: [PATCH 2/2] Btrfs: make some functions return type be void in backref.c
Hello, David Patch V2 has been sent out,many thanks for your review ^_^ Thanks, Wang> On Wed, Apr 10, 2013 at 07:22:51PM +0800, Wang Shilong wrote: >> From: Wang Shilong <wangsl-fnst@cn.fujitsu.com> >> >> __merge_refs() and __add_missing_keys() always return 0, it is unnecessary >> for the caller to check the return value. > > ok for __merge_refs, nak for __add_missing_keys: there''s unhandled > BUG_ON from read_tree_block > > 422 eb = read_tree_block(fs_info->tree_root, ref->wanted_disk_byte, > 423 fs_info->tree_root->leafsize, 0); > 424 BUG_ON(!eb); > > this should become a proper error handling someday and use the int return > value. Keep the callers aware of that. > > david > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > >-- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html