diff options
author | Zhao Lei <zhaolei@cn.fujitsu.com> | 2015-07-21 06:22:30 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-08-09 16:07:11 +0200 |
commit | 6fa96d72f79a15579da2bb63c65cafb210915b48 (patch) | |
tree | 0be37a5ff841728c3668a90fb0825bcfdd1f7951 | |
parent | btrfs: Check cancel and pause in interval of scrub operation (diff) | |
download | linux-6fa96d72f79a15579da2bb63c65cafb210915b48.tar.xz linux-6fa96d72f79a15579da2bb63c65cafb210915b48.zip |
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>
-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) { |