Now correctly translates the partition block offset into a byte offset.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7283 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
42033342bc
commit
4c03f90f63
@ -100,6 +100,8 @@ class BIOSDrive : public Node {
|
|||||||
|
|
||||||
virtual off_t Size() const;
|
virtual off_t Size() const;
|
||||||
|
|
||||||
|
uint32 BlockSize() const { return fBlockSize; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
uint8 fDriveID;
|
uint8 fDriveID;
|
||||||
bool fLBA;
|
bool fLBA;
|
||||||
@ -316,18 +318,21 @@ platform_get_boot_device(struct stage2_args *args, Node **_device)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
platform_get_boot_partition(struct stage2_args *args, NodeList *list,
|
platform_get_boot_partition(struct stage2_args *args, Node *bootDevice,
|
||||||
boot::Partition **_partition)
|
NodeList *list, boot::Partition **_partition)
|
||||||
{
|
{
|
||||||
printf("boot partition offset: %lu\n", gBootPartitionOffset);
|
BIOSDrive *drive = static_cast<BIOSDrive *>(bootDevice);
|
||||||
|
off_t offset = (off_t)gBootPartitionOffset * drive->BlockSize();
|
||||||
|
|
||||||
|
printf("boot partition offset: %Ld\n", offset);
|
||||||
|
|
||||||
NodeIterator iterator = list->Iterator();
|
NodeIterator iterator = list->Iterator();
|
||||||
boot::Partition *partition = NULL;
|
boot::Partition *partition = NULL;
|
||||||
while ((partition = (boot::Partition *)iterator.Next()) != NULL) {
|
while ((partition = (boot::Partition *)iterator.Next()) != NULL) {
|
||||||
// search for the partition that contains the partition
|
// search for the partition that contains the partition
|
||||||
// offset as reported by the BFS boot block
|
// offset as reported by the BFS boot block
|
||||||
if (gBootPartitionOffset >= partition->offset
|
if (offset >= partition->offset
|
||||||
&& gBootPartitionOffset < partition->offset + partition->size) {
|
&& offset < partition->offset + partition->size) {
|
||||||
*_partition = partition;
|
*_partition = partition;
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user