diff options
author | Jens Axboe <jens.axboe@oracle.com> | 2007-10-23 03:17:53 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2007-10-23 03:17:53 -0400 |
commit | 73fc4f0d2ce4a92c36b00649c58e0a068a6cdfa4 (patch) | |
tree | d13ebf925ccfbd5cf4b12ccf703a6a3bb09bcfcb /drivers/s390 | |
parent | 5edadbd0ae35d2daabaf6b44f2c58d67d4021ed2 (diff) |
s390 zfcp: sg fixups
Based on initial patch from Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/scsi/zfcp_aux.c | 1 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 4 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 10 |
3 files changed, 9 insertions, 6 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 7507067351bd..fd5d0c1570df 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
@@ -559,6 +559,7 @@ zfcp_sg_list_alloc(struct zfcp_sg_list *sg_list, size_t size) | |||
559 | retval = -ENOMEM; | 559 | retval = -ENOMEM; |
560 | goto out; | 560 | goto out; |
561 | } | 561 | } |
562 | sg_init_table(sg_list->sg, sg_list->count); | ||
562 | 563 | ||
563 | for (i = 0, sg = sg_list->sg; i < sg_list->count; i++, sg++) { | 564 | for (i = 0, sg = sg_list->sg; i < sg_list->count; i++, sg++) { |
564 | sg->length = min(size, PAGE_SIZE); | 565 | sg->length = min(size, PAGE_SIZE); |
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 57cac7008e0b..326e7ee232cb 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
@@ -63,7 +63,7 @@ | |||
63 | static inline void * | 63 | static inline void * |
64 | zfcp_sg_to_address(struct scatterlist *list) | 64 | zfcp_sg_to_address(struct scatterlist *list) |
65 | { | 65 | { |
66 | return (void *) (page_address(list->page) + list->offset); | 66 | return sg_virt(list); |
67 | } | 67 | } |
68 | 68 | ||
69 | /** | 69 | /** |
@@ -74,7 +74,7 @@ zfcp_sg_to_address(struct scatterlist *list) | |||
74 | static inline void | 74 | static inline void |
75 | zfcp_address_to_sg(void *address, struct scatterlist *list) | 75 | zfcp_address_to_sg(void *address, struct scatterlist *list) |
76 | { | 76 | { |
77 | list->page = virt_to_page(address); | 77 | sg_set_page(list, virt_to_page(address)); |
78 | list->offset = ((unsigned long) address) & (PAGE_SIZE - 1); | 78 | list->offset = ((unsigned long) address) & (PAGE_SIZE - 1); |
79 | } | 79 | } |
80 | 80 | ||
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index a6475a2bb8a7..9438d0b28799 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -308,13 +308,15 @@ zfcp_erp_adisc(struct zfcp_port *port) | |||
308 | if (send_els == NULL) | 308 | if (send_els == NULL) |
309 | goto nomem; | 309 | goto nomem; |
310 | 310 | ||
311 | send_els->req = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 311 | send_els->req = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
312 | if (send_els->req == NULL) | 312 | if (send_els->req == NULL) |
313 | goto nomem; | 313 | goto nomem; |
314 | sg_init_table(send_els->req, 1); | ||
314 | 315 | ||
315 | send_els->resp = kzalloc(sizeof(struct scatterlist), GFP_ATOMIC); | 316 | send_els->resp = kmalloc(sizeof(struct scatterlist), GFP_ATOMIC); |
316 | if (send_els->resp == NULL) | 317 | if (send_els->resp == NULL) |
317 | goto nomem; | 318 | goto nomem; |
319 | sg_init_table(send_els->resp, 1); | ||
318 | 320 | ||
319 | address = (void *) get_zeroed_page(GFP_ATOMIC); | 321 | address = (void *) get_zeroed_page(GFP_ATOMIC); |
320 | if (address == NULL) | 322 | if (address == NULL) |
@@ -363,7 +365,7 @@ zfcp_erp_adisc(struct zfcp_port *port) | |||
363 | retval = -ENOMEM; | 365 | retval = -ENOMEM; |
364 | freemem: | 366 | freemem: |
365 | if (address != NULL) | 367 | if (address != NULL) |
366 | __free_pages(send_els->req->page, 0); | 368 | __free_pages(sg_page(send_els->req), 0); |
367 | if (send_els != NULL) { | 369 | if (send_els != NULL) { |
368 | kfree(send_els->req); | 370 | kfree(send_els->req); |
369 | kfree(send_els->resp); | 371 | kfree(send_els->resp); |
@@ -437,7 +439,7 @@ zfcp_erp_adisc_handler(unsigned long data) | |||
437 | 439 | ||
438 | out: | 440 | out: |
439 | zfcp_port_put(port); | 441 | zfcp_port_put(port); |
440 | __free_pages(send_els->req->page, 0); | 442 | __free_pages(sg_page(send_els->req), 0); |
441 | kfree(send_els->req); | 443 | kfree(send_els->req); |
442 | kfree(send_els->resp); | 444 | kfree(send_els->resp); |
443 | kfree(send_els); | 445 | kfree(send_els); |