[S390] more workqueue fixes.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
#define PRINTK_HEADER "TAPE_CORE: "
|
||||
|
||||
static void __tape_do_irq (struct ccw_device *, unsigned long, struct irb *);
|
||||
static void tape_delayed_next_request(void * data);
|
||||
static void tape_delayed_next_request(struct work_struct *);
|
||||
|
||||
/*
|
||||
* One list to contain all tape devices of all disciplines, so
|
||||
@@ -272,7 +272,7 @@ __tape_cancel_io(struct tape_device *device, struct tape_request *request)
|
||||
return 0;
|
||||
case -EBUSY:
|
||||
request->status = TAPE_REQUEST_CANCEL;
|
||||
schedule_work(&device->tape_dnr);
|
||||
schedule_delayed_work(&device->tape_dnr, 0);
|
||||
return 0;
|
||||
case -ENODEV:
|
||||
DBF_EXCEPTION(2, "device gone, retry\n");
|
||||
@@ -470,7 +470,7 @@ tape_alloc_device(void)
|
||||
*device->modeset_byte = 0;
|
||||
device->first_minor = -1;
|
||||
atomic_set(&device->ref_count, 1);
|
||||
INIT_WORK(&device->tape_dnr, tape_delayed_next_request, device);
|
||||
INIT_DELAYED_WORK(&device->tape_dnr, tape_delayed_next_request);
|
||||
|
||||
return device;
|
||||
}
|
||||
@@ -724,7 +724,7 @@ __tape_start_io(struct tape_device *device, struct tape_request *request)
|
||||
} else if (rc == -EBUSY) {
|
||||
/* The common I/O subsystem is currently busy. Retry later. */
|
||||
request->status = TAPE_REQUEST_QUEUED;
|
||||
schedule_work(&device->tape_dnr);
|
||||
schedule_delayed_work(&device->tape_dnr, 0);
|
||||
rc = 0;
|
||||
} else {
|
||||
/* Start failed. Remove request and indicate failure. */
|
||||
@@ -790,11 +790,11 @@ __tape_start_next_request(struct tape_device *device)
|
||||
}
|
||||
|
||||
static void
|
||||
tape_delayed_next_request(void *data)
|
||||
tape_delayed_next_request(struct work_struct *work)
|
||||
{
|
||||
struct tape_device * device;
|
||||
struct tape_device *device =
|
||||
container_of(work, struct tape_device, tape_dnr.work);
|
||||
|
||||
device = (struct tape_device *) data;
|
||||
DBF_LH(6, "tape_delayed_next_request(%p)\n", device);
|
||||
spin_lock_irq(get_ccwdev_lock(device->cdev));
|
||||
__tape_start_next_request(device);
|
||||
|
Reference in New Issue
Block a user