diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2007-05-14 06:26:29 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2007-05-26 20:18:38 -0400 |
commit | d17867135639bec1bce5b38d29e6fa4cfea050ea (patch) | |
tree | bacbc5180f161ed8c23dd13cc5d119da06632de9 | |
parent | e7d6cf55ea47684b704d67a6046044c29bad4824 (diff) |
[SCSI] ultrastor: convert to use the data buffer accessors
- remove the unnecessary map_single path.
- convert to use the new accessors for the sg lists and the
parameters.
Jens Axboe <jens.axboe@oracle.com> did the for_each_sg cleanup.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r-- | drivers/scsi/ultrastor.c | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/drivers/scsi/ultrastor.c b/drivers/scsi/ultrastor.c index 56906aba5ee3..c08235d5afc9 100644 --- a/drivers/scsi/ultrastor.c +++ b/drivers/scsi/ultrastor.c | |||
@@ -675,16 +675,15 @@ static const char *ultrastor_info(struct Scsi_Host * shpnt) | |||
675 | 675 | ||
676 | static inline void build_sg_list(struct mscp *mscp, struct scsi_cmnd *SCpnt) | 676 | static inline void build_sg_list(struct mscp *mscp, struct scsi_cmnd *SCpnt) |
677 | { | 677 | { |
678 | struct scatterlist *sl; | 678 | struct scatterlist *sg; |
679 | long transfer_length = 0; | 679 | long transfer_length = 0; |
680 | int i, max; | 680 | int i, max; |
681 | 681 | ||
682 | sl = (struct scatterlist *) SCpnt->request_buffer; | 682 | max = scsi_sg_count(SCpnt); |
683 | max = SCpnt->use_sg; | 683 | scsi_for_each_sg(SCpnt, sg, max, i) { |
684 | for (i = 0; i < max; i++) { | 684 | mscp->sglist[i].address = isa_page_to_bus(sg->page) + sg->offset; |
685 | mscp->sglist[i].address = isa_page_to_bus(sl[i].page) + sl[i].offset; | 685 | mscp->sglist[i].num_bytes = sg->length; |
686 | mscp->sglist[i].num_bytes = sl[i].length; | 686 | transfer_length += sg->length; |
687 | transfer_length += sl[i].length; | ||
688 | } | 687 | } |
689 | mscp->number_of_sg_list = max; | 688 | mscp->number_of_sg_list = max; |
690 | mscp->transfer_data = isa_virt_to_bus(mscp->sglist); | 689 | mscp->transfer_data = isa_virt_to_bus(mscp->sglist); |
@@ -730,15 +729,15 @@ static int ultrastor_queuecommand(struct scsi_cmnd *SCpnt, | |||
730 | my_mscp->target_id = SCpnt->device->id; | 729 | my_mscp->target_id = SCpnt->device->id; |
731 | my_mscp->ch_no = 0; | 730 | my_mscp->ch_no = 0; |
732 | my_mscp->lun = SCpnt->device->lun; | 731 | my_mscp->lun = SCpnt->device->lun; |
733 | if (SCpnt->use_sg) { | 732 | if (scsi_sg_count(SCpnt)) { |
734 | /* Set scatter/gather flag in SCSI command packet */ | 733 | /* Set scatter/gather flag in SCSI command packet */ |
735 | my_mscp->sg = TRUE; | 734 | my_mscp->sg = TRUE; |
736 | build_sg_list(my_mscp, SCpnt); | 735 | build_sg_list(my_mscp, SCpnt); |
737 | } else { | 736 | } else { |
738 | /* Unset scatter/gather flag in SCSI command packet */ | 737 | /* Unset scatter/gather flag in SCSI command packet */ |
739 | my_mscp->sg = FALSE; | 738 | my_mscp->sg = FALSE; |
740 | my_mscp->transfer_data = isa_virt_to_bus(SCpnt->request_buffer); | 739 | my_mscp->transfer_data = isa_virt_to_bus(scsi_sglist(SCpnt)); |
741 | my_mscp->transfer_data_length = SCpnt->request_bufflen; | 740 | my_mscp->transfer_data_length = scsi_bufflen(SCpnt); |
742 | } | 741 | } |
743 | my_mscp->command_link = 0; /*???*/ | 742 | my_mscp->command_link = 0; /*???*/ |
744 | my_mscp->scsi_command_link_id = 0; /*???*/ | 743 | my_mscp->scsi_command_link_id = 0; /*???*/ |