summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorMiao Xie <miaox@cn.fujitsu.com>2014-09-12 12:43:57 +0200
committerChris Mason <clm@fb.com>2014-09-17 22:38:54 +0200
commit6c387ab20db15f2bd448f7c508e2638101b16ea1 (patch)
tree52b1bbe1cb2d847f10e7b790ea96d73cc968cbdc /fs/btrfs/extent_io.c
parentBtrfs: do file data check by sub-bio's self (diff)
downloadlinux-6c387ab20db15f2bd448f7c508e2638101b16ea1.tar.xz
linux-6c387ab20db15f2bd448f7c508e2638101b16ea1.zip
Btrfs: fix missing error handler if submiting re-read bio fails
We forgot to free failure record and bio after submitting re-read bio failed, fix it. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index ad04f85ac45d..dc501a9ca227 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2348,6 +2348,11 @@ static int bio_readpage_error(struct bio *failed_bio, u64 phy_offset,
ret = tree->ops->submit_bio_hook(inode, read_mode, bio,
failrec->this_mirror,
failrec->bio_flags, 0);
+ if (ret) {
+ free_io_failure(inode, failrec, 0);
+ bio_put(bio);
+ }
+
return ret;
}