@@ -50,23 +50,9 @@
};
/*
- * List of event handler functions to call for the metadata format handler.
- *
- * Return 1 for event taken, RAID device write necessary.
- * Return 0 for error and/or write unnecessary.
- */
-struct event_handlers {
- /* Handle IO error */
- int (*io) (struct lib_context * lc, struct event_io * e_io);
-
- /* Handle RAID device add/remove. */
- int (*rd) (struct lib_context * lc, struct event_rd * e_rd);
-};
-
-/*
* Hot-spare search types list: it can be searched locally/globally
*/
-enum scope {
+enum hot_spare_scope {
t_scope_local = 0x01,
t_scope_global = 0x02
};
@@ -151,15 +137,11 @@
enum handler_commands command,
struct handler_info * info, void *ptr);
- /*
- * Event handlers (eg, I/O error).
- */
- struct event_handlers *events;
-
/*
* Hot-spare disk search scope
*/
- enum scope scope;
+ enum hot_spare_scope scope;
+
/*
* Display RAID disk metadata native.
*/
@@ -16,6 +16,7 @@
device/scan.c \
device/scsi.c \
display/display.c \
+ events/libdmraid-events-isw.c \
format/format.c \
locking/locking.c \
log/log.c \
@@ -1020,11 +1020,10 @@
break;
case REBUILD_END:
- if (!_lib_main('F', dev_name)) {
+ if (!_lib_main('F', dev_name) ||
+ !_lib_main('r', dev_name))
syslog(LOG_NOTICE, "Rebuild of RAID set %s complete",
dev_name);
- _lib_main('r', dev_name);
- }
/* Turn all RAID set LEDs off anyway, since it's in-sync.*/
/* Used also for manual rebuild. */
@@ -560,6 +560,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -583,6 +584,7 @@
return 1; /* Indicate that this is indeed a failure. */
}
+#endif
/*
* Helper routines for asr_group()
@@ -1042,11 +1044,6 @@
NULL, handler);
}
-static struct event_handlers asr_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
-
/* Dump a reserved block */
static void
dump_rb(struct lib_context *lc, struct asr_reservedblock *rb)
@@ -1146,7 +1143,6 @@
.write = asr_write,
.group = asr_group,
.check = asr_check,
- .events = &asr_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = asr_log,
#endif
@@ -305,6 +305,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -318,11 +319,7 @@
hpt->magic = HPT37X_MAGIC_BAD;
return 1;
}
-
-static struct event_handlers hpt37x_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -376,7 +373,6 @@
.write = hpt37x_write,
.group = hpt37x_group,
.check = hpt37x_check,
- .events = &hpt37x_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = hpt37x_log,
#endif
@@ -254,6 +254,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -267,11 +268,7 @@
hpt->magic = HPT45X_MAGIC_BAD;
return 1;
}
-
-static struct event_handlers hpt45x_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -313,7 +310,6 @@
.write = hpt45x_write,
.group = hpt45x_group,
.check = hpt45x_check,
- .events = &hpt45x_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = hpt45x_log,
#endif
@@ -1389,8 +1389,8 @@
check_raid_set(lc, r, devices_per_domain, NULL,
check_rd, NULL, handler);
else
- check_raid_set(lc, r, devices, NULL, check_rd,
- NULL, handler);
+ check_raid_set(lc, r, devices, NULL,
+ check_rd, NULL, handler);
}
return 1;
@@ -2133,33 +2133,6 @@
return T_GROUP(rs) ? _isw_check(lc, rs) : 0;
}
-/*
- * IO error event handler.
- */
-static int
-event_io(struct lib_context *lc, struct event_io *e_io)
-{
- struct raid_dev *rd = e_io->rd;
- struct isw *isw = META(rd, isw);
- struct isw_disk *disk;
-
- if (!(disk = get_disk(lc, rd->di, isw)))
- LOG_ERR(lc, 0, "%s: disk", handler);
-
- /* Avoid write trashing. */
- if (S_BROKEN(status(lc, rd)))
- return 0;
-
- disk->status &= ~USABLE_DISK;
- disk->status |= FAILED_DISK;
- return 1;
-}
-
-static struct event_handlers isw_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
-
static void
_isw_log(struct lib_context *lc, struct isw *isw)
{
@@ -2547,7 +2520,6 @@
.group = isw_group,
.check = isw_check,
.metadata_handler = isw_metadata_handler,
- .events = &isw_event_handlers,
.scope = t_scope_global /* | t_scope_local */ ,
#ifdef DMRAID_NATIVE_LOG
.log = isw_log,
@@ -292,6 +292,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -305,11 +306,7 @@
jm->checksum = 1; /* FIXME: how to flag a JMicron disk bad? */
return 1;
}
-
-static struct event_handlers jm_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -353,7 +350,6 @@
.write = jm_write,
.group = jm_group,
.check = jm_check,
- .events = &jm_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = jm_log,
#endif
@@ -263,6 +263,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -276,11 +277,7 @@
// FIXME: lsi->? = BAD;
return 1;
}
-
-static struct event_handlers lsi_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/* Log native information about an LSI Logic RAID device. */
@@ -339,7 +336,6 @@
.write = lsi_write,
.group = lsi_group,
.check = lsi_check,
- .events = &lsi_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = lsi_log,
#endif
@@ -313,6 +313,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -328,11 +329,7 @@
return 1;
}
-
-static struct event_handlers nv_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -404,7 +401,6 @@
.write = nv_write,
.group = nv_group,
.check = nv_check,
- .events = &nv_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = nv_log,
#endif
@@ -523,6 +523,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -536,11 +537,7 @@
PDC_SET_BROKEN(pdc);
return 1;
}
-
-static struct event_handlers pdc_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/* Log native information about a Promise RAID device. */
@@ -619,7 +616,6 @@
.write = pdc_write,
.group = pdc_group,
.check = pdc_check,
- .events = &pdc_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = pdc_log,
#endif
@@ -421,6 +421,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -435,11 +436,7 @@
return 1;
}
-
-static struct event_handlers sil_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -509,7 +506,6 @@
.write = sil_write,
.group = sil_group,
.check = sil_check,
- .events = &sil_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = sil_log,
#endif
@@ -318,6 +318,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -332,12 +333,7 @@
return 1;
}
-
-static struct event_handlers via_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
-
+#endif
#ifdef DMRAID_NATIVE_LOG
/*
@@ -394,7 +390,6 @@
.write = via_write,
.group = via_group,
.check = via_check,
- .events = &via_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = via_log,
#endif
@@ -626,6 +626,7 @@
/*
* IO error event handler.
*/
+#if 0
static int
event_io(struct lib_context *lc, struct event_io *e_io)
{
@@ -634,6 +635,7 @@
LOG_ERR(lc, 0, "%s: PANIC - don't know about event_io!", handler);
}
+#endif
#if 0
/* FIXME: This should not use META() directly? */
@@ -897,11 +899,6 @@
NULL, handler);
}
-static struct event_handlers ddf1_event_handlers = {
- .io = event_io,
- .rd = NULL, /* FIXME: no device add/remove event handler yet. */
-};
-
#ifdef DMRAID_NATIVE_LOG
/*
* Log native information about the RAID device.
@@ -922,7 +919,6 @@
.write = ddf1_write,
.group = ddf1_group,
.check = ddf1_check,
- .events = &ddf1_event_handlers,
#ifdef DMRAID_NATIVE_LOG
.log = ddf1_log,
#endif
@@ -391,7 +391,6 @@
.write = NULL, /* Not supported */
.group = dos_group,
.check = dos_check,
- .events = NULL, /* Not supported */
#ifdef DMRAID_NATIVE_LOG
.log = NULL, /* Not supported; use fdisk and friends */
#endif
@@ -921,7 +921,7 @@
"dropping unwanted RAID set \"%s\"",
rs->name);
/*
- * ddf1 carries a private pointer to it's contianing
+ * ddf1 carries a private pointer to it's containing
* set which is cleared as part of the check. So we
* must call it's check method before freeing the
* set. Whats more, it looks like ddf1 check can