diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/scrub.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 572306036477..6702896cdb8f 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c | |||
@@ -1151,11 +1151,6 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check) | |||
1151 | return ret; | 1151 | return ret; |
1152 | } | 1152 | } |
1153 | 1153 | ||
1154 | if (sctx->is_dev_replace && !is_metadata && !have_csum) { | ||
1155 | sblocks_for_recheck = NULL; | ||
1156 | goto nodatasum_case; | ||
1157 | } | ||
1158 | |||
1159 | /* | 1154 | /* |
1160 | * read all mirrors one after the other. This includes to | 1155 | * read all mirrors one after the other. This includes to |
1161 | * re-read the extent or metadata block that failed (that was | 1156 | * re-read the extent or metadata block that failed (that was |
@@ -1268,13 +1263,19 @@ static int scrub_handle_errored_block(struct scrub_block *sblock_to_check) | |||
1268 | goto out; | 1263 | goto out; |
1269 | } | 1264 | } |
1270 | 1265 | ||
1271 | if (!is_metadata && !have_csum) { | 1266 | /* |
1267 | * NOTE: Even for nodatasum case, it's still possible that it's a | ||
1268 | * compressed data extent, thus scrub_fixup_nodatasum(), which write | ||
1269 | * inode page cache onto disk, could cause serious data corruption. | ||
1270 | * | ||
1271 | * So here we could only read from disk, and hope our recovery could | ||
1272 | * reach disk before the newer write. | ||
1273 | */ | ||
1274 | if (0 && !is_metadata && !have_csum) { | ||
1272 | struct scrub_fixup_nodatasum *fixup_nodatasum; | 1275 | struct scrub_fixup_nodatasum *fixup_nodatasum; |
1273 | 1276 | ||
1274 | WARN_ON(sctx->is_dev_replace); | 1277 | WARN_ON(sctx->is_dev_replace); |
1275 | 1278 | ||
1276 | nodatasum_case: | ||
1277 | |||
1278 | /* | 1279 | /* |
1279 | * !is_metadata and !have_csum, this means that the data | 1280 | * !is_metadata and !have_csum, this means that the data |
1280 | * might not be COWed, that it might be modified | 1281 | * might not be COWed, that it might be modified |