diff options
author | Martin K. Petersen <martin.petersen@oracle.com> | 2009-11-26 12:00:43 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2009-12-03 18:01:23 -0500 |
commit | d0634c4aea0b80447cbdc4c0db285004b860c455 (patch) | |
tree | 5d723e58b0feb11d049b7398e4c3f4600be01d9c | |
parent | e78db4dfb1355a895f7ea50133b702b55b8ed184 (diff) |
libata: Clarify ata_set_lba_range_entries function
ata_set_lba_range_entries used the variable max for two different things
which was confusing. Make the function take a buffer size in bytes as
argument and return the used buffer size upon completion.
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
-rw-r--r-- | drivers/ata/libata-scsi.c | 2 | ||||
-rw-r--r-- | include/linux/ata.h | 20 |
2 files changed, 11 insertions, 11 deletions
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index e1e186b9dfcc..62e6b9ea96af 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -2972,7 +2972,7 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc) | |||
2972 | goto invalid_fld; | 2972 | goto invalid_fld; |
2973 | 2973 | ||
2974 | buf = page_address(sg_page(scsi_sglist(scmd))); | 2974 | buf = page_address(sg_page(scsi_sglist(scmd))); |
2975 | size = ata_set_lba_range_entries(buf, 512 / 8, block, n_block); | 2975 | size = ata_set_lba_range_entries(buf, 512, block, n_block); |
2976 | 2976 | ||
2977 | tf->protocol = ATA_PROT_DMA; | 2977 | tf->protocol = ATA_PROT_DMA; |
2978 | tf->hob_feature = 0; | 2978 | tf->hob_feature = 0; |
diff --git a/include/linux/ata.h b/include/linux/ata.h index dfa2298bf488..38a6948ce0c2 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -982,17 +982,17 @@ static inline void ata_id_to_hd_driveid(u16 *id) | |||
982 | } | 982 | } |
983 | 983 | ||
984 | /* | 984 | /* |
985 | * Write up to 'max' LBA Range Entries to the buffer that will cover the | 985 | * Write LBA Range Entries to the buffer that will cover the extent from |
986 | * extent from sector to sector + count. This is used for TRIM and for | 986 | * sector to sector + count. This is used for TRIM and for ADD LBA(S) |
987 | * ADD LBA(S) TO NV CACHE PINNED SET. | 987 | * TO NV CACHE PINNED SET. |
988 | */ | 988 | */ |
989 | static inline unsigned ata_set_lba_range_entries(void *_buffer, unsigned max, | 989 | static inline unsigned ata_set_lba_range_entries(void *_buffer, |
990 | u64 sector, unsigned long count) | 990 | unsigned buf_size, u64 sector, unsigned long count) |
991 | { | 991 | { |
992 | __le64 *buffer = _buffer; | 992 | __le64 *buffer = _buffer; |
993 | unsigned i = 0; | 993 | unsigned i = 0, used_bytes; |
994 | 994 | ||
995 | while (i < max) { | 995 | while (i < buf_size / 8 ) { /* 6-byte LBA + 2-byte range per entry */ |
996 | u64 entry = sector | | 996 | u64 entry = sector | |
997 | ((u64)(count > 0xffff ? 0xffff : count) << 48); | 997 | ((u64)(count > 0xffff ? 0xffff : count) << 48); |
998 | buffer[i++] = __cpu_to_le64(entry); | 998 | buffer[i++] = __cpu_to_le64(entry); |
@@ -1002,9 +1002,9 @@ static inline unsigned ata_set_lba_range_entries(void *_buffer, unsigned max, | |||
1002 | sector += 0xffff; | 1002 | sector += 0xffff; |
1003 | } | 1003 | } |
1004 | 1004 | ||
1005 | max = ALIGN(i * 8, 512); | 1005 | used_bytes = ALIGN(i * 8, 512); |
1006 | memset(buffer + i, 0, max - i * 8); | 1006 | memset(buffer + i, 0, used_bytes - i * 8); |
1007 | return max; | 1007 | return used_bytes; |
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | static inline int is_multi_taskfile(struct ata_taskfile *tf) | 1010 | static inline int is_multi_taskfile(struct ata_taskfile *tf) |