|
@@ -167,6 +167,15 @@ void md_new_event(mddev_t *mddev)
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(md_new_event);
|
|
|
|
|
|
+/* Alternate version that can be called from interrupts
|
|
|
+ * when calling sysfs_notify isn't needed.
|
|
|
+ */
|
|
|
+void md_new_event_inintr(mddev_t *mddev)
|
|
|
+{
|
|
|
+ atomic_inc(&md_event_count);
|
|
|
+ wake_up(&md_event_waiters);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Enables to iterate over all existing md arrays
|
|
|
* all_mddevs_lock protects this list.
|
|
@@ -4149,7 +4158,7 @@ void md_error(mddev_t *mddev, mdk_rdev_t *rdev)
|
|
|
set_bit(MD_RECOVERY_INTR, &mddev->recovery);
|
|
|
set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
|
|
|
md_wakeup_thread(mddev->thread);
|
|
|
- md_new_event(mddev);
|
|
|
+ md_new_event_inintr(mddev);
|
|
|
}
|
|
|
|
|
|
/* seq_file implementation /proc/mdstat */
|