Skip to content

Commit

Permalink
MD: change the parameter of md thread
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Shaohua Li authored and NeilBrown committed Oct 11, 2012
1 parent 57c67df commit 4ed8731
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 11 deletions.
9 changes: 5 additions & 4 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;

Expand Down Expand Up @@ -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;
Expand Down
7 changes: 4 additions & 3 deletions drivers/md/md.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down
3 changes: 2 additions & 1 deletion drivers/md/multipath.c
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,9 @@ static int multipath_remove_disk(struct mddev *mddev, struct md_rdev *rdev)
* 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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/md/raid1.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
unsigned long flags;
struct r1conf *conf = mddev->private;
Expand Down
3 changes: 2 additions & 1 deletion drivers/md/raid10.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/md/raid5.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 4ed8731

Please sign in to comment.