staging: unisys: visorhba: remove unused (and broken) logic
authorTim Sell <Timothy.Sell@unisys.com>
Thu, 12 May 2016 13:14:42 +0000 (09:14 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Jun 2016 05:55:19 +0000 (22:55 -0700)
The handling of CMD_NOTIFYGUEST_TYPE messages from the IO partition appears
to be only partially implemented, but fortunately it is never used in our
current environment.  This patch deletes the unused code.

Signed-off-by: Tim Sell <Timothy.Sell@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visorhba/visorhba_main.c

index c4a9f325c34af7fca635aa1ffaf02ea04f1cd3c4..5ea6bb2945e90c45df32bf8589f9e0ed705c4b47 100644 (file)
@@ -100,14 +100,6 @@ struct scsipending {
        char cmdtype;           /* Type of pointer that is being stored */
 };
 
-/* Work Data for dar_work_queue */
-struct diskaddremove {
-       u8 add;                 /* 0-remove, 1-add */
-       struct Scsi_Host *shost; /* Scsi Host for this visorhba instance */
-       u32 channel, id, lun;   /* Disk Path */
-       struct diskaddremove *next;
-};
-
 /* Each scsi_host has a host_data area that contains this struct. */
 struct visorhba_devdata {
        struct Scsi_Host *scsihost;
@@ -967,62 +959,6 @@ complete_scsi_command(struct uiscmdrsp *cmdrsp, struct scsi_cmnd *scsicmd)
        scsicmd->scsi_done(scsicmd);
 }
 
-static struct work_struct dar_work_queue;
-static struct diskaddremove *dar_work_queue_head;
-static spinlock_t dar_work_queue_lock; /* Lock to protet dar_work_queue_head */
-static unsigned short dar_work_queue_sched;
-
-/**
- *     queue_disk_add_remove - IOSP has sent us a add/remove request
- *     @dar: disk add/remove request
- *
- *     Queue the work needed to add/remove a disk.
- *     Returns void
- */
-static inline void queue_disk_add_remove(struct diskaddremove *dar)
-{
-       unsigned long flags;
-
-       spin_lock_irqsave(&dar_work_queue_lock, flags);
-       if (!dar_work_queue_head) {
-               dar_work_queue_head = dar;
-               dar->next = NULL;
-       } else {
-               dar->next = dar_work_queue_head;
-               dar_work_queue_head = dar;
-       }
-       if (!dar_work_queue_sched) {
-               schedule_work(&dar_work_queue);
-               dar_work_queue_sched = 1;
-       }
-       spin_unlock_irqrestore(&dar_work_queue_lock, flags);
-}
-
-/**
- *     process_disk_notify - IOSP has sent a process disk notify event
- *     @shost: Scsi hot
- *     @cmdrsp: Response from the IOSP
- *
- *     Queue it to the work queue.
- *     Return void.
- */
-static void process_disk_notify(struct Scsi_Host *shost,
-                               struct uiscmdrsp *cmdrsp)
-{
-       struct diskaddremove *dar;
-
-       dar = kzalloc(sizeof(*dar), GFP_ATOMIC);
-       if (!dar)
-               return;
-
-       dar->add = cmdrsp->disknotify.add;
-       dar->shost = shost;
-       dar->channel = cmdrsp->disknotify.channel;
-       dar->id = cmdrsp->disknotify.id;
-       dar->lun = cmdrsp->disknotify.lun;
-       queue_disk_add_remove(dar);
-}
-
 /**
  *     drain_queue - pull responses out of iochannel
  *     @cmdrsp: Response from the IOSP
@@ -1035,7 +971,6 @@ static void
 drain_queue(struct uiscmdrsp *cmdrsp, struct visorhba_devdata *devdata)
 {
        struct scsi_cmnd *scsicmd;
-       struct Scsi_Host *shost = devdata->scsihost;
 
        while (1) {
                if (!visorchannel_signalremove(devdata->dev->visorchannel,
@@ -1059,15 +994,10 @@ drain_queue(struct uiscmdrsp *cmdrsp, struct visorhba_devdata *devdata)
                                break;
                        complete_taskmgmt_command(&devdata->idr, cmdrsp,
                                                  cmdrsp->scsitaskmgmt.result);
-               } else if (cmdrsp->cmdtype == CMD_NOTIFYGUEST_TYPE) {
-                       /* The vHba pointer has no meaning in a
-                        * guest partition. Let's be safe and set it
-                        * to NULL now. Do not use it here!
-                        */
-                       cmdrsp->disknotify.v_hba = NULL;
-                       process_disk_notify(shost, cmdrsp);
-               }
-               /* cmdrsp is now available for resuse */
+               } else if (cmdrsp->cmdtype == CMD_NOTIFYGUEST_TYPE)
+                       dev_err_once(&devdata->dev->device,
+                                    "ignoring unsupported NOTIFYGUEST\n");
+               /* cmdrsp is now available for re-use */
        }
 }