[SCSI] fix scsi process problems and clean up the target reap issues
[firefly-linux-kernel-4.4.55.git] / drivers / scsi / scsi_lib.c
index eab303d148d8b8d9d8252c2fffcd6517ee5a0504..3042520c413cc83a46ca038fe1e4f9b39f1122c9 100644 (file)
@@ -2257,61 +2257,3 @@ scsi_target_unblock(struct device *dev)
                device_for_each_child(dev, NULL, target_unblock);
 }
 EXPORT_SYMBOL_GPL(scsi_target_unblock);
-
-
-struct work_queue_work {
-       struct work_struct      work;
-       void                    (*fn)(void *);
-       void                    *data;
-};
-
-static void execute_in_process_context_work(void *data)
-{
-       void (*fn)(void *data);
-       struct work_queue_work *wqw = data;
-
-       fn = wqw->fn;
-       data = wqw->data;
-
-       kfree(wqw);
-
-       fn(data);
-}
-
-/**
- * scsi_execute_in_process_context - reliably execute the routine with user context
- * @fn:                the function to execute
- * @data:      data to pass to the function
- *
- * Executes the function immediately if process context is available,
- * otherwise schedules the function for delayed execution.
- *
- * Returns:    0 - function was executed
- *             1 - function was scheduled for execution
- *             <0 - error
- */
-int scsi_execute_in_process_context(void (*fn)(void *data), void *data)
-{
-       struct work_queue_work *wqw;
-
-       if (!in_interrupt()) {
-               fn(data);
-               return 0;
-       }
-
-       wqw = kmalloc(sizeof(struct work_queue_work), GFP_ATOMIC);
-
-       if (unlikely(!wqw)) {
-               printk(KERN_ERR "Failed to allocate memory\n");
-               WARN_ON(1);
-               return -ENOMEM;
-       }
-
-       INIT_WORK(&wqw->work, execute_in_process_context_work, wqw);
-       wqw->fn = fn;
-       wqw->data = data;
-       schedule_work(&wqw->work);
-
-       return 1;
-}
-EXPORT_SYMBOL_GPL(scsi_execute_in_process_context);