Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 156204
b: refs/heads/master
c: 64bd660
h: refs/heads/master
v: v3
  • Loading branch information
NeilBrown committed Aug 3, 2009
1 parent f974f8e commit acc6b0f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e516402c0d4fc02be4af9fa8c18954d4f9deb44e
refs/heads/master: 64bd660b51b2da92e99a5e97349f6558349f11c5
11 changes: 10 additions & 1 deletion trunk/drivers/md/raid5.c
Original file line number Diff line number Diff line change
Expand Up @@ -3999,6 +3999,9 @@ static inline sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *ski
return 0;
}

/* Allow raid5_quiesce to complete */
wait_event(conf->wait_for_overlap, conf->quiesce != 2);

if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery))
return reshape_request(mddev, sector_nr, skipped);

Expand Down Expand Up @@ -5104,12 +5107,18 @@ static void raid5_quiesce(mddev_t *mddev, int state)

case 1: /* stop all writes */
spin_lock_irq(&conf->device_lock);
conf->quiesce = 1;
/* '2' tells resync/reshape to pause so that all
* active stripes can drain
*/
conf->quiesce = 2;
wait_event_lock_irq(conf->wait_for_stripe,
atomic_read(&conf->active_stripes) == 0 &&
atomic_read(&conf->active_aligned_reads) == 0,
conf->device_lock, /* nothing */);
conf->quiesce = 1;
spin_unlock_irq(&conf->device_lock);
/* allow reshape to continue */
wake_up(&conf->wait_for_overlap);
break;

case 0: /* re-enable writes */
Expand Down

0 comments on commit acc6b0f

Please sign in to comment.