[PATCH] md: suppress spurious superblock update error message for dm-raid

Chen Cheng posted 1 patch 1 month, 2 weeks ago
drivers/md/md.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] md: suppress spurious superblock update error message for dm-raid
Posted by Chen Cheng 1 month, 2 weeks ago
dm-raid has external metadata management (mddev->external = 1) and
no persistent superblock (mddev->persistent = 0). For these arrays,
there's no superblock to update, so the error message is spurious.

The error appears as:
[  123.456789] md_update_sb: can't update sb for read-only array md0

Link: https://lore.kernel.org/all/20260128082430.96788-1-tj.iam.tj@proton.me/
Fixes: 6a5cb53aaa1d ("md: don't ignore read-only array in md_update_sb()")
Signed-off-by: Chen Cheng <chencheng@fnnas.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
---
 drivers/md/md.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 6d73f6e196a..e30b658641e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2790,7 +2790,9 @@ void md_update_sb(struct mddev *mddev, int force_change)
 	if (!md_is_rdwr(mddev)) {
 		if (force_change)
 			set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
-		pr_err("%s: can't update sb for read-only array %s\n", __func__, mdname(mddev));
+		if (!mddev_is_dm(mddev))
+			pr_err_ratelimited("%s: can't update sb for read-only array %s\n",
+					   __func__, mdname(mddev));
 		return;
 	}
 
-- 
2.51.0
Re: [PATCH] md: suppress spurious superblock update error message for dm-raid
Posted by Yu Kuai 1 month ago
Hi,

在 2026/2/10 21:38, Chen Cheng 写道:
> dm-raid has external metadata management (mddev->external = 1) and
> no persistent superblock (mddev->persistent = 0). For these arrays,
> there's no superblock to update, so the error message is spurious.
>
> The error appears as:
> [  123.456789] md_update_sb: can't update sb for read-only array md0
>
> Link: https://lore.kernel.org/all/20260128082430.96788-1-tj.iam.tj@proton.me/
> Fixes: 6a5cb53aaa1d ("md: don't ignore read-only array in md_update_sb()")
> Signed-off-by: Chen Cheng <chencheng@fnnas.com>
> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>

The Link and Fixes tag is incorrect, applied with following commit message:

     md: suppress spurious superblock update error message for dm-raid

     dm-raid has external metadata management (mddev->external = 1) and
     no persistent superblock (mddev->persistent = 0). For these arrays,
     there's no superblock to update, so the error message is spurious.

     The error appears as:
     md_update_sb: can't update sb for read-only array md0

     Fixes: 8c9e376b9d1a ("md: warn about updating super block failure")
     Reported-by: Tj <tj.iam.tj@proton.me>
     Closes: https://lore.kernel.org/all/20260128082430.96788-1-tj.iam.tj@proton.me/
     Signed-off-by: Chen Cheng <chencheng@fnnas.com>
     Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
     Link: https://lore.kernel.org/linux-raid/20260210133847.269986-1-chencheng@fnnas.com
     Signed-off-by: Yu Kuai <yukuai@fnnas.com>

> ---
>   drivers/md/md.c | 4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index 6d73f6e196a..e30b658641e 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -2790,7 +2790,9 @@ void md_update_sb(struct mddev *mddev, int force_change)
>   	if (!md_is_rdwr(mddev)) {
>   		if (force_change)
>   			set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
> -		pr_err("%s: can't update sb for read-only array %s\n", __func__, mdname(mddev));
> +		if (!mddev_is_dm(mddev))
> +			pr_err_ratelimited("%s: can't update sb for read-only array %s\n",
> +					   __func__, mdname(mddev));
>   		return;
>   	}
>   

-- 
Thansk,
Kuai