Having single function to read mdmon pid file.
We don't need three. One (signal_mdmon) wasn't even being used. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
24cfdbc5c0
commit
24f6f99b36
2
mdadm.h
2
mdadm.h
|
@ -883,7 +883,7 @@ extern int open_mddev(char *dev, int report_errors);
|
|||
extern int open_container(int fd);
|
||||
|
||||
extern int mdmon_running(int devnum);
|
||||
extern int signal_mdmon(int devnum);
|
||||
extern int mdmon_pid(int devnum);
|
||||
extern int check_env(char *name);
|
||||
extern __u32 random32(void);
|
||||
extern int start_mdmon(int devnum);
|
||||
|
|
24
mdmon.c
24
mdmon.c
|
@ -148,24 +148,6 @@ int is_container_member(struct mdstat_ent *mdstat, char *container)
|
|||
return 1;
|
||||
}
|
||||
|
||||
pid_t devname2mdmon(char *devname)
|
||||
{
|
||||
char buf[100];
|
||||
pid_t pid = -1;
|
||||
int fd;
|
||||
|
||||
sprintf(buf, "/var/run/mdadm/%s.pid", devname);
|
||||
fd = open(buf, O_RDONLY|O_NOATIME);
|
||||
if (fd < 0)
|
||||
return -1;
|
||||
|
||||
if (read(fd, buf, sizeof(buf)) > 0)
|
||||
sscanf(buf, "%d\n", &pid);
|
||||
close(fd);
|
||||
|
||||
return pid;
|
||||
}
|
||||
|
||||
static void try_kill_monitor(pid_t pid, char *devname, int sock)
|
||||
{
|
||||
char buf[100];
|
||||
|
@ -373,7 +355,7 @@ static int mdmon(char *devname, int devnum, int must_fork, char *switchroot)
|
|||
|
||||
switch (fork()) {
|
||||
case 0:
|
||||
victim = devname2mdmon(devname);
|
||||
victim = mdmon_pid(devnum);
|
||||
victim_sock = connect_monitor(devname);
|
||||
if (chroot(switchroot) != 0) {
|
||||
fprintf(stderr, "mdmon: failed to chroot to '%s': %s\n",
|
||||
|
@ -511,7 +493,7 @@ static int mdmon(char *devname, int devnum, int must_fork, char *switchroot)
|
|||
* the new root
|
||||
*/
|
||||
if (switchroot[0] == '/') {
|
||||
victim = devname2mdmon(container->devname);
|
||||
victim = mdmon_pid(container->devnum);
|
||||
victim_sock = connect_monitor(container->devname);
|
||||
} else {
|
||||
victim = atoi(switchroot);
|
||||
|
@ -527,7 +509,7 @@ static int mdmon(char *devname, int devnum, int must_fork, char *switchroot)
|
|||
exit(3);
|
||||
}
|
||||
/* if there is a pid file, kill whoever is there just in case */
|
||||
victim = devname2mdmon(container->devname);
|
||||
victim = mdmon_pid(container->devnum);
|
||||
}
|
||||
if (container->ss->load_super(container, mdfd, devname)) {
|
||||
fprintf(stderr, "mdmon: Cannot load metadata for %s\n",
|
||||
|
|
26
util.c
26
util.c
|
@ -1463,14 +1463,14 @@ int fd2devnum(int fd)
|
|||
return NoMdDev;
|
||||
}
|
||||
|
||||
int mdmon_running(int devnum)
|
||||
int mdmon_pid(int devnum)
|
||||
{
|
||||
char path[100];
|
||||
char pid[10];
|
||||
int fd;
|
||||
int n;
|
||||
sprintf(path, "/var/run/mdadm/%s.pid", devnum2devname(devnum));
|
||||
fd = open(path, O_RDONLY, 0);
|
||||
fd = open(path, O_RDONLY | O_NOATIME, 0);
|
||||
|
||||
if (fd < 0)
|
||||
return 0;
|
||||
|
@ -1478,27 +1478,15 @@ int mdmon_running(int devnum)
|
|||
close(fd);
|
||||
if (n <= 0)
|
||||
return 0;
|
||||
if (kill(atoi(pid), 0) == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
return atoi(pid);
|
||||
}
|
||||
|
||||
int signal_mdmon(int devnum)
|
||||
int mdmon_running(int devnum)
|
||||
{
|
||||
char path[100];
|
||||
char pid[10];
|
||||
int fd;
|
||||
int n;
|
||||
sprintf(path, "/var/run/mdadm/%s.pid", devnum2devname(devnum));
|
||||
fd = open(path, O_RDONLY, 0);
|
||||
|
||||
if (fd < 0)
|
||||
int pid = mdmon_pid(devnum);
|
||||
if (pid <= 0)
|
||||
return 0;
|
||||
n = read(fd, pid, 9);
|
||||
close(fd);
|
||||
if (n <= 0)
|
||||
return 0;
|
||||
if (kill(atoi(pid), SIGUSR1) == 0)
|
||||
if (kill(pid, 0) == 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue