[SCSI] zfcp: Move qdio setup from erp to zfcp_qdio.c
authorChristof Schmitt <christof.schmitt@de.ibm.com>
Thu, 2 Dec 2010 14:16:17 +0000 (15:16 +0100)
committerJames Bottomley <James.Bottomley@suse.de>
Tue, 21 Dec 2010 18:24:47 +0000 (12:24 -0600)
Initialization of the qdio waitqueue should happen when the qdio data
is initialized and the QDIOUP flag should be handled in the qdio code
as well. Adjust the code accordingly and remove the superfluos
function zfcp_erp_adapter_strategy_open_qdio.

Reviewed-by: Steffen Maier <maier@linux.vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/s390/scsi/zfcp_erp.c
drivers/s390/scsi/zfcp_qdio.c

index 066f9ea..e003e30 100644 (file)
@@ -644,17 +644,6 @@ static void zfcp_erp_wakeup(struct zfcp_adapter *adapter)
        read_unlock_irqrestore(&adapter->erp_lock, flags);
 }
 
-static int zfcp_erp_adapter_strategy_open_qdio(struct zfcp_erp_action *act)
-{
-       struct zfcp_qdio *qdio = act->adapter->qdio;
-
-       if (zfcp_qdio_open(qdio))
-               return ZFCP_ERP_FAILED;
-       init_waitqueue_head(&qdio->req_q_wq);
-       atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &act->adapter->status);
-       return ZFCP_ERP_SUCCEEDED;
-}
-
 static void zfcp_erp_enqueue_ptp_port(struct zfcp_adapter *adapter)
 {
        struct zfcp_port *port;
@@ -778,7 +767,7 @@ static int zfcp_erp_adapter_strategy_open(struct zfcp_erp_action *act)
 {
        struct zfcp_adapter *adapter = act->adapter;
 
-       if (zfcp_erp_adapter_strategy_open_qdio(act)) {
+       if (zfcp_qdio_open(adapter->qdio)) {
                atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
                                  ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED,
                                  &adapter->status);
index d99c9dc..2511f92 100644 (file)
@@ -307,6 +307,7 @@ static int zfcp_qdio_allocate(struct zfcp_qdio *qdio)
                return -ENOMEM;
 
        zfcp_qdio_setup_init_data(&init_data, qdio);
+       init_waitqueue_head(&qdio->req_q_wq);
 
        return qdio_allocate(&init_data);
 }
@@ -391,6 +392,7 @@ int zfcp_qdio_open(struct zfcp_qdio *qdio)
        /* set index of first avalable SBALS / number of available SBALS */
        qdio->req_q_idx = 0;
        atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q);
+       atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status);
 
        return 0;