aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_fc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/s390/scsi/zfcp_fc.c')
-rw-r--r--drivers/s390/scsi/zfcp_fc.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/drivers/s390/scsi/zfcp_fc.c b/drivers/s390/scsi/zfcp_fc.c
index 6d0fef92567..acadcd3c276 100644
--- a/drivers/s390/scsi/zfcp_fc.c
+++ b/drivers/s390/scsi/zfcp_fc.c
@@ -25,14 +25,6 @@ static u32 rscn_range_mask[] = {
25 [RSCN_FABRIC_ADDRESS] = 0x000000, 25 [RSCN_FABRIC_ADDRESS] = 0x000000,
26}; 26};
27 27
28struct ct_iu_gpn_ft_req {
29 struct ct_hdr header;
30 u8 flags;
31 u8 domain_id_scope;
32 u8 area_id_scope;
33 u8 fc4_type;
34} __attribute__ ((packed));
35
36struct gpn_ft_resp_acc { 28struct gpn_ft_resp_acc {
37 u8 control; 29 u8 control;
38 u8 port_id[3]; 30 u8 port_id[3];
@@ -322,8 +314,7 @@ int static zfcp_fc_ns_gid_pn_request(struct zfcp_erp_action *erp_action,
322 init_completion(&compl_rec.done); 314 init_completion(&compl_rec.done);
323 compl_rec.handler = zfcp_fc_ns_gid_pn_eval; 315 compl_rec.handler = zfcp_fc_ns_gid_pn_eval;
324 compl_rec.handler_data = (unsigned long) gid_pn; 316 compl_rec.handler_data = (unsigned long) gid_pn;
325 ret = zfcp_fsf_send_ct(&gid_pn->ct, adapter->pool.fsf_req_erp, 317 ret = zfcp_fsf_send_ct(&gid_pn->ct, adapter->pool.erp_req, erp_action);
326 erp_action);
327 if (!ret) 318 if (!ret)
328 wait_for_completion(&compl_rec.done); 319 wait_for_completion(&compl_rec.done);
329 return ret; 320 return ret;
@@ -340,7 +331,7 @@ int zfcp_fc_ns_gid_pn(struct zfcp_erp_action *erp_action)
340 struct zfcp_gid_pn_data *gid_pn; 331 struct zfcp_gid_pn_data *gid_pn;
341 struct zfcp_adapter *adapter = erp_action->adapter; 332 struct zfcp_adapter *adapter = erp_action->adapter;
342 333
343 gid_pn = mempool_alloc(adapter->pool.data_gid_pn, GFP_ATOMIC); 334 gid_pn = mempool_alloc(adapter->pool.gid_pn_data, GFP_ATOMIC);
344 if (!gid_pn) 335 if (!gid_pn)
345 return -ENOMEM; 336 return -ENOMEM;
346 337
@@ -354,7 +345,7 @@ int zfcp_fc_ns_gid_pn(struct zfcp_erp_action *erp_action)
354 345
355 zfcp_wka_port_put(&adapter->gs->ds); 346 zfcp_wka_port_put(&adapter->gs->ds);
356out: 347out:
357 mempool_free(gid_pn, adapter->pool.data_gid_pn); 348 mempool_free(gid_pn, adapter->pool.gid_pn_data);
358 return ret; 349 return ret;
359} 350}
360 351
@@ -497,7 +488,7 @@ static void zfcp_free_sg_env(struct zfcp_gpn_ft *gpn_ft, int buf_num)
497{ 488{
498 struct scatterlist *sg = &gpn_ft->sg_req; 489 struct scatterlist *sg = &gpn_ft->sg_req;
499 490
500 kfree(sg_virt(sg)); /* free request buffer */ 491 kmem_cache_free(zfcp_data.gpn_ft_cache, sg_virt(sg));
501 zfcp_sg_free_table(gpn_ft->sg_resp, buf_num); 492 zfcp_sg_free_table(gpn_ft->sg_resp, buf_num);
502 493
503 kfree(gpn_ft); 494 kfree(gpn_ft);
@@ -512,7 +503,7 @@ static struct zfcp_gpn_ft *zfcp_alloc_sg_env(int buf_num)
512 if (!gpn_ft) 503 if (!gpn_ft)
513 return NULL; 504 return NULL;
514 505
515 req = kzalloc(sizeof(struct ct_iu_gpn_ft_req), GFP_KERNEL); 506 req = kmem_cache_alloc(zfcp_data.gpn_ft_cache, GFP_KERNEL);
516 if (!req) { 507 if (!req) {
517 kfree(gpn_ft); 508 kfree(gpn_ft);
518 gpn_ft = NULL; 509 gpn_ft = NULL;