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 | |
| 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>
| -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); |
