Use WIN_FLUSH_CACHE_EXT only if disk requires LBA48.
diff -Nru a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
--- a/drivers/ide/ide-io.c 2005-02-23 20:58:16 +01:00
+++ b/drivers/ide/ide-io.c 2005-02-23 20:58:16 +01:00
@@ -61,7 +61,8 @@
memset(task, 0, sizeof(*task));
- if (ide_id_has_flush_cache_ext(drive->id)) {
+ if (ide_id_has_flush_cache_ext(drive->id) &&
+ (drive->capacity64 >= (1UL << 28))) {
tf->command = WIN_FLUSH_CACHE_EXT;
tf->flags |= ATA_TFLAG_LBA48;
} else
On Thu, 24 Feb 2005 at 15:44:34, Bartlomiej Zolnierkiewicz wrote:
> --- a/drivers/ide/ide-io.c 2005-02-23 20:58:16 +01:00
> +++ b/drivers/ide/ide-io.c 2005-02-23 20:58:16 +01:00
> @@ -61,7 +61,8 @@
>
> memset(task, 0, sizeof(*task));
>
> - if (ide_id_has_flush_cache_ext(drive->id)) {
> + if (ide_id_has_flush_cache_ext(drive->id) &&
> + (drive->capacity64 >= (1UL << 28))) {
^^
------------------------------>||
> tf->command = WIN_FLUSH_CACHE_EXT;
> tf->flags |= ATA_TFLAG_LBA48;
> } else
Shouldn't that be ">" ???
Either that or this code from ide-disk is wrong:
/* limit drive capacity to 137GB if LBA48 cannot be used */
if (drive->addressing == 0 && drive->capacity64 > 1ULL << 28) {
printk(KERN_WARNING "%s: cannot use LBA48 - full capacity "
"%llu sectors (%llu MB)\n",
drive->name, (unsigned long long)drive->capacity64,
sectors_to_MB(drive->capacity64));
drive->capacity64 = 1ULL << 28;
}
--
Chuck