fcntl(sock, F_SETFL, fl);
n = read(sock, buf, 100);
/* Ignore result, it is just the wait that
- * matters
+ * matters
*/
}
{NULL, 0, NULL, 0}
};
- /*
- * Always change process name to @dmon to avoid systemd killing it
- */
- argv[0][0] = '@';
+ if (in_initrd()) {
+ /*
+ * set first char of argv[0] to @. This is used by
+ * systemd to signal that the task was launched from
+ * initrd/initramfs and should be preserved during shutdown
+ */
+ argv[0][0] = '@';
+ }
while ((opt = getopt_long(argc, argv, "thaF", options, NULL)) != -1) {
switch (opt) {
dofork = 0;
break;
case OffRootOpt:
- /* silently ignore old option */
+ argv[0][0] = '@';
break;
case 'h':
default:
}
if (!devnm) {
- fprintf(stderr, "mdmon: %s is not a valid md device name\n",
+ pr_err("%s is not a valid md device name\n",
container_name);
exit(1);
}
mdfd = open_dev(devnm);
if (mdfd < 0) {
- fprintf(stderr, "mdmon: %s: %s\n", devnm,
- strerror(errno));
+ pr_err("%s: %s\n", devnm, strerror(errno));
return 1;
}
if (md_get_version(mdfd) < 0) {
- fprintf(stderr, "mdmon: %s: Not an md device\n",
- devnm);
+ pr_err("%s: Not an md device\n", devnm);
return 1;
}
/* Fork, and have the child tell us when they are ready */
if (must_fork) {
if (pipe(pfd) != 0) {
- fprintf(stderr, "mdmon: failed to create pipe\n");
+ pr_err("failed to create pipe\n");
return 1;
}
switch(fork()) {
case -1:
- fprintf(stderr, "mdmon: failed to fork: %s\n",
- strerror(errno));
+ pr_err("failed to fork: %s\n", strerror(errno));
return 1;
case 0: /* child */
close(pfd[0]);
mdi = sysfs_read(mdfd, container->devnm, GET_VERSION|GET_LEVEL|GET_DEVS);
if (!mdi) {
- fprintf(stderr, "mdmon: failed to load sysfs info for %s\n",
- container->devnm);
+ pr_err("failed to load sysfs info for %s\n", container->devnm);
exit(3);
}
if (mdi->array.level != UnSet) {
- fprintf(stderr, "mdmon: %s is not a container - cannot monitor\n",
- devnm);
+ pr_err("%s is not a container - cannot monitor\n", devnm);
exit(3);
}
if (mdi->array.major_version != -1 ||
mdi->array.minor_version != -2) {
- fprintf(stderr, "mdmon: %s does not use external metadata - cannot monitor\n",
+ pr_err("%s does not use external metadata - cannot monitor\n",
devnm);
exit(3);
}
container->ss = version_to_superswitch(mdi->text_version);
if (container->ss == NULL) {
- fprintf(stderr, "mdmon: %s uses unsupported metadata: %s\n",
+ pr_err("%s uses unsupported metadata: %s\n",
devnm, mdi->text_version);
exit(3);
}
ignore = chdir("/");
if (!takeover && victim > 0 && victim_sock >= 0) {
if (fping_monitor(victim_sock) == 0) {
- fprintf(stderr, "mdmon: %s already managed\n",
- container->devnm);
+ pr_err("%s already managed\n", container->devnm);
exit(3);
}
close(victim_sock);
victim_sock = -1;
}
if (container->ss->load_container(container, mdfd, devnm)) {
- fprintf(stderr, "mdmon: Cannot load metadata for %s\n",
- devnm);
+ pr_err("Cannot load metadata for %s\n", devnm);
exit(3);
}
close(mdfd);
status = 0;
if (write(pfd[1], &status, sizeof(status)) < 0)
- fprintf(stderr, "mdmon: failed to notify our parent: %d\n",
+ pr_err("failed to notify our parent: %d\n",
getppid());
close(pfd[1]);
mlockall(MCL_CURRENT | MCL_FUTURE);
if (clone_monitor(container) < 0) {
- fprintf(stderr, "mdmon: failed to start monitor process: %s\n",
+ pr_err("failed to start monitor process: %s\n",
strerror(errno));
exit(2);
}