md: Add new_level sysfs interface
authorXiao Ni <xni@redhat.com>
Wed, 4 Sep 2024 23:54:53 +0000 (07:54 +0800)
committerSong Liu <song@kernel.org>
Fri, 6 Sep 2024 17:31:12 +0000 (10:31 -0700)
commitd981ed8419303ed12351eea8541ad6cb76455fe3
tree24febe9cdfb61807768ea85f16b46a0caaa93af7
parent2d2b3bc145b9d5b5c6f07d22291723ddb024ca76
md: Add new_level sysfs interface

Now reshape supports two ways: with backup file or without backup file.
For the situation without backup file, it needs to change data offset.
It doesn't need systemd service mdadm-grow-continue. So it can finish
the reshape job in one process environment. It can know the new level
from mdadm --grow command and can change to new level after reshape
finishes.

For the situation with backup file, it needs systemd service
mdadm-grow-continue to monitor reshape progress. So there are two process
envolved. One is mdadm --grow command whick kicks off reshape and wakes
up mdadm-grow-continue service. The second process is the service, which
doesn't know the new level from the first process.

In kernel space mddev->new_level is used to record the new level when
doing reshape. This patch adds a new interface to help mdadm update
new_level and sync it to metadata. Then mdadm-grow-continue can read the
right new_level.

Commit log revised by Song Liu. Please refer to the link for more details.

Signed-off-by: Xiao Ni <xni@redhat.com>
Link: https://lore.kernel.org/r/20240904235453.99120-1-xni@redhat.com
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/md.c