Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 41fe75f6 authored by majianpeng's avatar majianpeng Committed by NeilBrown
Browse files

md/raid5: use atomic_dec_return() instead of atomic_dec() and atomic_read().



Signed-off-by: default avatarmajianpeng <majianpeng@gmail.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 43437ecd
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -208,11 +208,10 @@ static void __release_stripe(struct r5conf *conf, struct stripe_head *sh)
			md_wakeup_thread(conf->mddev->thread);
		} else {
			BUG_ON(stripe_operations_active(sh));
			if (test_and_clear_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) {
				atomic_dec(&conf->preread_active_stripes);
				if (atomic_read(&conf->preread_active_stripes) < IO_THRESHOLD)
			if (test_and_clear_bit(STRIPE_PREREAD_ACTIVE, &sh->state))
				if (atomic_dec_return(&conf->preread_active_stripes)
				    < IO_THRESHOLD)
					md_wakeup_thread(conf->mddev->thread);
			}
			atomic_dec(&conf->active_stripes);
			if (!test_bit(STRIPE_EXPANDING, &sh->state)) {
				list_add_tail(&sh->lru, &conf->inactive_list);