forked from Minki/linux
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 <shli@fusionio.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
57c67df488
commit
4ed8731d8e
@ -6641,7 +6641,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;
|
||||
@ -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,
|
||||
const char *name)
|
||||
struct md_thread *md_register_thread(void (*run) (struct md_thread *),
|
||||
struct mddev *mddev, const char *name)
|
||||
{
|
||||
struct md_thread *thread;
|
||||
|
||||
@ -7206,8 +7206,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;
|
||||
|
@ -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)
|
||||
|
||||
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(struct page *p)
|
||||
extern 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 mddev *mddev, struct md_rdev *rdev,
|
||||
extern 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);
|
||||
|
@ -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;
|
||||
|
@ -2294,8 +2294,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;
|
||||
|
@ -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;
|
||||
unsigned long flags;
|
||||
struct r10conf *conf = mddev->private;
|
||||
|
@ -4625,8 +4625,9 @@ static int handle_active_stripes(struct r5conf *conf)
|
||||
* 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;
|
||||
|
Loading…
Reference in New Issue
Block a user