[Patch v1 3/4] md/raid5: STIPE_HANDLE bit in handle_strype_dirtying()

From
<hidden>
Date
2015-08-07 20:21:03
md/raid5: STIPE_HANDLE bit in handle_strype_dirtying() 

Set STRIPE_HANDLE flag only if it is required.

Signed-off-by: Markus Stockhausen <redacted>
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 6a7e638..f8630c1 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3584,7 +3584,6 @@ static void handle_stripe_dirtying(struct r5conf *conf,
 	}
 	pr_debug("for sector %llu, rmw=%d rcw=%d\n",
 		(unsigned long long)sh->sector, rmw, rcw);
-	set_bit(STRIPE_HANDLE, &sh->state);
 	if ((rmw < rcw || (rmw == rcw && conf->rmw_level == PARITY_ENABLE_RMW)) && rmw > 0) {
 		/* prefer read-modify-write, but need to get some data */
 		if (conf->mddev->queue)
@@ -3646,8 +3645,10 @@ static void handle_stripe_dirtying(struct r5conf *conf,
 	}
 
 	if (rcw > disks && rmw > disks &&
-	    !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state))
+	    !test_bit(STRIPE_PREREAD_ACTIVE, &sh->state)) {
 		set_bit(STRIPE_DELAYED, &sh->state);
+		set_bit(STRIPE_HANDLE, &sh->state);
+	}
 
 	/* now if nothing is locked, and if we have enough data,
 	 * we can start a write request

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help