Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 263705
b: refs/heads/master
c: 079fa16
h: refs/heads/master
i:
  263703: 24ed5e9
v: v3
  • Loading branch information
NeilBrown committed Sep 10, 2011
1 parent 4113ea9 commit 15f4e85
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 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: 19d5f834d6aff7efb1c9353523865c5bce869470
refs/heads/master: 079fa166a2874985ae58b2e21e26e1cbc91127d4
14 changes: 9 additions & 5 deletions trunk/drivers/md/raid1.c
Original file line number Diff line number Diff line change
Expand Up @@ -1099,12 +1099,11 @@ static int make_request(mddev_t *mddev, struct bio * bio)
bio_list_add(&conf->pending_bio_list, mbio);
spin_unlock_irqrestore(&conf->device_lock, flags);
}
r1_bio_write_done(r1_bio);

/* In case raid1d snuck in to freeze_array */
wake_up(&conf->wait_barrier);

/* Mustn't call r1_bio_write_done before this next test,
* as it could result in the bio being freed.
*/
if (sectors_handled < (bio->bi_size >> 9)) {
r1_bio_write_done(r1_bio);
/* We need another r1_bio. It has already been counted
* in bio->bi_phys_segments
*/
Expand All @@ -1117,6 +1116,11 @@ static int make_request(mddev_t *mddev, struct bio * bio)
goto retry_write;
}

r1_bio_write_done(r1_bio);

/* In case raid1d snuck in to freeze_array */
wake_up(&conf->wait_barrier);

if (do_sync || !bitmap || !plugged)
md_wakeup_thread(mddev->thread);

Expand Down
13 changes: 8 additions & 5 deletions trunk/drivers/md/raid10.c
Original file line number Diff line number Diff line change
Expand Up @@ -1132,13 +1132,12 @@ static int make_request(mddev_t *mddev, struct bio * bio)
spin_unlock_irqrestore(&conf->device_lock, flags);
}

/* Remove the bias on 'remaining' */
one_write_done(r10_bio);

/* In case raid10d snuck in to freeze_array */
wake_up(&conf->wait_barrier);
/* Don't remove the bias on 'remaining' (one_write_done) until
* after checking if we need to go around again.
*/

if (sectors_handled < (bio->bi_size >> 9)) {
one_write_done(r10_bio);
/* We need another r10_bio. It has already been counted
* in bio->bi_phys_segments.
*/
Expand All @@ -1152,6 +1151,10 @@ static int make_request(mddev_t *mddev, struct bio * bio)
r10_bio->state = 0;
goto retry_write;
}
one_write_done(r10_bio);

/* In case raid10d snuck in to freeze_array */
wake_up(&conf->wait_barrier);

if (do_sync || !mddev->bitmap || !plugged)
md_wakeup_thread(mddev->thread);
Expand Down

0 comments on commit 15f4e85

Please sign in to comment.