diff options
Diffstat (limited to 'drivers/md/dm-raid1.c')
-rw-r--r-- | drivers/md/dm-raid1.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 5903e492bb34..79eab1071ec2 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
@@ -326,9 +326,8 @@ static void recovery_complete(int read_err, unsigned long write_err, | |||
326 | dm_rh_recovery_end(reg, !(read_err || write_err)); | 326 | dm_rh_recovery_end(reg, !(read_err || write_err)); |
327 | } | 327 | } |
328 | 328 | ||
329 | static int recover(struct mirror_set *ms, struct dm_region *reg) | 329 | static void recover(struct mirror_set *ms, struct dm_region *reg) |
330 | { | 330 | { |
331 | int r; | ||
332 | unsigned i; | 331 | unsigned i; |
333 | struct dm_io_region from, to[DM_KCOPYD_MAX_REGIONS], *dest; | 332 | struct dm_io_region from, to[DM_KCOPYD_MAX_REGIONS], *dest; |
334 | struct mirror *m; | 333 | struct mirror *m; |
@@ -367,10 +366,8 @@ static int recover(struct mirror_set *ms, struct dm_region *reg) | |||
367 | if (!errors_handled(ms)) | 366 | if (!errors_handled(ms)) |
368 | set_bit(DM_KCOPYD_IGNORE_ERROR, &flags); | 367 | set_bit(DM_KCOPYD_IGNORE_ERROR, &flags); |
369 | 368 | ||
370 | r = dm_kcopyd_copy(ms->kcopyd_client, &from, ms->nr_mirrors - 1, to, | 369 | dm_kcopyd_copy(ms->kcopyd_client, &from, ms->nr_mirrors - 1, to, |
371 | flags, recovery_complete, reg); | 370 | flags, recovery_complete, reg); |
372 | |||
373 | return r; | ||
374 | } | 371 | } |
375 | 372 | ||
376 | static void reset_ms_flags(struct mirror_set *ms) | 373 | static void reset_ms_flags(struct mirror_set *ms) |
@@ -388,7 +385,6 @@ static void do_recovery(struct mirror_set *ms) | |||
388 | { | 385 | { |
389 | struct dm_region *reg; | 386 | struct dm_region *reg; |
390 | struct dm_dirty_log *log = dm_rh_dirty_log(ms->rh); | 387 | struct dm_dirty_log *log = dm_rh_dirty_log(ms->rh); |
391 | int r; | ||
392 | 388 | ||
393 | /* | 389 | /* |
394 | * Start quiescing some regions. | 390 | * Start quiescing some regions. |
@@ -398,11 +394,8 @@ static void do_recovery(struct mirror_set *ms) | |||
398 | /* | 394 | /* |
399 | * Copy any already quiesced regions. | 395 | * Copy any already quiesced regions. |
400 | */ | 396 | */ |
401 | while ((reg = dm_rh_recovery_start(ms->rh))) { | 397 | while ((reg = dm_rh_recovery_start(ms->rh))) |
402 | r = recover(ms, reg); | 398 | recover(ms, reg); |
403 | if (r) | ||
404 | dm_rh_recovery_end(reg, 0); | ||
405 | } | ||
406 | 399 | ||
407 | /* | 400 | /* |
408 | * Update the in sync flag. | 401 | * Update the in sync flag. |