# \[Patch v1 3/4\] md/raid5: STIPE\_HANDLE bit in handle\_strype\_dirtying()

- From: \<hidden\>
- Date: 2015-08-07 20:21:03 
- List: linux-raid
- Page: https://ratatoskr.run/linux-raid/2015/08/6630204
- Thread: https://ratatoskr.run/linux-raid/2015/08/6630204/t.md

```text
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

- [InterScan\_Disclaimer.txt](https://ratatoskr.run/linux-raid/2015/08/6630204/attachment/0) (text/plain, 1694 bytes)
