]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
s390: don't use flush_scheduled_work()
authorTejun Heo <tj@kernel.org>
Fri, 24 Dec 2010 15:00:18 +0000 (16:00 +0100)
committerTejun Heo <tj@kernel.org>
Fri, 24 Dec 2010 15:00:18 +0000 (16:00 +0100)
flush_scheduled_work() is deprecated and scheduled to be removed.

* tape_3590: Create and use tape_3590_wq instead of the system_wq.

* tape_block: Directly flush requeue_task on cleanup instead of using
  flush_scheduled_work().

Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
drivers/s390/char/tape_3590.c
drivers/s390/char/tape_block.c

index deff2c3361e407220c68caf7cae9e29ce665ac3c..fbe361fcd2c09437e49bc8be0b82c56f08739769 100644 (file)
@@ -24,6 +24,8 @@
 #include "tape_std.h"
 #include "tape_3590.h"
 
+static struct workqueue_struct *tape_3590_wq;
+
 /*
  * Pointer to debug area.
  */
@@ -613,7 +615,7 @@ tape_3590_schedule_work(struct tape_device *device, enum tape_op op)
        p->device = tape_get_device(device);
        p->op = op;
 
-       schedule_work(&p->work);
+       queue_work(tape_3590_wq, &p->work);
        return 0;
 }
 
@@ -1629,7 +1631,7 @@ fail_kmalloc:
 static void
 tape_3590_cleanup_device(struct tape_device *device)
 {
-       flush_scheduled_work();
+       flush_workqueue(tape_3590_wq);
        tape_std_unassign(device);
 
        kfree(device->discdata);
@@ -1733,11 +1735,17 @@ tape_3590_init(void)
 #endif
 
        DBF_EVENT(3, "3590 init\n");
+
+       tape_3590_wq = alloc_workqueue("tape_3590", 0, 0);
+       if (!tape_3590_wq)
+               return -ENOMEM;
+
        /* Register driver for 3590 tapes. */
        rc = ccw_driver_register(&tape_3590_driver);
-       if (rc)
+       if (rc) {
+               destroy_workqueue(tape_3590_wq);
                DBF_EVENT(3, "3590 init failed\n");
-       else
+       else
                DBF_EVENT(3, "3590 registered\n");
        return rc;
 }
@@ -1746,7 +1754,7 @@ static void
 tape_3590_exit(void)
 {
        ccw_driver_unregister(&tape_3590_driver);
-
+       destroy_workqueue(tape_3590_wq);
        debug_unregister(TAPE_DBF_AREA);
 }
 
index f0fa9ca5cb2cfe09fda7c4e31179e7b1b7a1d083..55d2d0f4eabc9cbd67a4a6fe1638305f883beb00 100644 (file)
@@ -264,7 +264,7 @@ cleanup_queue:
 void
 tapeblock_cleanup_device(struct tape_device *device)
 {
-       flush_scheduled_work();
+       flush_work_sync(&device->blk_data.requeue_task);
        tape_put_device(device);
 
        if (!device->blk_data.disk) {