diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-05-15 16:48:35 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:35 +1000 |
commit | f7dd881f909a7bc552a6de3c1fc4920bb0bfdff2 (patch) | |
tree | 57f1a18231e53bff1c3244eed448fac1a356542f /msg.h | |
parent | 0fd5c350e55590d2adbbb6ca16ec86391abda14b (diff) | |
download | mdadm-f7dd881f909a7bc552a6de3c1fc4920bb0bfdff2.tar.gz |
handle Manage_subdevs() for 'external' arrays
From: Dan Williams <dan.j.williams@intel.com>
1/ Block attempts to add/remove devices from container members
2/ Forward add/remove requests to containers
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'msg.h')
-rw-r--r-- | msg.h | 59 |
1 files changed, 59 insertions, 0 deletions
@@ -0,0 +1,59 @@ +/* + * Copyright (C) 2008 Intel Corporation + * + * 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, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. + */ + +struct mdinfo; +struct md_message { + int seq; + int num_bytes; + void *buf; +}; + +enum md_message_action { + md_action_ping_monitor, + md_action_remove_device, +}; + +struct md_generic_cmd { + enum md_message_action action; +}; + +struct md_remove_device_cmd { + enum md_message_action action; + dev_t rdev; +}; + +/* union of all known command types, used to sanity check ->num_bytes + * on the receive path + */ +union md_message_commands { + struct md_generic_cmd generic; + struct md_remove_device_cmd remove; +}; + +extern const int start_magic; +extern const int end_magic; + +extern int receive_message(int fd, struct md_message *msg, int tmo); +extern int send_message(int fd, struct md_message *msg, int tmo); +extern int ack(int fd, int seq, int tmo); +extern int nack(int fd, int err, int tmo); +extern int connect_monitor(char *devname); +extern int ping_monitor(char *devname); +extern int send_remove_device(int fd, dev_t rdev, int seq, int tmo); + |