Re: [PATCH] only use 48-bit lba when necessary

Juan Quintela (quintela@mandrakesoft.com)
Fri, 04 Apr 2003 15:19:37 +0200


>>>>> "jens" == Jens Axboe <axboe@suse.de> writes:

jens> Hi,
jens> 48-bit lba has a non-significant overhead (twice the outb's, 12 instead
jens> of 6 per command), so it makes sense to use 28-bit lba commands whenever
jens> we can.

jens> Patch is against 2.5.66-BK.

jens> ===== drivers/ide/ide-disk.c 1.36 vs edited =====
jens> --- 1.36/drivers/ide/ide-disk.c Wed Mar 26 21:23:01 2003
jens> +++ edited/drivers/ide/ide-disk.c Fri Apr 4 14:18:41 2003
jens> @@ -367,12 +367,15 @@
jens> static ide_startstop_t do_rw_disk (ide_drive_t *drive, struct request *rq, sector_t block)
jens> {
jens> ide_hwif_t *hwif = HWIF(drive);
jens> - u8 lba48 = (drive->addressing == 1) ? 1 : 0;
jens> + u8 lba48 = 0;
jens> task_ioreg_t command = WIN_NOP;
jens> ata_nsector_t nsectors;

jens> nsectors.all = (u16) rq->nr_sectors;

jens> + if (drive->addressing == 1 && block > 0xfffffff)
jens> + lba48 = 1;
jens> +

lba48 = (drive->addressing == 1) && (block > 0xfffffff);

should do the trick.

jens> + int lba48bit = 0;
jens> +
jens> + if (drive->addressing == 1 && block > 0xfffffff)
jens> + lba48bit = 1;

see above (more cases of that stripped).

jens> + if (lba48bit && block > 0xfffffff)

that test should be equivalent to:

if (lba48bit)

(at least the cvs copy of that function don't modify block isnce the
definition of lba48bit).

Talking about consistency, wouldn't be better to use always the same
name, lba48 or lba48bit?

Later, Juan.

-- 
In theory, practice and theory are the same, but in practice they 
are different -- Larry McVoy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/