summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-raid1.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm-raid1.c')
-rw-r--r--drivers/md/dm-raid1.c17
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
329static int recover(struct mirror_set *ms, struct dm_region *reg) 329static 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
376static void reset_ms_flags(struct mirror_set *ms) 373static 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.