Commit 4ed8731d authored by Shaohua Li's avatar Shaohua Li Committed by NeilBrown

MD: change the parameter of md thread

Change the thread parameter, so the thread can carry extra info. Next patch
will use it.
Signed-off-by: default avatarShaohua Li <shli@fusionio.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 57c67df4
...@@ -6641,7 +6641,7 @@ static int md_thread(void * arg) ...@@ -6641,7 +6641,7 @@ static int md_thread(void * arg)
clear_bit(THREAD_WAKEUP, &thread->flags); clear_bit(THREAD_WAKEUP, &thread->flags);
if (!kthread_should_stop()) if (!kthread_should_stop())
thread->run(thread->mddev); thread->run(thread);
} }
return 0; return 0;
...@@ -6656,8 +6656,8 @@ void md_wakeup_thread(struct md_thread *thread) ...@@ -6656,8 +6656,8 @@ void md_wakeup_thread(struct md_thread *thread)
} }
} }
struct md_thread *md_register_thread(void (*run) (struct mddev *), struct mddev *mddev, struct md_thread *md_register_thread(void (*run) (struct md_thread *),
const char *name) struct mddev *mddev, const char *name)
{ {
struct md_thread *thread; struct md_thread *thread;
...@@ -7206,8 +7206,9 @@ EXPORT_SYMBOL_GPL(md_allow_write); ...@@ -7206,8 +7206,9 @@ EXPORT_SYMBOL_GPL(md_allow_write);
#define SYNC_MARKS 10 #define SYNC_MARKS 10
#define SYNC_MARK_STEP (3*HZ) #define SYNC_MARK_STEP (3*HZ)
void md_do_sync(struct mddev *mddev) void md_do_sync(struct md_thread *thread)
{ {
struct mddev *mddev = thread->mddev;
struct mddev *mddev2; struct mddev *mddev2;
unsigned int currspeed = 0, unsigned int currspeed = 0,
window; window;
......
...@@ -540,12 +540,13 @@ static inline void sysfs_unlink_rdev(struct mddev *mddev, struct md_rdev *rdev) ...@@ -540,12 +540,13 @@ static inline void sysfs_unlink_rdev(struct mddev *mddev, struct md_rdev *rdev)
list_for_each_entry_rcu(rdev, &((mddev)->disks), same_set) list_for_each_entry_rcu(rdev, &((mddev)->disks), same_set)
struct md_thread { struct md_thread {
void (*run) (struct mddev *mddev); void (*run) (struct md_thread *thread);
struct mddev *mddev; struct mddev *mddev;
wait_queue_head_t wqueue; wait_queue_head_t wqueue;
unsigned long flags; unsigned long flags;
struct task_struct *tsk; struct task_struct *tsk;
unsigned long timeout; unsigned long timeout;
void *private;
}; };
#define THREAD_WAKEUP 0 #define THREAD_WAKEUP 0
...@@ -584,7 +585,7 @@ static inline void safe_put_page(struct page *p) ...@@ -584,7 +585,7 @@ static inline void safe_put_page(struct page *p)
extern int register_md_personality(struct md_personality *p); extern int register_md_personality(struct md_personality *p);
extern int unregister_md_personality(struct md_personality *p); extern int unregister_md_personality(struct md_personality *p);
extern struct md_thread *md_register_thread( extern struct md_thread *md_register_thread(
void (*run)(struct mddev *mddev), void (*run)(struct md_thread *thread),
struct mddev *mddev, struct mddev *mddev,
const char *name); const char *name);
extern void md_unregister_thread(struct md_thread **threadp); extern void md_unregister_thread(struct md_thread **threadp);
...@@ -603,7 +604,7 @@ extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev, ...@@ -603,7 +604,7 @@ extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
extern void md_super_wait(struct mddev *mddev); extern void md_super_wait(struct mddev *mddev);
extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size, extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
struct page *page, int rw, bool metadata_op); struct page *page, int rw, bool metadata_op);
extern void md_do_sync(struct mddev *mddev); extern void md_do_sync(struct md_thread *thread);
extern void md_new_event(struct mddev *mddev); extern void md_new_event(struct mddev *mddev);
extern int md_allow_write(struct mddev *mddev); extern int md_allow_write(struct mddev *mddev);
extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev); extern void md_wait_for_blocked_rdev(struct md_rdev *rdev, struct mddev *mddev);
......
...@@ -335,8 +335,9 @@ static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev) ...@@ -335,8 +335,9 @@ static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
* 3. Performs writes following reads for array syncronising. * 3. Performs writes following reads for array syncronising.
*/ */
static void multipathd (struct mddev *mddev) static void multipathd(struct md_thread *thread)
{ {
struct mddev *mddev = thread->mddev;
struct multipath_bh *mp_bh; struct multipath_bh *mp_bh;
struct bio *bio; struct bio *bio;
unsigned long flags; unsigned long flags;
......
...@@ -2294,8 +2294,9 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio) ...@@ -2294,8 +2294,9 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio)
} }
} }
static void raid1d(struct mddev *mddev) static void raid1d(struct md_thread *thread)
{ {
struct mddev *mddev = thread->mddev;
struct r1bio *r1_bio; struct r1bio *r1_bio;
unsigned long flags; unsigned long flags;
struct r1conf *conf = mddev->private; struct r1conf *conf = mddev->private;
......
...@@ -2732,8 +2732,9 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio) ...@@ -2732,8 +2732,9 @@ static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio)
} }
} }
static void raid10d(struct mddev *mddev) static void raid10d(struct md_thread *thread)
{ {
struct mddev *mddev = thread->mddev;
struct r10bio *r10_bio; struct r10bio *r10_bio;
unsigned long flags; unsigned long flags;
struct r10conf *conf = mddev->private; struct r10conf *conf = mddev->private;
......
...@@ -4625,8 +4625,9 @@ static int handle_active_stripes(struct r5conf *conf) ...@@ -4625,8 +4625,9 @@ static int handle_active_stripes(struct r5conf *conf)
* During the scan, completed stripes are saved for us by the interrupt * During the scan, completed stripes are saved for us by the interrupt
* handler, so that they will not have to wait for our next wakeup. * handler, so that they will not have to wait for our next wakeup.
*/ */
static void raid5d(struct mddev *mddev) static void raid5d(struct md_thread *thread)
{ {
struct mddev *mddev = thread->mddev;
struct r5conf *conf = mddev->private; struct r5conf *conf = mddev->private;
int handled; int handled;
struct blk_plug plug; struct blk_plug plug;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment