summaryrefslogtreecommitdiff
path: root/msg.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-05-15 16:48:35 +1000
committerNeil Brown <neilb@suse.de>2008-05-15 16:48:35 +1000
commitf7dd881f909a7bc552a6de3c1fc4920bb0bfdff2 (patch)
tree57f1a18231e53bff1c3244eed448fac1a356542f /msg.h
parent0fd5c350e55590d2adbbb6ca16ec86391abda14b (diff)
downloadmdadm-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.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/msg.h b/msg.h
new file mode 100644
index 0000000..84ee9b3
--- /dev/null
+++ b/msg.h
@@ -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);
+