summaryrefslogtreecommitdiff
path: root/sys/dev/softraidvar.h
diff options
context:
space:
mode:
authorJoel Sing <jsing@cvs.openbsd.org>2009-07-12 16:31:57 +0000
committerJoel Sing <jsing@cvs.openbsd.org>2009-07-12 16:31:57 +0000
commitea7d21641acb9c641831d585abc52e9d8cccaf5f (patch)
tree13fbcc835c1e8a0a31c64d2d1bbdfaafc0d78955 /sys/dev/softraidvar.h
parentc364a2e66a6ad8a24597aec99363087a84b466c9 (diff)
Add support for global hotspares to softraid.
ok marco@
Diffstat (limited to 'sys/dev/softraidvar.h')
-rw-r--r--sys/dev/softraidvar.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/dev/softraidvar.h b/sys/dev/softraidvar.h
index b27997916cd..04ba09af530 100644
--- a/sys/dev/softraidvar.h
+++ b/sys/dev/softraidvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: softraidvar.h,v 1.78 2009/06/26 14:50:44 jsing Exp $ */
+/* $OpenBSD: softraidvar.h,v 1.79 2009/07/12 16:31:56 jsing Exp $ */
/*
* Copyright (c) 2006 Marco Peereboom <marco@peereboom.us>
* Copyright (c) 2008 Chris Kuethe <ckuethe@openbsd.org>
@@ -26,6 +26,9 @@ struct sr_uuid {
u_int8_t sui_id[SR_UUID_MAX];
} __packed;
+#define SR_HOTSPARE_LEVEL 0xffffffff
+#define SR_HOTSPARE_VOLID 0xffffffff
+
#define SR_META_SIZE 64 /* save space at chunk beginning */
#define SR_META_OFFSET 16 /* skip 8192 bytes at chunk beginning */
#define SR_META_VERSION 3 /* bump when sr_metadata changes */
@@ -474,6 +477,11 @@ struct sr_softc {
struct rwlock sc_lock;
+ struct sr_chunk_head sc_hotspare_list; /* List of hotspares. */
+ struct sr_chunk **sc_hotspares; /* Array to hotspare chunks. */
+ struct rwlock sc_hs_lock; /* Lock for hotspares list. */
+ int sc_hotspare_no; /* Number of hotspares. */
+
int sc_sensors_running;
/*
* during scsibus attach this is the discipline that is in use
@@ -493,6 +501,9 @@ struct sr_softc {
void sr_hotplug_register(struct sr_discipline *, void *);
void sr_hotplug_unregister(struct sr_discipline *, void *);
+/* Hotspare and rebuild. */
+void sr_hotspare_rebuild_callback(void *, void *);
+
/* work units & ccbs */
int sr_ccb_alloc(struct sr_discipline *);
void sr_ccb_free(struct sr_discipline *);