]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdmon.c
Improve comments for block_monitor.
[thirdparty/mdadm.git] / mdmon.c
diff --git a/mdmon.c b/mdmon.c
index c4c0181a8b81bd800b640e515a323f2b80c60b1b..f56e57f320ebf3e061bef58625012a6bbae1fc8e 100644 (file)
--- a/mdmon.c
+++ b/mdmon.c
@@ -147,10 +147,10 @@ static int make_pidfile(char *devname)
        int fd;
        int n;
 
-       if (mkdir(pid_dir, 0700) < 0 &&
+       if (mkdir(MDMON_DIR, 0755) < 0 &&
            errno != EEXIST)
                return -errno;
-       sprintf(path, "%s/%s.pid", pid_dir, devname);
+       sprintf(path, "%s/%s.pid", MDMON_DIR, devname);
 
        fd = open(path, O_RDWR|O_CREAT|O_EXCL, 0600);
        if (fd < 0)
@@ -204,13 +204,10 @@ void remove_pidfile(char *devname)
 {
        char buf[100];
 
-       sprintf(buf, "%s/%s.pid", pid_dir, devname);
+       sprintf(buf, "%s/%s.pid", MDMON_DIR, devname);
        unlink(buf);
-       sprintf(buf, "%s/%s.sock", pid_dir, devname);
+       sprintf(buf, "%s/%s.sock", MDMON_DIR, devname);
        unlink(buf);
-       if (strcmp(pid_dir, ALT_RUN) == 0)
-               /* try to clean up when we are finished with this dir */
-               rmdir(pid_dir);
 }
 
 static int make_control_sock(char *devname)
@@ -223,7 +220,7 @@ static int make_control_sock(char *devname)
        if (sigterm)
                return -1;
 
-       sprintf(path, "%s/%s.sock", pid_dir, devname);
+       sprintf(path, "%s/%s.sock", MDMON_DIR, devname);
        unlink(path);
        sfd = socket(PF_LOCAL, SOCK_STREAM, 0);
        if (sfd < 0)
@@ -309,7 +306,7 @@ int main(int argc, char *argv[])
                                /* update cmdline so this mdmon instance can be
                                 * distinguished from others in a call to ps(1)
                                 */
-                               if (strlen(devname) <= container_len) {
+                               if (strlen(devname) <= (unsigned)container_len) {
                                        memset(container_name, 0, container_len);
                                        sprintf(container_name, "%s", devname);
                                }
@@ -401,7 +398,6 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
        container->devnum = devnum;
        container->devname = devname;
        container->arrays = NULL;
-       container->subarray[0] = 0;
        container->sock = -1;
 
        if (!container->devname) {
@@ -459,12 +455,7 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
        act.sa_handler = SIG_IGN;
        sigaction(SIGPIPE, &act, NULL);
 
-       pid_dir = VAR_RUN;
        victim = mdmon_pid(container->devnum);
-       if (victim < 0) {
-               pid_dir = ALT_RUN;
-               victim = mdmon_pid(container->devnum);
-       }
        if (victim >= 0)
                victim_sock = connect_monitor(container->devname);
 
@@ -477,7 +468,7 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
                }
                close(victim_sock);
        }
-       if (container->ss->load_super(container, mdfd, devname)) {
+       if (container->ss->load_container(container, mdfd, devname)) {
                fprintf(stderr, "mdmon: Cannot load metadata for %s\n",
                        devname);
                exit(3);
@@ -488,16 +479,8 @@ static int mdmon(char *devname, int devnum, int must_fork, int takeover)
         */
        if (victim > 0)
                remove_pidfile(devname);
-       pid_dir = VAR_RUN;
        if (make_pidfile(devname) < 0) {
-               /* Try the alternate */
-               pid_dir = ALT_RUN;
-               if (make_pidfile(devname) < 0) {
-                       fprintf(stderr, "mdmon: Neither %s nor %s are writable\n"
-                               "       cannot create .pid or .sock files.  Aborting\n",
-                               VAR_RUN, ALT_RUN);
-                       exit(3);
-               }
+               exit(3);
        }
        container->sock = make_control_sock(devname);