#
8b1d35bd |
|
03-Jul-2021 |
David Sebek <dasebek@gmail.com> |
Improve SCSI and SATA trim support Fixes: * scsi: Fix a bug that caused the device capacity to be set to an undefined value for some large SCSI devices when READ CAPACITY (16) was used * ahci: Fix VPD page reporting so that it does not return undefined values * ahci: Set the write bit to true when sending a DATA SET MANAGEMENT (trim) command to a device. The command would otherwise fail and time out on some devices. Improvements: * scsi: Extend the READ CAPACITY (16) support to also include logical block provisioning information * scsi: Prefer READ CAPACITY (16) over READ CAPACITY (10) on devices that are expected to support this command * scsi, ahci: Enable trim on SCSI and SATA devices that are expected to support trim and which correctly report trim support * ahci: Redo the implementation of the SCSI UNMAP command * scsi: Redo UNMAP-related code * scsi: Add support for UNMAP via WRITE SAME (10) and WRITE SAME (16) commands * When copying trim ranges between different data types, make sure that the values don't change (detect overflows) * Report the number of trimmed blocks even if the trim operation fails Change-Id: Ie5fc993bbbc19546b4308138ba10184bf7b9986a Reviewed-on: https://review.haiku-os.org/c/haiku/+/4157 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
|
#
93c0a5d7 |
|
04-Sep-2015 |
Axel Dörfler <axeld@pinc-software.de> |
Reworked little endian bitfields a bit. * Added B_ prefix. * Renamed 16 bit variants to B_LENDIAN16_*. * Added 32 bit variants (albeit only 16 of them for now). * Adjusted headers that were using them.
|
#
6fd00f80 |
|
09-Apr-2014 |
Jérôme Duval <jerome.duval@gmail.com> |
scsi_periph: implemented VPD inquiry. * declared block limits and logical block provisioning structs. * based on SPC-4 and SBC-4 standards.
|
#
99086aa3 |
|
14-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Target SCSI UNMAP command instead of WRITE SAME. * The UNMAP command is theoretically much faster, as it can get many block ranges instead of just a single range. * Furthermore, the ATA TRIM command resembles it much better. * Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP to trim. * Updated BFS code to collect array ranges to fully support the new fs_trim_data possibilities.
|
#
ea2fa872 |
|
16-Jul-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
scsi_cmds.h: added SCSIS_ASC_CAPACITY_DATA_HAS_CHANGED * indicates the device data capacity has changed..
|
#
37286363 |
|
08-Jun-2012 |
Alexander von Gluck IV <kallisti5@unixzen.com> |
scsi: Add write same SCSI operation * Will be used for TRIM
|
#
4264efcc |
|
30-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added definitions for SCSI_OP_VARIABLE_LENGTH_CDB, SCSI_SAI_READ_LONG and SCSI_SAO_WRITE_LONG * cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39683 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0588869 |
|
02-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added definitions for SCSI_OP_VERIFY_* op commands * added support READ_12/16 and WRITE_12/16 in ata and scsi_periph, this enables read/write on block offsets greater than 2TB git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39278 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f10a55a6 |
|
01-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* ata: added ATADevice::ReadCapacity16() * ata: don't fail if lba_sector_count is null and lba48_sector_count is not * scsi_periph: if ReadCapacity() returns 0xffffffff, use ReadCapacity16() instead * scsi_disk: use a different computation in the struct geometry computation for bigger disks Tested successfully with a virtual 10TB hard drive. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39252 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3e9b601d |
|
29-Aug-2010 |
Andreas Färber <andreas.faerber@web.de> |
SCSI: Add struct for READ (16) and WRITE (16) commands Based on a SCSI Command Reference Manual by Seagate and Wikipedia. Tested against OpenSolaris iSCSI target on ppc. It choked on the READ (12) opcode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38425 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0a96e186 |
|
22-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Added opcode definitions for read/write-16 and the extended "read capacity 16" over service-action-in. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36415 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ece77b37 |
|
28-Sep-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
renamed SCSI_OP_TUR into SCSI_OP_TEST_UNIT_READY git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5451eb68 |
|
28-Sep-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
this header should be private git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22339 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
6fd00f80e8ebb9c1d4fa17caa9db128bad9a7f1c |
|
09-Apr-2014 |
Jérôme Duval <jerome.duval@gmail.com> |
scsi_periph: implemented VPD inquiry. * declared block limits and logical block provisioning structs. * based on SPC-4 and SBC-4 standards.
|
#
99086aa32333be5792b0f059ccbbe3c90be05ea6 |
|
14-Aug-2013 |
Axel Dörfler <axeld@pinc-software.de> |
trim: Target SCSI UNMAP command instead of WRITE SAME. * The UNMAP command is theoretically much faster, as it can get many block ranges instead of just a single range. * Furthermore, the ATA TRIM command resembles it much better. * Therefore, fs_trim_data now gets an array of ranges, and we use SCSI UNMAP to trim. * Updated BFS code to collect array ranges to fully support the new fs_trim_data possibilities.
|
#
ea2fa8721995774afc60047e747a9f010f2d8317 |
|
16-Jul-2013 |
Jérôme Duval <jerome.duval@gmail.com> |
scsi_cmds.h: added SCSIS_ASC_CAPACITY_DATA_HAS_CHANGED * indicates the device data capacity has changed..
|
#
372863638f6eb692e597c69b6677e2312a7ee600 |
|
08-Jun-2012 |
Alexander von Gluck IV <kallisti5@unixzen.com> |
scsi: Add write same SCSI operation * Will be used for TRIM
|
#
4264efcc6ba3828443f26b01ec9e7fc4c4eeeb3e |
|
30-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added definitions for SCSI_OP_VARIABLE_LENGTH_CDB, SCSI_SAI_READ_LONG and SCSI_SAO_WRITE_LONG * cleanup git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39683 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f058886908e994cc5a6c141e212c3bd62e923023 |
|
02-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* added definitions for SCSI_OP_VERIFY_* op commands * added support READ_12/16 and WRITE_12/16 in ata and scsi_periph, this enables read/write on block offsets greater than 2TB git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39278 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f10a55a632599ee0c06dd3235df51cb2410e3633 |
|
01-Nov-2010 |
Jérôme Duval <korli@users.berlios.de> |
* ata: added ATADevice::ReadCapacity16() * ata: don't fail if lba_sector_count is null and lba48_sector_count is not * scsi_periph: if ReadCapacity() returns 0xffffffff, use ReadCapacity16() instead * scsi_disk: use a different computation in the struct geometry computation for bigger disks Tested successfully with a virtual 10TB hard drive. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39252 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
3e9b601da10b30be97af77ad4d2dc205719a830b |
|
29-Aug-2010 |
Andreas Färber <andreas.faerber@web.de> |
SCSI: Add struct for READ (16) and WRITE (16) commands Based on a SCSI Command Reference Manual by Seagate and Wikipedia. Tested against OpenSolaris iSCSI target on ppc. It choked on the READ (12) opcode. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38425 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
0a96e186895067ecddaacb1f5af8fd3217c6ea5c |
|
22-Apr-2010 |
Axel Dörfler <axeld@pinc-software.de> |
* Added opcode definitions for read/write-16 and the extended "read capacity 16" over service-action-in. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36415 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
ece77b379af4fd9cb1d712663620afb84523d443 |
|
28-Sep-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
renamed SCSI_OP_TUR into SCSI_OP_TEST_UNIT_READY git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22356 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
5451eb688bdeb03043dc013cc12cced274bdb273 |
|
28-Sep-2007 |
Marcus Overhagen <marcusoverhagen@gmail.com> |
this header should be private git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22339 a95241bf-73f2-0310-859d-f6bbb57e9c96
|