Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 135623
b: refs/heads/master
c: 56e25e9
h: refs/heads/master
i:
  135621: 3047180
  135619: cd34f4d
  135615: 5f99bbe
v: v3
  • Loading branch information
Peter Oberparleiter authored and Martin Schwidefsky committed Mar 26, 2009
1 parent e3f86eb commit 9a332cf
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0cc110651bed4612074eeb445a23418a5ee34cd0
refs/heads/master: 56e25e9777bf15365293e27a3256eb9214a11edf
19 changes: 16 additions & 3 deletions trunk/drivers/s390/cio/css.c
Original file line number Diff line number Diff line change
Expand Up @@ -533,17 +533,30 @@ static int reprobe_subchannel(struct subchannel_id schid, void *data)
return ret;
}

static void reprobe_after_idle(struct work_struct *unused)
{
/* Make sure initial subchannel scan is done. */
wait_event(ccw_device_init_wq,
atomic_read(&ccw_device_init_count) == 0);
if (need_reprobe)
css_schedule_reprobe();
}

static DECLARE_WORK(reprobe_idle_work, reprobe_after_idle);

/* Work function used to reprobe all unregistered subchannels. */
static void reprobe_all(struct work_struct *unused)
{
int ret;

CIO_MSG_EVENT(4, "reprobe start\n");

need_reprobe = 0;
/* Make sure initial subchannel scan is done. */
wait_event(ccw_device_init_wq,
atomic_read(&ccw_device_init_count) == 0);
if (atomic_read(&ccw_device_init_count) != 0) {
queue_work(ccw_device_work, &reprobe_idle_work);
return;
}
need_reprobe = 0;
ret = for_each_subchannel_staged(NULL, reprobe_subchannel, NULL);

CIO_MSG_EVENT(4, "reprobe done (rc=%d, need_reprobe=%d)\n", ret,
Expand Down

0 comments on commit 9a332cf

Please sign in to comment.