MD: change the parameter of md thread
PATCH v3 1/2 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 Shaohua Li <[email protected]>
--- drivers/md/md.c | 9 +++++---- drivers/md/md.h | 7 ++++--- drivers/md/multipath.c | 3 ++- drivers/md/raid1.c | 3 ++- drivers/md/raid10.c | 3 ++- drivers/md/raid5.c | 3 ++- 6 files changed, 17 insertions(+), 11 deletions(-)
drivers/md/md.c +5 -4
@@ -6676,7 +6676,7 @@ static int md_thread(void * arg)clear_bit (THREAD_WAKEUP , &thread->flags);if (!kthread_should_stop ()) - thread->run (thread->mddev); + thread->run (thread); }return 0 ;
@@ -6691,8 +6691,8 @@ void md_wakeup_thread(struct md_thread * } } -struct md_thread *md_register_thread (void (*run) (struct mddev *),struct mddev *mddev, -const char *name) +struct md_thread *md_register_thread (void (*run) (struct md_thread *), +struct mddev *mddev,const char *name) {struct md_thread *thread;
@@ -7241,8 +7241,9 @@ EXPORT_SYMBOL_GPL(md_allow_write);#define SYNC_MARKS 10#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;unsigned int currspeed =0 , window;
drivers/md/md.h +4 -3
@@ -540,12 +540,13 @@ static inline void sysfs_unlink_rdev(strlist_for_each_entry_rcu (rdev, &((mddev)->disks), same_set) struct md_thread { -void (*run) (struct mddev *mddev); +void (*run) (struct md_thread *thread);struct mddev *mddev;wait_queue_head_t wqueue;unsigned long flags;struct task_struct *tsk;unsigned long timeout; +void *private; };#define THREAD_WAKEUP 0
@@ -584,7 +585,7 @@ static inline void safe_put_page(structextern int register_md_personality (struct md_personality *p);extern int unregister_md_personality (struct md_personality *p);extern struct md_thread *md_register_thread ( -void (*run)(struct mddev *mddev), +void (*run)(struct md_thread *thread),struct mddev *mddev,const char *name);extern void md_unregister_thread (struct md_thread **threadp);
@@ -603,7 +604,7 @@ extern void md_super_write(struct mddevextern void md_super_wait (struct mddev *mddev);extern int sync_page_io (struct md_rdev *rdev,sector_t sector,int size,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 int md_allow_write (struct mddev *mddev);extern void md_wait_for_blocked_rdev (struct md_rdev *rdev,struct mddev *mddev);
drivers/md/multipath.c +2 -1
@@ -335,8 +335,9 @@ abort:* 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 bio *bio;unsigned long flags;
drivers/md/raid1.c +2 -1
@@ -2285,8 +2285,9 @@ read_more: } } -static void raid1d (struct mddev *mddev) +static void raid1d (struct md_thread *thread) { +struct mddev *mddev = thread->mddev;struct r1bio *r1_bio;unsigned long flags;struct r1conf *conf = mddev->private;
drivers/md/raid10.c +2 -1
@@ -2667,8 +2667,9 @@ static void handle_write_completed(struc } } -static void raid10d (struct mddev *mddev) +static void raid10d (struct md_thread *thread) { +struct mddev *mddev = thread->mddev;struct r10bio *r10_bio;unsigned long flags;struct r10conf *conf = mddev->private;
drivers/md/raid5.c +2 -1
@@ -4625,8 +4625,9 @@ static int handle_active_stripes(struct* 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. */ -static void raid5d (struct mddev *mddev) +static void raid5d (struct md_thread *thread) { +struct mddev *mddev = thread->mddev;struct r5conf *conf = mddev->private;int handled;struct blk_plug plug;