diff options
author | Zhao Lei <zhaolei@cn.fujitsu.com> | 2015-07-21 12:22:30 +0800 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-08-09 07:07:11 -0700 |
commit | 6fa96d72f79a15579da2bb63c65cafb210915b48 (patch) | |
tree | 0be37a5ff841728c3668a90fb0825bcfdd1f7951 /fs/btrfs | |
parent | f2f66a2f886383fb76aca8ecc1bcc116c5d1f6fe (diff) | |
download | linux-6fa96d72f79a15579da2bb63c65cafb210915b48.tar.bz2 |
btrfs: Free checksum list on scrub_extent() fail
When scrub_extent() failed, we need to free previois created
checksum list.
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/scrub.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index d99cdb11d4d9..6987de6b1ed8 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -2924,10 +2924,12 @@ again: extent_dev, flags, generation, extent_mirror_num); + + scrub_free_csums(sctx); + if (ret) goto out; - scrub_free_csums(sctx); if (extent_logical + extent_len < key.objectid + bytes) { logic_start += map->stripe_len; @@ -3262,10 +3264,12 @@ again: extent_physical, extent_dev, flags, generation, extent_mirror_num, extent_logical - logical + physical); + + scrub_free_csums(sctx); + if (ret) goto out; - scrub_free_csums(sctx); if (extent_logical + extent_len < key.objectid + bytes) { if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK) { |