2023-08-14 12:40:57

by Heinz Mauelshagen

[permalink] [raw]
Subject: [PATCH v2] md raid1: allow writebehind to work on any leg device set WriteMostly

From: Heinz Mauelshagen <[email protected]>

This is version 2 replacing my previous patch series as requested by Song Liu.

As the WriteMostly flag can be set on any component device of a RAID1
array, remove the constraint that it only works if set on the first one.


Signed-off-by: Heinz Mauelshagen <[email protected]>
Tested-by: Xiao Ni <[email protected]>
---
drivers/md/raid1.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index dd25832eb045..913cd46b786b 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1519,7 +1519,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
* allocate memory, or a reader on WriteMostly
* is waiting for behind writes to flush */
if (bitmap &&
- test_bit(WriteMostly, &rdev->flags) &&
+ write_behind &&
(atomic_read(&bitmap->behind_writes)
< mddev->bitmap_info.max_write_behind) &&
!waitqueue_active(&bitmap->behind_wait)) {
--
2.41.0



2023-08-14 16:55:19

by Song Liu

[permalink] [raw]
Subject: Re: [PATCH v2] md raid1: allow writebehind to work on any leg device set WriteMostly

On Mon, Aug 14, 2023 at 8:04 PM <[email protected]> wrote:
>
> From: Heinz Mauelshagen <[email protected]>
>
> This is version 2 replacing my previous patch series as requested by Song Liu.

For future patches, you can move the line above to ...

>
> As the WriteMostly flag can be set on any component device of a RAID1
> array, remove the constraint that it only works if set on the first one.
>
>
> Signed-off-by: Heinz Mauelshagen <[email protected]>
> Tested-by: Xiao Ni <[email protected]>
> ---

... here, below an extra "---" so that git-am will remove it automatically.

Other than this, applied to md-next.

Thanks,
Song

> ---
> drivers/md/raid1.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
> index dd25832eb045..913cd46b786b 100644
> --- a/drivers/md/raid1.c
> +++ b/drivers/md/raid1.c
> @@ -1519,7 +1519,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
> * allocate memory, or a reader on WriteMostly
> * is waiting for behind writes to flush */
> if (bitmap &&
> - test_bit(WriteMostly, &rdev->flags) &&
> + write_behind &&
> (atomic_read(&bitmap->behind_writes)
> < mddev->bitmap_info.max_write_behind) &&
> !waitqueue_active(&bitmap->behind_wait)) {
> --
> 2.41.0
>