From: Jens Axboe -ENOCHANGELOG Signed-off-by: Andrew Morton --- 25-akpm/drivers/ide/ide-disk.c | 6 +++--- 25-akpm/drivers/ide/ide-io.c | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff -puN drivers/ide/ide-disk.c~barrier-flushing-fix drivers/ide/ide-disk.c --- 25/drivers/ide/ide-disk.c~barrier-flushing-fix 2004-07-27 00:48:31.824364096 -0700 +++ 25-akpm/drivers/ide/ide-disk.c 2004-07-27 00:48:31.830363184 -0700 @@ -1217,7 +1217,8 @@ static int idedisk_issue_flush(request_q memset(rq->cmd, 0, sizeof(rq->cmd)); - if ((drive->id->cfs_enable_2 & 0x2400) == 0x2400) + if (ide_id_has_flush_cache_ext(drive->id) && + (drive->capacity64 >= (1UL << 28))) rq->cmd[0] = WIN_FLUSH_CACHE_EXT; else rq->cmd[0] = WIN_FLUSH_CACHE; @@ -1585,9 +1586,8 @@ static void idedisk_setup (ide_drive_t * * properly. We can safely support FLUSH_CACHE on lba48, if capacity * doesn't exceed lba28 */ - barrier = 1; + barrier = ide_id_has_flush_cache(id); if (drive->addressing == 1) { - barrier = ide_id_has_flush_cache(id); if (capacity > (1ULL << 28) && !ide_id_has_flush_cache_ext(id)) barrier = 0; } diff -puN drivers/ide/ide-io.c~barrier-flushing-fix drivers/ide/ide-io.c --- 25/drivers/ide/ide-io.c~barrier-flushing-fix 2004-07-27 00:48:31.825363944 -0700 +++ 25-akpm/drivers/ide/ide-io.c 2004-07-27 00:48:31.831363032 -0700 @@ -67,7 +67,8 @@ static void ide_fill_flush_cmd(ide_drive rq->buffer = buf; rq->buffer[0] = WIN_FLUSH_CACHE; - if (ide_id_has_flush_cache_ext(drive->id)) + if (ide_id_has_flush_cache_ext(drive->id) && + (drive->capacity64 >= (1UL << 28))) rq->buffer[0] = WIN_FLUSH_CACHE_EXT; } _