Add --offroot argument to mdadm

When --offroot is specified, mdadm will change the first character of
argv[0] to '@'. This is used to signal to systemd that mdadm was
launched from initramfs and should not be shut down before returning
to the initramfs.

Acked-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Jes Sorensen 2012-01-25 15:18:02 +01:00 committed by NeilBrown
parent eb155f6de0
commit 08ca2adfff
4 changed files with 27 additions and 0 deletions

View File

@ -111,6 +111,7 @@ struct option long_options[] = {
{"kill-subarray", 1, 0, KillSubarray},
{"update-subarray", 1, 0, UpdateSubarray},
{"udev-rules", 2, 0, UdevRules},
{"offroot", 0, 0, OffRootOpt},
/* synonyms */
{"monitor", 0, 0, 'F'},
@ -268,6 +269,10 @@ char OptionHelp[] =
" --query -Q : Display general information about how a\n"
" device relates to the md driver\n"
" --auto-detect : Start arrays auto-detected by the kernel\n"
" --offroot : Set first character of argv[0] to @ to indicate the\n"
" application was launched from initrd/initramfs and\n"
" should not be shutdown by systemd as part of the\n"
" regular shutdown process.\n"
;
/*
"\n"

View File

@ -254,6 +254,18 @@ Avoid printing purely informative messages. With this,
.I mdadm
will be silent unless there is something really important to report.
.TP
.BR \-\-offroot
Set first character of argv[0] to @ to indicate mdadm was launched
from initrd/initramfs and should not be shutdown by systemd as part of
the regular shutdown process. This option is normally only used by
the system's initscripts. Please see here for more details on how
systemd handled argv[0]:
.IP
.B http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons
.PP
.TP
.BR \-f ", " \-\-force
Be more forceful about certain operations. See the various modes for

View File

@ -174,6 +174,15 @@ int main(int argc, char *argv[])
homehost = optarg;
continue;
/*
* --offroot sets first char of argv[0] to @. This is used
* by systemd to signal that the tast was launched from
* initrd/initramfs and should be preserved during shutdown
*/
case OffRootOpt:
argv[0][0] = '@';
continue;
case ':':
case '?':
fputs(Usage, stderr);

View File

@ -321,6 +321,7 @@ enum special_options {
UdevRules,
FreezeReshape,
Continue,
OffRootOpt,
};
/* structures read from config file */