diff options
| author | NeilBrown <neilb@suse.de> | 2010-12-08 23:59:01 -0500 |
|---|---|---|
| committer | NeilBrown <neilb@suse.de> | 2010-12-08 23:59:01 -0500 |
| commit | 2b74e12e567feb4163e32815bce0be57489e73b9 (patch) | |
| tree | 2eef8f977209a7e5ff88b4366bd72ccf59c8a987 | |
| parent | be20e6c67b6c6024c19094d3447f144d118733b0 (diff) | |
md: remove handling of flush_pending in md_submit_flush_data
None of the functions called between setting flush_pending to 1, and
atomic_dec_and_test can change flush_pending, or will anything
running in any other thread (as ->flush_bio is not NULL). So the
atomic_dec_and_test will always succeed.
So remove the atomic_sec and the atomic_dec_and_test.
Signed-off-by: NeilBrown <neilb@suse.de>
| -rw-r--r-- | drivers/md/md.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 84c46a16192..83b6cb3e702 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
| @@ -404,8 +404,6 @@ static void md_submit_flush_data(struct work_struct *ws) | |||
| 404 | mddev_t *mddev = container_of(ws, mddev_t, flush_work); | 404 | mddev_t *mddev = container_of(ws, mddev_t, flush_work); |
| 405 | struct bio *bio = mddev->flush_bio; | 405 | struct bio *bio = mddev->flush_bio; |
| 406 | 406 | ||
| 407 | atomic_set(&mddev->flush_pending, 1); | ||
| 408 | |||
| 409 | if (bio->bi_size == 0) | 407 | if (bio->bi_size == 0) |
| 410 | /* an empty barrier - all done */ | 408 | /* an empty barrier - all done */ |
| 411 | bio_endio(bio, 0); | 409 | bio_endio(bio, 0); |
| @@ -414,10 +412,9 @@ static void md_submit_flush_data(struct work_struct *ws) | |||
| 414 | if (mddev->pers->make_request(mddev, bio)) | 412 | if (mddev->pers->make_request(mddev, bio)) |
| 415 | generic_make_request(bio); | 413 | generic_make_request(bio); |
| 416 | } | 414 | } |
| 417 | if (atomic_dec_and_test(&mddev->flush_pending)) { | 415 | |
| 418 | mddev->flush_bio = NULL; | 416 | mddev->flush_bio = NULL; |
| 419 | wake_up(&mddev->sb_wait); | 417 | wake_up(&mddev->sb_wait); |
| 420 | } | ||
| 421 | } | 418 | } |
| 422 | 419 | ||
| 423 | void md_flush_request(mddev_t *mddev, struct bio *bio) | 420 | void md_flush_request(mddev_t *mddev, struct bio *bio) |
