aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2010-12-02 09:16:17 -0500
committerJames Bottomley <James.Bottomley@suse.de>2010-12-21 13:24:47 -0500
commit3d63d3b4fb5fb3674f2d97725e187cbfa22562bc (patch)
treebcdeec02d675f980eb9f60f15833e50914f4772c
parentea4a3a6ac40e2a585654808d4aefb39a6d57dca0 (diff)
[SCSI] zfcp: Move qdio setup from erp to zfcp_qdio.c
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>
-rw-r--r--drivers/s390/scsi/zfcp_erp.c13
-rw-r--r--drivers/s390/scsi/zfcp_qdio.c2
2 files changed, 3 insertions, 12 deletions
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c
index 066f9ea6750..e003e306f87 100644
--- a/drivers/s390/scsi/zfcp_erp.c
+++ b/drivers/s390/scsi/zfcp_erp.c
@@ -644,17 +644,6 @@ static void zfcp_erp_wakeup(struct zfcp_adapter *adapter)
644 read_unlock_irqrestore(&adapter->erp_lock, flags); 644 read_unlock_irqrestore(&adapter->erp_lock, flags);
645} 645}
646 646
647static int zfcp_erp_adapter_strategy_open_qdio(struct zfcp_erp_action *act)
648{
649 struct zfcp_qdio *qdio = act->adapter->qdio;
650
651 if (zfcp_qdio_open(qdio))
652 return ZFCP_ERP_FAILED;
653 init_waitqueue_head(&qdio->req_q_wq);
654 atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &act->adapter->status);
655 return ZFCP_ERP_SUCCEEDED;
656}
657
658static void zfcp_erp_enqueue_ptp_port(struct zfcp_adapter *adapter) 647static void zfcp_erp_enqueue_ptp_port(struct zfcp_adapter *adapter)
659{ 648{
660 struct zfcp_port *port; 649 struct zfcp_port *port;
@@ -778,7 +767,7 @@ static int zfcp_erp_adapter_strategy_open(struct zfcp_erp_action *act)
778{ 767{
779 struct zfcp_adapter *adapter = act->adapter; 768 struct zfcp_adapter *adapter = act->adapter;
780 769
781 if (zfcp_erp_adapter_strategy_open_qdio(act)) { 770 if (zfcp_qdio_open(adapter->qdio)) {
782 atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK | 771 atomic_clear_mask(ZFCP_STATUS_ADAPTER_XCONFIG_OK |
783 ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED, 772 ZFCP_STATUS_ADAPTER_LINK_UNPLUGGED,
784 &adapter->status); 773 &adapter->status);
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c
index d99c9dc9cfc..2511f92302d 100644
--- a/drivers/s390/scsi/zfcp_qdio.c
+++ b/drivers/s390/scsi/zfcp_qdio.c
@@ -307,6 +307,7 @@ static int zfcp_qdio_allocate(struct zfcp_qdio *qdio)
307 return -ENOMEM; 307 return -ENOMEM;
308 308
309 zfcp_qdio_setup_init_data(&init_data, qdio); 309 zfcp_qdio_setup_init_data(&init_data, qdio);
310 init_waitqueue_head(&qdio->req_q_wq);
310 311
311 return qdio_allocate(&init_data); 312 return qdio_allocate(&init_data);
312} 313}
@@ -391,6 +392,7 @@ int zfcp_qdio_open(struct zfcp_qdio *qdio)
391 /* set index of first avalable SBALS / number of available SBALS */ 392 /* set index of first avalable SBALS / number of available SBALS */
392 qdio->req_q_idx = 0; 393 qdio->req_q_idx = 0;
393 atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q); 394 atomic_set(&qdio->req_q_free, QDIO_MAX_BUFFERS_PER_Q);
395 atomic_set_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &qdio->adapter->status);
394 396
395 return 0; 397 return 0;
396 398