if total sectors is greater than 0xffffffff, use this value for ReadCapacity().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39313 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -179,8 +179,11 @@ ATADevice::ReadCapacity(ATARequest *request)
|
|||||||
scsi_res_read_capacity data;
|
scsi_res_read_capacity data;
|
||||||
data.block_size = B_HOST_TO_BENDIAN_INT32(fBlockSize);
|
data.block_size = B_HOST_TO_BENDIAN_INT32(fBlockSize);
|
||||||
|
|
||||||
uint32 lastBlock = fTotalSectors - 1;
|
if (fTotalSectors <= UINT_MAX) {
|
||||||
data.lba = B_HOST_TO_BENDIAN_INT32(lastBlock);
|
uint32 lastBlock = fTotalSectors - 1;
|
||||||
|
data.lba = B_HOST_TO_BENDIAN_INT32(lastBlock);
|
||||||
|
} else
|
||||||
|
data.lba = UINT_MAX;
|
||||||
TRACE("returning last block: %lu\n", B_BENDIAN_TO_HOST_INT32(data.lba));
|
TRACE("returning last block: %lu\n", B_BENDIAN_TO_HOST_INT32(data.lba));
|
||||||
|
|
||||||
copy_sg_data(ccb, 0, ccb->data_length, &data, sizeof(data), false);
|
copy_sg_data(ccb, 0, ccb->data_length, &data, sizeof(data), false);
|
||||||
|
|||||||
Reference in New Issue
Block a user