|
@@ -6601,6 +6601,7 @@ void md_wakeup_thread(struct md_thread *thread)
|
|
|
wake_up(&thread->wqueue);
|
|
|
}
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_wakeup_thread);
|
|
|
|
|
|
struct md_thread *md_register_thread(void (*run) (struct md_thread *),
|
|
|
struct mddev *mddev, const char *name)
|
|
@@ -6626,6 +6627,7 @@ struct md_thread *md_register_thread(void (*run) (struct md_thread *),
|
|
|
}
|
|
|
return thread;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_register_thread);
|
|
|
|
|
|
void md_unregister_thread(struct md_thread **threadp)
|
|
|
{
|
|
@@ -6643,6 +6645,7 @@ void md_unregister_thread(struct md_thread **threadp)
|
|
|
kthread_stop(thread->tsk);
|
|
|
kfree(thread);
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_unregister_thread);
|
|
|
|
|
|
void md_error(struct mddev *mddev, struct md_rdev *rdev)
|
|
|
{
|
|
@@ -6662,6 +6665,7 @@ void md_error(struct mddev *mddev, struct md_rdev *rdev)
|
|
|
queue_work(md_misc_wq, &mddev->event_work);
|
|
|
md_new_event_inintr(mddev);
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_error);
|
|
|
|
|
|
/* seq_file implementation /proc/mdstat */
|
|
|
|
|
@@ -6990,6 +6994,7 @@ int register_md_personality(struct md_personality *p)
|
|
|
spin_unlock(&pers_lock);
|
|
|
return 0;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(register_md_personality);
|
|
|
|
|
|
int unregister_md_personality(struct md_personality *p)
|
|
|
{
|
|
@@ -6999,6 +7004,7 @@ int unregister_md_personality(struct md_personality *p)
|
|
|
spin_unlock(&pers_lock);
|
|
|
return 0;
|
|
|
}
|
|
|
+EXPORT_SYMBOL(unregister_md_personality);
|
|
|
|
|
|
static int is_mddev_idle(struct mddev *mddev, int init)
|
|
|
{
|
|
@@ -7056,6 +7062,7 @@ void md_done_sync(struct mddev *mddev, int blocks, int ok)
|
|
|
// stop recovery, signal do_sync ....
|
|
|
}
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_done_sync);
|
|
|
|
|
|
/* md_write_start(mddev, bi)
|
|
|
* If we need to update some array metadata (e.g. 'active' flag
|
|
@@ -7096,6 +7103,7 @@ void md_write_start(struct mddev *mddev, struct bio *bi)
|
|
|
wait_event(mddev->sb_wait,
|
|
|
!test_bit(MD_CHANGE_PENDING, &mddev->flags));
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_write_start);
|
|
|
|
|
|
void md_write_end(struct mddev *mddev)
|
|
|
{
|
|
@@ -7106,6 +7114,7 @@ void md_write_end(struct mddev *mddev)
|
|
|
mod_timer(&mddev->safemode_timer, jiffies + mddev->safemode_delay);
|
|
|
}
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_write_end);
|
|
|
|
|
|
/* md_allow_write(mddev)
|
|
|
* Calling this ensures that the array is marked 'active' so that writes
|
|
@@ -7758,6 +7767,7 @@ void md_check_recovery(struct mddev *mddev)
|
|
|
mddev_unlock(mddev);
|
|
|
}
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_check_recovery);
|
|
|
|
|
|
void md_reap_sync_thread(struct mddev *mddev)
|
|
|
{
|
|
@@ -7800,6 +7810,7 @@ void md_reap_sync_thread(struct mddev *mddev)
|
|
|
if (mddev->event_work.func)
|
|
|
queue_work(md_misc_wq, &mddev->event_work);
|
|
|
}
|
|
|
+EXPORT_SYMBOL(md_reap_sync_thread);
|
|
|
|
|
|
void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev)
|
|
|
{
|
|
@@ -8526,20 +8537,8 @@ static int set_ro(const char *val, struct kernel_param *kp)
|
|
|
|
|
|
module_param_call(start_ro, set_ro, get_ro, NULL, S_IRUSR|S_IWUSR);
|
|
|
module_param(start_dirty_degraded, int, S_IRUGO|S_IWUSR);
|
|
|
-
|
|
|
module_param_call(new_array, add_named_array, NULL, NULL, S_IWUSR);
|
|
|
|
|
|
-EXPORT_SYMBOL(register_md_personality);
|
|
|
-EXPORT_SYMBOL(unregister_md_personality);
|
|
|
-EXPORT_SYMBOL(md_error);
|
|
|
-EXPORT_SYMBOL(md_done_sync);
|
|
|
-EXPORT_SYMBOL(md_write_start);
|
|
|
-EXPORT_SYMBOL(md_write_end);
|
|
|
-EXPORT_SYMBOL(md_register_thread);
|
|
|
-EXPORT_SYMBOL(md_unregister_thread);
|
|
|
-EXPORT_SYMBOL(md_wakeup_thread);
|
|
|
-EXPORT_SYMBOL(md_check_recovery);
|
|
|
-EXPORT_SYMBOL(md_reap_sync_thread);
|
|
|
MODULE_LICENSE("GPL");
|
|
|
MODULE_DESCRIPTION("MD RAID framework");
|
|
|
MODULE_ALIAS("md");
|