summaryrefslogtreecommitdiff
path: root/mdmon.h
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2008-06-12 10:13:23 +1000
committerNeil Brown <neilb@suse.de>2008-06-12 10:13:23 +1000
commit2e735d198233a67f305862f72e3a5d0f0c3c548c (patch)
tree8dad807f9ed77f623ad5cf70900eab23054a552e /mdmon.h
parentb22806772072a3c9a3a7fa406fb573294cb4388b (diff)
Allow passing metadata update to the monitor.
Code in manager can now just call queue_metadata_update with a (freeable) buf holding the update, and it will get passed to the monitor and written out.
Diffstat (limited to 'mdmon.h')
-rw-r--r--mdmon.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/mdmon.h b/mdmon.h
index ad1a6781..965f6438 100644
--- a/mdmon.h
+++ b/mdmon.h
@@ -21,7 +21,24 @@ struct active_array {
unsigned long long resync_start;
};
-
+/*
+ * Metadata updates are handled by the monitor thread,
+ * as it has exclusive access to the metadata.
+ * When the manager want to updates metadata, either
+ * for it's own reason (e.g. committing a spare) or
+ * on behalf of mdadm, it creates a metadata_update
+ * structure and queues it to the monitor.
+ * Updates are created and processed by code under the
+ * superswitch. All common code sees them as opaque
+ * blobs.
+ */
+struct metadata_update {
+ int len;
+ char *buf;
+ void *space; /* allocated space that monitor will use */
+ struct metadata_update *next;
+};
+extern struct metadata_update *update_queue, *update_queue_handled;
#define MD_MAJOR 9