[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 066f9ea675022fb3acb916c46af609335d168dcd..e003e306f870aebd0ea3a7b41265509dc35a74ee 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 d99c9dc9cfcb64b03c2a937a109410bc0847689e..2511f92302dd55803b03370af11bc291316ef097 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;