diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2006-12-06 14:18:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-06 17:51:14 -0500 |
commit | 4927b3f74c6a2fd92226dcf1542a598be9738808 (patch) | |
tree | aee712f33f32a6dc992434773fd0de41e335078e /drivers/s390 | |
parent | f9e9dcb38f5106fa8cdac04a9e967d5487f1cd20 (diff) |
[PATCH] More work_struct induced breakage (s390)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd.c | 10 | ||||
-rw-r--r-- | drivers/s390/cio/css.c | 9 | ||||
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 6 | ||||
-rw-r--r-- | drivers/s390/net/lcs.c | 8 | ||||
-rw-r--r-- | drivers/s390/net/qeth_main.c | 6 |
5 files changed, 18 insertions, 21 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index a2cef57d7bcb..2af2d9b53d18 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -54,7 +54,7 @@ static void dasd_flush_request_queue(struct dasd_device *); | |||
54 | static void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *); | 54 | static void dasd_int_handler(struct ccw_device *, unsigned long, struct irb *); |
55 | static int dasd_flush_ccw_queue(struct dasd_device *, int); | 55 | static int dasd_flush_ccw_queue(struct dasd_device *, int); |
56 | static void dasd_tasklet(struct dasd_device *); | 56 | static void dasd_tasklet(struct dasd_device *); |
57 | static void do_kick_device(void *data); | 57 | static void do_kick_device(struct work_struct *); |
58 | 58 | ||
59 | /* | 59 | /* |
60 | * SECTION: Operations on the device structure. | 60 | * SECTION: Operations on the device structure. |
@@ -100,7 +100,7 @@ dasd_alloc_device(void) | |||
100 | (unsigned long) device); | 100 | (unsigned long) device); |
101 | INIT_LIST_HEAD(&device->ccw_queue); | 101 | INIT_LIST_HEAD(&device->ccw_queue); |
102 | init_timer(&device->timer); | 102 | init_timer(&device->timer); |
103 | INIT_WORK(&device->kick_work, do_kick_device, device); | 103 | INIT_WORK(&device->kick_work, do_kick_device); |
104 | device->state = DASD_STATE_NEW; | 104 | device->state = DASD_STATE_NEW; |
105 | device->target = DASD_STATE_NEW; | 105 | device->target = DASD_STATE_NEW; |
106 | 106 | ||
@@ -407,11 +407,9 @@ dasd_change_state(struct dasd_device *device) | |||
407 | * event daemon. | 407 | * event daemon. |
408 | */ | 408 | */ |
409 | static void | 409 | static void |
410 | do_kick_device(void *data) | 410 | do_kick_device(struct work_struct *work) |
411 | { | 411 | { |
412 | struct dasd_device *device; | 412 | struct dasd_device *device = container_of(work, struct dasd_device, kick_work); |
413 | |||
414 | device = (struct dasd_device *) data; | ||
415 | dasd_change_state(device); | 413 | dasd_change_state(device); |
416 | dasd_schedule_bh(device); | 414 | dasd_schedule_bh(device); |
417 | dasd_put_device(device); | 415 | dasd_put_device(device); |
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index ad7f7e1c0163..26cf2f5ae2e7 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c | |||
@@ -334,7 +334,7 @@ static LIST_HEAD(slow_subchannels_head); | |||
334 | static DEFINE_SPINLOCK(slow_subchannel_lock); | 334 | static DEFINE_SPINLOCK(slow_subchannel_lock); |
335 | 335 | ||
336 | static void | 336 | static void |
337 | css_trigger_slow_path(void) | 337 | css_trigger_slow_path(struct work_struct *unused) |
338 | { | 338 | { |
339 | CIO_TRACE_EVENT(4, "slowpath"); | 339 | CIO_TRACE_EVENT(4, "slowpath"); |
340 | 340 | ||
@@ -359,8 +359,7 @@ css_trigger_slow_path(void) | |||
359 | spin_unlock_irq(&slow_subchannel_lock); | 359 | spin_unlock_irq(&slow_subchannel_lock); |
360 | } | 360 | } |
361 | 361 | ||
362 | typedef void (*workfunc)(void *); | 362 | DECLARE_WORK(slow_path_work, css_trigger_slow_path); |
363 | DECLARE_WORK(slow_path_work, (workfunc)css_trigger_slow_path, NULL); | ||
364 | struct workqueue_struct *slow_path_wq; | 363 | struct workqueue_struct *slow_path_wq; |
365 | 364 | ||
366 | /* Reprobe subchannel if unregistered. */ | 365 | /* Reprobe subchannel if unregistered. */ |
@@ -397,7 +396,7 @@ static int reprobe_subchannel(struct subchannel_id schid, void *data) | |||
397 | } | 396 | } |
398 | 397 | ||
399 | /* Work function used to reprobe all unregistered subchannels. */ | 398 | /* Work function used to reprobe all unregistered subchannels. */ |
400 | static void reprobe_all(void *data) | 399 | static void reprobe_all(struct work_struct *unused) |
401 | { | 400 | { |
402 | int ret; | 401 | int ret; |
403 | 402 | ||
@@ -413,7 +412,7 @@ static void reprobe_all(void *data) | |||
413 | need_reprobe); | 412 | need_reprobe); |
414 | } | 413 | } |
415 | 414 | ||
416 | DECLARE_WORK(css_reprobe_work, reprobe_all, NULL); | 415 | DECLARE_WORK(css_reprobe_work, reprobe_all); |
417 | 416 | ||
418 | /* Schedule reprobing of all unregistered subchannels. */ | 417 | /* Schedule reprobing of all unregistered subchannels. */ |
419 | void css_schedule_reprobe(void) | 418 | void css_schedule_reprobe(void) |
diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 6a54334ffe09..e4dc947e74e9 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c | |||
@@ -37,7 +37,7 @@ | |||
37 | #include "ap_bus.h" | 37 | #include "ap_bus.h" |
38 | 38 | ||
39 | /* Some prototypes. */ | 39 | /* Some prototypes. */ |
40 | static void ap_scan_bus(void *); | 40 | static void ap_scan_bus(struct work_struct *); |
41 | static void ap_poll_all(unsigned long); | 41 | static void ap_poll_all(unsigned long); |
42 | static void ap_poll_timeout(unsigned long); | 42 | static void ap_poll_timeout(unsigned long); |
43 | static int ap_poll_thread_start(void); | 43 | static int ap_poll_thread_start(void); |
@@ -71,7 +71,7 @@ static struct device *ap_root_device = NULL; | |||
71 | static struct workqueue_struct *ap_work_queue; | 71 | static struct workqueue_struct *ap_work_queue; |
72 | static struct timer_list ap_config_timer; | 72 | static struct timer_list ap_config_timer; |
73 | static int ap_config_time = AP_CONFIG_TIME; | 73 | static int ap_config_time = AP_CONFIG_TIME; |
74 | static DECLARE_WORK(ap_config_work, ap_scan_bus, NULL); | 74 | static DECLARE_WORK(ap_config_work, ap_scan_bus); |
75 | 75 | ||
76 | /** | 76 | /** |
77 | * Tasklet & timer for AP request polling. | 77 | * Tasklet & timer for AP request polling. |
@@ -732,7 +732,7 @@ static void ap_device_release(struct device *dev) | |||
732 | kfree(ap_dev); | 732 | kfree(ap_dev); |
733 | } | 733 | } |
734 | 734 | ||
735 | static void ap_scan_bus(void *data) | 735 | static void ap_scan_bus(struct work_struct *unused) |
736 | { | 736 | { |
737 | struct ap_device *ap_dev; | 737 | struct ap_device *ap_dev; |
738 | struct device *dev; | 738 | struct device *dev; |
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c index 08d4e47070bd..e5665b6743a1 100644 --- a/drivers/s390/net/lcs.c +++ b/drivers/s390/net/lcs.c | |||
@@ -67,7 +67,7 @@ static char debug_buffer[255]; | |||
67 | * Some prototypes. | 67 | * Some prototypes. |
68 | */ | 68 | */ |
69 | static void lcs_tasklet(unsigned long); | 69 | static void lcs_tasklet(unsigned long); |
70 | static void lcs_start_kernel_thread(struct lcs_card *card); | 70 | static void lcs_start_kernel_thread(struct work_struct *); |
71 | static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); | 71 | static void lcs_get_frames_cb(struct lcs_channel *, struct lcs_buffer *); |
72 | static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); | 72 | static int lcs_send_delipm(struct lcs_card *, struct lcs_ipm_list *); |
73 | static int lcs_recovery(void *ptr); | 73 | static int lcs_recovery(void *ptr); |
@@ -1724,8 +1724,9 @@ lcs_stopcard(struct lcs_card *card) | |||
1724 | * Kernel Thread helper functions for LGW initiated commands | 1724 | * Kernel Thread helper functions for LGW initiated commands |
1725 | */ | 1725 | */ |
1726 | static void | 1726 | static void |
1727 | lcs_start_kernel_thread(struct lcs_card *card) | 1727 | lcs_start_kernel_thread(struct work_struct *work) |
1728 | { | 1728 | { |
1729 | struct lcs_card *card = container_of(work, struct lcs_card, kernel_thread_starter); | ||
1729 | LCS_DBF_TEXT(5, trace, "krnthrd"); | 1730 | LCS_DBF_TEXT(5, trace, "krnthrd"); |
1730 | if (lcs_do_start_thread(card, LCS_RECOVERY_THREAD)) | 1731 | if (lcs_do_start_thread(card, LCS_RECOVERY_THREAD)) |
1731 | kernel_thread(lcs_recovery, (void *) card, SIGCHLD); | 1732 | kernel_thread(lcs_recovery, (void *) card, SIGCHLD); |
@@ -2053,8 +2054,7 @@ lcs_probe_device(struct ccwgroup_device *ccwgdev) | |||
2053 | ccwgdev->cdev[0]->handler = lcs_irq; | 2054 | ccwgdev->cdev[0]->handler = lcs_irq; |
2054 | ccwgdev->cdev[1]->handler = lcs_irq; | 2055 | ccwgdev->cdev[1]->handler = lcs_irq; |
2055 | card->gdev = ccwgdev; | 2056 | card->gdev = ccwgdev; |
2056 | INIT_WORK(&card->kernel_thread_starter, | 2057 | INIT_WORK(&card->kernel_thread_starter, lcs_start_kernel_thread); |
2057 | (void *) lcs_start_kernel_thread, card); | ||
2058 | card->thread_start_mask = 0; | 2058 | card->thread_start_mask = 0; |
2059 | card->thread_allowed_mask = 0; | 2059 | card->thread_allowed_mask = 0; |
2060 | card->thread_running_mask = 0; | 2060 | card->thread_running_mask = 0; |
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 7fdc5272c446..2bde4f1fb9c2 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -1039,8 +1039,9 @@ qeth_do_start_thread(struct qeth_card *card, unsigned long thread) | |||
1039 | } | 1039 | } |
1040 | 1040 | ||
1041 | static void | 1041 | static void |
1042 | qeth_start_kernel_thread(struct qeth_card *card) | 1042 | qeth_start_kernel_thread(struct work_struct *work) |
1043 | { | 1043 | { |
1044 | struct qeth_card *card = container_of(work, struct qeth_card, kernel_thread_starter); | ||
1044 | QETH_DBF_TEXT(trace , 2, "strthrd"); | 1045 | QETH_DBF_TEXT(trace , 2, "strthrd"); |
1045 | 1046 | ||
1046 | if (card->read.state != CH_STATE_UP && | 1047 | if (card->read.state != CH_STATE_UP && |
@@ -1103,8 +1104,7 @@ qeth_setup_card(struct qeth_card *card) | |||
1103 | card->thread_start_mask = 0; | 1104 | card->thread_start_mask = 0; |
1104 | card->thread_allowed_mask = 0; | 1105 | card->thread_allowed_mask = 0; |
1105 | card->thread_running_mask = 0; | 1106 | card->thread_running_mask = 0; |
1106 | INIT_WORK(&card->kernel_thread_starter, | 1107 | INIT_WORK(&card->kernel_thread_starter, qeth_start_kernel_thread); |
1107 | (void *)qeth_start_kernel_thread,card); | ||
1108 | INIT_LIST_HEAD(&card->ip_list); | 1108 | INIT_LIST_HEAD(&card->ip_list); |
1109 | card->ip_tbd_list = kmalloc(sizeof(struct list_head), GFP_KERNEL); | 1109 | card->ip_tbd_list = kmalloc(sizeof(struct list_head), GFP_KERNEL); |
1110 | if (!card->ip_tbd_list) { | 1110 | if (!card->ip_tbd_list) { |