linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Xiao Ni <xni@redhat.com>
To: mariusz.tkaczyk@linux.intel.com
Cc: linux-raid@vger.kernel.org, ncroxon@redhat.com
Subject: [PATCH V2 1/1] mdadm/Grow: Update new level when starting reshape
Date: Wed, 11 Sep 2024 16:54:23 +0800	[thread overview]
Message-ID: <20240911085432.37828-2-xni@redhat.com> (raw)
In-Reply-To: <20240911085432.37828-1-xni@redhat.com>

Reshape needs to specify a backup file when it can't update data offset
of member disks. For this situation, first, it starts reshape and then
it kicks off mdadm-grow-continue service which does backup job and
monitors the reshape process. The service is a new process, so it needs
to read superblock from member disks to get information.

But in the first step, it doesn't update new level in superblock. So
it can't change level after reshape finishes, because the new level is
not right. So records the new level in the first step.

Signed-off-by: Xiao Ni <xni@redhat.com>
---
v2: format change, add get_linux_version
 Grow.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Grow.c b/Grow.c
index 5810b128aa99..533f301468af 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2941,15 +2941,24 @@ static int impose_reshape(struct mdinfo *sra,
 		 * persists from some earlier problem.
 		 */
 		int err = 0;
+
 		if (sysfs_set_num(sra, NULL, "chunk_size", info->new_chunk) < 0)
 			err = errno;
+
 		if (!err && sysfs_set_num(sra, NULL, "layout",
 					  reshape->after.layout) < 0)
 			err = errno;
+
+		/* new_level is introduced in kernel 6.12 */
+		if (!err && get_linux_version() >= 6012000 &&
+				sysfs_set_num(sra, NULL, "new_level", info->new_level) < 0)
+			err = errno;
+
 		if (!err && subarray_set_num(container, sra, "raid_disks",
 					     reshape->after.data_disks +
 					     reshape->parity) < 0)
 			err = errno;
+
 		if (err) {
 			pr_err("Cannot set device shape for %s\n", devname);
 
-- 
2.32.0 (Apple Git-132)


  reply	other threads:[~2024-09-11  8:54 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-11  8:54 [PATCH 00/10] mdadm tests fix Xiao Ni
2024-09-11  8:54 ` Xiao Ni [this message]
2024-09-25  7:51   ` [PATCH V2 1/1] mdadm/Grow: Update new level when starting reshape Mariusz Tkaczyk
2024-09-25 12:57     ` Xiao Ni
2024-09-11  8:54 ` [PATCH V2 2/2] mdadm/Grow: Update reshape_progress to need_back after reshape finishes Xiao Ni
2024-09-11  8:54 ` [PATCH 03/10] mdadm/Grow: Can't open raid when running --grow --continue Xiao Ni
2024-09-11  8:54 ` [PATCH v2 4/4] mdadm/Grow: sleep a while after removing disk in impose_level Xiao Ni
2024-09-11  8:54 ` [PATCH 05/10] mdadm/tests: wait until level changes Xiao Ni
2024-09-11  8:54 ` [PATCH 06/10] mdadm/tests: 07changelevels fix Xiao Ni
2024-09-11  8:54 ` [PATCH 07/10] mdadm/tests: Remove 07reshape5intr.broken Xiao Ni
2024-09-11  8:54 ` [PATCH 08/10] mdadm/tests: 07testreshape5 fix Xiao Ni
2024-09-11  8:54 ` [PATCH 09/10] mdadm/tests: remove 09imsm-assemble.broken Xiao Ni
2024-09-23  9:08   ` Mariusz Tkaczyk
2024-09-11  8:54 ` [PATCH 10/10] mdadm/Manage: record errno Xiao Ni
2024-09-23  8:51 ` [PATCH 00/10] mdadm tests fix Mariusz Tkaczyk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240911085432.37828-2-xni@redhat.com \
    --to=xni@redhat.com \
    --cc=linux-raid@vger.kernel.org \
    --cc=mariusz.tkaczyk@linux.intel.com \
    --cc=ncroxon@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).