aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_aux.c
diff options
context:
space:
mode:
authorChristof Schmitt <christof.schmitt@de.ibm.com>2009-08-18 09:43:20 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-09-05 09:49:28 -0400
commit799b76d09aeee558d18c1f5b93e63f58f1d1fc11 (patch)
treea1a05faa773b329246a4fa97ba7c0ac5201b5d40 /drivers/s390/scsi/zfcp_aux.c
parent564e1c86c810f9ccfe4300afa402815e3db4886d (diff)
[SCSI] zfcp: Decouple gid_pn requests from erp
Don't let the erp wait for gid_pn requests to complete. Instead, queue the gid_pn work, exit erp and let the finished gid_pn work trigger a new port reopen. Reviewed-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_aux.c')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index ed7211ef04eb..572dcd67e713 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -362,6 +362,11 @@ static int zfcp_allocate_low_mem_buffers(struct zfcp_adapter *adapter)
362 if (!adapter->pool.erp_req) 362 if (!adapter->pool.erp_req)
363 return -ENOMEM; 363 return -ENOMEM;
364 364
365 adapter->pool.gid_pn_req =
366 mempool_create_kmalloc_pool(1, sizeof(struct zfcp_fsf_req));
367 if (!adapter->pool.gid_pn_req)
368 return -ENOMEM;
369
365 adapter->pool.scsi_req = 370 adapter->pool.scsi_req =
366 mempool_create_kmalloc_pool(1, sizeof(struct zfcp_fsf_req)); 371 mempool_create_kmalloc_pool(1, sizeof(struct zfcp_fsf_req));
367 if (!adapter->pool.scsi_req) 372 if (!adapter->pool.scsi_req)
@@ -379,7 +384,7 @@ static int zfcp_allocate_low_mem_buffers(struct zfcp_adapter *adapter)
379 return -ENOMEM; 384 return -ENOMEM;
380 385
381 adapter->pool.qtcb_pool = 386 adapter->pool.qtcb_pool =
382 mempool_create_slab_pool(3, zfcp_data.qtcb_cache); 387 mempool_create_slab_pool(4, zfcp_data.qtcb_cache);
383 if (!adapter->pool.qtcb_pool) 388 if (!adapter->pool.qtcb_pool)
384 return -ENOMEM; 389 return -ENOMEM;
385 390
@@ -652,7 +657,7 @@ struct zfcp_port *zfcp_port_enqueue(struct zfcp_adapter *adapter, u64 wwpn,
652 657
653 init_waitqueue_head(&port->remove_wq); 658 init_waitqueue_head(&port->remove_wq);
654 INIT_LIST_HEAD(&port->unit_list_head); 659 INIT_LIST_HEAD(&port->unit_list_head);
655 INIT_WORK(&port->gid_pn_work, zfcp_erp_port_strategy_open_lookup); 660 INIT_WORK(&port->gid_pn_work, zfcp_fc_port_did_lookup);
656 INIT_WORK(&port->test_link_work, zfcp_fc_link_test_work); 661 INIT_WORK(&port->test_link_work, zfcp_fc_link_test_work);
657 INIT_WORK(&port->rport_work, zfcp_scsi_rport_work); 662 INIT_WORK(&port->rport_work, zfcp_scsi_rport_work);
658 663