From bc4db40c4033d294d3f1f740f4d9afa3fac5fdc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 11 Jun 2014 00:56:09 +0200 Subject: [PATCH] AHCI: use a minimum of 1 block for trim ranges. * Word 105 of ATA IDENTIFY should contain the maximum number of block ranges the device supports, but it always supports at least a single one. * This change lets the trim command do something on Virtual Box. --- src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp index 4b2576ddb5..a83f4d6b7b 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_port.cpp @@ -623,6 +623,9 @@ AHCIPort::ScsiInquiry(scsi_ccb* request) fUse48BitCommands, ataData.lba_sector_count, ataData.lba48_sector_count, fSectorCount * fSectorSize); if (fTrimSupported) { + if (fMaxTrimRangeBlocks == 0) + fMaxTrimRangeBlocks = 1; + bool deterministic = ataData.supports_deterministic_read_after_trim; TRACE("trim supported, %" B_PRIu32 " ranges blocks, reads are " "%sdeterministic%s.\n", fMaxTrimRangeBlocks,