scsi: zfcp: move SG table helper from aux to fc and make them static
Since commit 663e0890e3
("[SCSI] zfcp: remove access control tables
interface") these helper functions are only used for auto port scan in
zfcp_fc.c. Also change them to the corresponding namespace prefix.
This is a small cleanup for the miscellaneous catchall compile unit
zfcp_aux.c.
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
6be552276e
commit
58f3ead547
2 changed files with 45 additions and 45 deletions
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* Module interface and handling of zfcp data structures.
|
* Module interface and handling of zfcp data structures.
|
||||||
*
|
*
|
||||||
* Copyright IBM Corp. 2002, 2013
|
* Copyright IBM Corp. 2002, 2017
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -535,45 +535,3 @@ err_out:
|
||||||
zfcp_ccw_adapter_put(adapter);
|
zfcp_ccw_adapter_put(adapter);
|
||||||
return ERR_PTR(retval);
|
return ERR_PTR(retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* zfcp_sg_free_table - free memory used by scatterlists
|
|
||||||
* @sg: pointer to scatterlist
|
|
||||||
* @count: number of scatterlist which are to be free'ed
|
|
||||||
* the scatterlist are expected to reference pages always
|
|
||||||
*/
|
|
||||||
void zfcp_sg_free_table(struct scatterlist *sg, int count)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++, sg++)
|
|
||||||
if (sg)
|
|
||||||
free_page((unsigned long) sg_virt(sg));
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* zfcp_sg_setup_table - init scatterlist and allocate, assign buffers
|
|
||||||
* @sg: pointer to struct scatterlist
|
|
||||||
* @count: number of scatterlists which should be assigned with buffers
|
|
||||||
* of size page
|
|
||||||
*
|
|
||||||
* Returns: 0 on success, -ENOMEM otherwise
|
|
||||||
*/
|
|
||||||
int zfcp_sg_setup_table(struct scatterlist *sg, int count)
|
|
||||||
{
|
|
||||||
void *addr;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
sg_init_table(sg, count);
|
|
||||||
for (i = 0; i < count; i++, sg++) {
|
|
||||||
addr = (void *) get_zeroed_page(GFP_KERNEL);
|
|
||||||
if (!addr) {
|
|
||||||
zfcp_sg_free_table(sg, i);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
sg_set_buf(sg, addr, PAGE_SIZE);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -597,6 +597,48 @@ void zfcp_fc_test_link(struct zfcp_port *port)
|
||||||
put_device(&port->dev);
|
put_device(&port->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* zfcp_fc_sg_free_table - free memory used by scatterlists
|
||||||
|
* @sg: pointer to scatterlist
|
||||||
|
* @count: number of scatterlist which are to be free'ed
|
||||||
|
* the scatterlist are expected to reference pages always
|
||||||
|
*/
|
||||||
|
static void zfcp_fc_sg_free_table(struct scatterlist *sg, int count)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++, sg++)
|
||||||
|
if (sg)
|
||||||
|
free_page((unsigned long) sg_virt(sg));
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* zfcp_fc_sg_setup_table - init scatterlist and allocate, assign buffers
|
||||||
|
* @sg: pointer to struct scatterlist
|
||||||
|
* @count: number of scatterlists which should be assigned with buffers
|
||||||
|
* of size page
|
||||||
|
*
|
||||||
|
* Returns: 0 on success, -ENOMEM otherwise
|
||||||
|
*/
|
||||||
|
static int zfcp_fc_sg_setup_table(struct scatterlist *sg, int count)
|
||||||
|
{
|
||||||
|
void *addr;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
sg_init_table(sg, count);
|
||||||
|
for (i = 0; i < count; i++, sg++) {
|
||||||
|
addr = (void *) get_zeroed_page(GFP_KERNEL);
|
||||||
|
if (!addr) {
|
||||||
|
zfcp_fc_sg_free_table(sg, i);
|
||||||
|
return -ENOMEM;
|
||||||
|
}
|
||||||
|
sg_set_buf(sg, addr, PAGE_SIZE);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static struct zfcp_fc_req *zfcp_fc_alloc_sg_env(int buf_num)
|
static struct zfcp_fc_req *zfcp_fc_alloc_sg_env(int buf_num)
|
||||||
{
|
{
|
||||||
struct zfcp_fc_req *fc_req;
|
struct zfcp_fc_req *fc_req;
|
||||||
|
@ -605,7 +647,7 @@ static struct zfcp_fc_req *zfcp_fc_alloc_sg_env(int buf_num)
|
||||||
if (!fc_req)
|
if (!fc_req)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (zfcp_sg_setup_table(&fc_req->sg_rsp, buf_num)) {
|
if (zfcp_fc_sg_setup_table(&fc_req->sg_rsp, buf_num)) {
|
||||||
kmem_cache_free(zfcp_fc_req_cache, fc_req);
|
kmem_cache_free(zfcp_fc_req_cache, fc_req);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -763,7 +805,7 @@ void zfcp_fc_scan_ports(struct work_struct *work)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
zfcp_sg_free_table(&fc_req->sg_rsp, buf_num);
|
zfcp_fc_sg_free_table(&fc_req->sg_rsp, buf_num);
|
||||||
kmem_cache_free(zfcp_fc_req_cache, fc_req);
|
kmem_cache_free(zfcp_fc_req_cache, fc_req);
|
||||||
out:
|
out:
|
||||||
zfcp_fc_wka_port_put(&adapter->gs->ds);
|
zfcp_fc_wka_port_put(&adapter->gs->ds);
|
||||||
|
|
Loading…
Add table
Reference in a new issue