mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
scsi: fix disk capacity too small by one sector
SCSI READ CAPACITY reports the address of the last block and the block size. The total number of blocks is thus last block address plus one. This also fixes the corresponding test case.
This commit is contained in:
parent
99ce74a41b
commit
5f7c06bdc3
2 changed files with 3 additions and 1 deletions
|
@ -309,6 +309,7 @@ static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb,
|
|||
((unsigned long)pccb->pdata[5] << 16) |
|
||||
((unsigned long)pccb->pdata[6] << 8) |
|
||||
((unsigned long)pccb->pdata[7]);
|
||||
*capacity += 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -332,6 +333,7 @@ static int scsi_read_capacity(struct udevice *dev, struct scsi_cmd *pccb,
|
|||
((uint64_t)pccb->pdata[5] << 16) |
|
||||
((uint64_t)pccb->pdata[6] << 8) |
|
||||
((uint64_t)pccb->pdata[7]);
|
||||
*capacity += 1;
|
||||
|
||||
*blksz = ((uint64_t)pccb->pdata[8] << 56) |
|
||||
((uint64_t)pccb->pdata[9] << 48) |
|
||||
|
|
|
@ -630,7 +630,7 @@ static int bootdev_test_next_label(struct unit_test_state *uts)
|
|||
ut_assertok(bootdev_next_label(&iter, &dev, &mflags));
|
||||
ut_assert_nextline("scanning bus for devices...");
|
||||
ut_assert_skip_to_line(
|
||||
" Capacity: 1.9 MB = 0.0 GB (4095 x 512)");
|
||||
" Capacity: 2.0 MB = 0.0 GB (4096 x 512)");
|
||||
ut_assert_console_end();
|
||||
ut_assertnonnull(dev);
|
||||
ut_asserteq_str("scsi.id0lun0.bootdev", dev->name);
|
||||
|
|
Loading…
Add table
Reference in a new issue