/*
* Copyright (C) 2008 Intel Corporation
*
- * mdmon socket / message handling
+ * mdmon socket / message handling
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
return 0;
}
-
int send_message(int fd, struct metadata_update *msg, int tmo)
{
__s32 len = msg->len;
if (rv < 0 || len > MSG_MAX_LEN)
return -1;
if (len > 0) {
- msg->buf = malloc(len);
- if (msg->buf == NULL)
- return -1;
+ msg->buf = xmalloc(len);
rv = recv_buf(fd, msg->buf, len, tmo);
if (rv < 0) {
free(msg->buf);
addr.sun_family = PF_LOCAL;
strcpy(addr.sun_path, path);
- if (connect(sfd, &addr, sizeof(addr)) < 0) {
+ if (connect(sfd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
close(sfd);
return -1;
}
return err;
}
-/* ping monitor using device number */
-int ping_monitor_by_id(int devnum)
-{
- int err = -1;
- char *container = devnum2devname(devnum);
-
- if (container) {
- err = ping_monitor(container);
- free(container);
- }
-
- return err;
-}
-
static char *ping_monitor_version(char *devname)
{
int sfd = connect_monitor(devname);
int check_mdmon_version(char *container)
{
char *version = NULL;
- int devnum = devname2devnum(container);
- if (!mdmon_running(devnum)) {
+ if (!mdmon_running(container)) {
/* if mdmon is not active we assume that any instance that is
* later started will match the current mdadm version, if this
* assumption is violated we may inadvertantly rebuild an array
if (!is_container_member(e, container))
continue;
sysfs_free(sra);
- sra = sysfs_read(-1, e->devnum, GET_VERSION);
+ sra = sysfs_read(-1, e->devnm, GET_VERSION);
if (!sra) {
pr_err("failed to read sysfs for subarray%s\n",
to_subarray(e, container));
* or part-spares
*/
sysfs_free(sra);
- sra = sysfs_read(-1, e->devnum, GET_DEVS | GET_STATE);
+ sra = sysfs_read(-1, e->devnm, GET_DEVS | GET_STATE);
if (sra && sra->array.spare_disks > 0) {
unblock_subarray(sra, freeze);
break;
if (!is_container_member(e2, container))
continue;
sysfs_free(sra);
- sra = sysfs_read(-1, e2->devnum, GET_VERSION);
+ sra = sysfs_read(-1, e2->devnm, GET_VERSION);
if (unblock_subarray(sra, freeze))
- pr_err("Failed to unfreeze %s\n", e2->dev);
+ pr_err("Failed to unfreeze %s\n", e2->devnm);
}
ping_monitor(container); /* cleared frozen */
if (!is_container_member(e, container))
continue;
sysfs_free(sra);
- sra = sysfs_read(-1, e->devnum, GET_VERSION|GET_LEVEL);
+ sra = sysfs_read(-1, e->devnm, GET_VERSION|GET_LEVEL);
if (!sra)
continue;
if (sra->array.level > 0)
to_ping++;
if (unblock_subarray(sra, unfreeze))
- pr_err("Failed to unfreeze %s\n", e->dev);
+ pr_err("Failed to unfreeze %s\n", e->devnm);
}
if (to_ping)
ping_monitor(container);
free_mdstat(ent);
}
-
-
/* give the manager a chance to view the updated container state. This
* would naturally happen due to the manager noticing a change in
* /proc/mdstat; however, pinging encourages this detection to happen