Changeset 9298 for trunk/src/kernel32/osliblvm.cpp
- Timestamp:
- Sep 26, 2002, 6:06:07 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/osliblvm.cpp
r8401 r9298 1 /* $Id: osliblvm.cpp,v 1. 2 2002-05-10 14:55:13sandervl Exp $ */1 /* $Id: osliblvm.cpp,v 1.3 2002-09-26 16:06:07 sandervl Exp $ */ 2 2 3 3 /* … … 319 319 return FALSE; //no more volumes 320 320 } 321 volinfo = Get_Volume_Information(volctrl->Volume_Control_Data[volindex].Volume_Handle, &lasterror); 322 if(lasterror != LVM_ENGINE_NO_ERROR) { 323 DebugInt3(); 324 return FALSE; 321 while(volindex < volctrl->Count) { 322 volinfo = Get_Volume_Information(volctrl->Volume_Control_Data[volindex].Volume_Handle, &lasterror); 323 if(lasterror != LVM_ENGINE_NO_ERROR) { 324 DebugInt3(); 325 return FALSE; 326 } 327 //Don't report anything about LVM volumes until we support all those 328 //fancy features (like spanned volumes) 329 if(volinfo.Compatibility_Volume == TRUE) break; 330 dprintf(("Ignoring LVM volume %s", volinfo.Volume_Name)); 331 volindex++; 332 } 333 if(volindex >= volctrl->Count) { 334 return FALSE; //no more volumes 325 335 } 326 336 strncpy(lpszVolumeName, volinfo.Volume_Name, min(sizeof(volinfo.Volume_Name), cchBufferLength)-1); … … 428 438 pPartition->StartingOffset.u.HighPart = partctrl.Partition_Array[0].Partition_Start >> 23; 429 439 pPartition->StartingOffset.u.LowPart = partctrl.Partition_Array[0].Partition_Start << 9; 440 // pPartition->PartitionLength.u.HighPart= partctrl.Partition_Array[0].True_Partition_Size >> 23; 441 // pPartition->PartitionLength.u.LowPart = partctrl.Partition_Array[0].True_Partition_Size << 9; 442 // pPartition->HiddenSectors = 0; 430 443 pPartition->PartitionLength.u.HighPart= partctrl.Partition_Array[0].Usable_Partition_Size >> 23; 431 444 pPartition->PartitionLength.u.LowPart = partctrl.Partition_Array[0].Usable_Partition_Size << 9; … … 466 479 } 467 480 481 //TODO: spanned volumes 468 482 pVolExtent->NumberOfDiskExtents = 1; 469 483 pVolExtent->Extents[0].DiskNumber = 0; 470 484 pVolExtent->Extents[0].StartingOffset.u.HighPart = partctrl.Partition_Array[0].Partition_Start >> 23;; 471 485 pVolExtent->Extents[0].StartingOffset.u.LowPart = partctrl.Partition_Array[0].Partition_Start << 9; 486 // pVolExtent->Extents[0].ExtentLength.u.HighPart = partctrl.Partition_Array[0].True_Partition_Size >> 23; 487 // pVolExtent->Extents[0].ExtentLength.u.LowPart = partctrl.Partition_Array[0].True_Partition_Size << 9; 472 488 pVolExtent->Extents[0].ExtentLength.u.HighPart = partctrl.Partition_Array[0].Usable_Partition_Size >> 23; 473 489 pVolExtent->Extents[0].ExtentLength.u.LowPart = partctrl.Partition_Array[0].Usable_Partition_Size << 9; 474 490 491 //find number of disk on which this volume is located 492 diskinfo = Get_Drive_Control_Data(&lasterror); 493 if(lasterror != LVM_ENGINE_NO_ERROR) { 494 return FALSE; 495 } 496 for(int i=0;i<diskinfo.Count;i++) { 497 if(diskinfo.Drive_Control_Data[i].Drive_Handle == partctrl.Partition_Array[0].Drive_Handle) { 498 //win32 base = 0, os2 base = 1 499 pVolExtent->Extents[0].DiskNumber = diskinfo.Drive_Control_Data[i].Drive_Number - 1; 500 #ifdef DEBUG 501 if(diskinfo.Drive_Control_Data[i].Drive_Number == 0) DebugInt3(); 502 #endif 503 break; 504 } 505 } 506 if(i == diskinfo.Count) { 507 ret = FALSE; 508 } 475 509 dprintf(("pVolExtent->NumberOfDiskExtents %d", pVolExtent->NumberOfDiskExtents)); 476 510 dprintf(("pVolExtent->Extents[0].DiskNumber %d", pVolExtent->Extents[0].DiskNumber)); … … 478 512 dprintf(("pVolExtent->Extents[0].ExtentLength %08x%08x", pVolExtent->Extents[0].ExtentLength.u.HighPart, pVolExtent->Extents[0].ExtentLength.u.LowPart)); 479 513 480 //find number of disk on which this volume is located481 diskinfo = Get_Drive_Control_Data(&lasterror);482 if(lasterror != LVM_ENGINE_NO_ERROR) {483 return FALSE;484 }485 for(int i=0;i<diskinfo.Count;i++) {486 if(diskinfo.Drive_Control_Data[i].Drive_Handle == partctrl.Partition_Array[0].Drive_Handle) {487 pVolExtent->Extents[0].DiskNumber = diskinfo.Drive_Control_Data[i].Drive_Number;488 break;489 }490 }491 if(i == diskinfo.Count) {492 ret = FALSE;493 }494 514 if(pfLVMVolume) { 495 515 *pfLVMVolume = (volinfo.Compatibility_Volume == FALSE); … … 655 675 //****************************************************************************** 656 676 //****************************************************************************** 657 677 BOOL OSLibLVMGetDiskGeometry(DWORD dwDiskNr, PDISK_GEOMETRY pGeom) 678 { 679 Drive_Control_Array driveinfo; 680 Drive_Control_Record *pDriveRec; 681 CARDINAL32 lasterror; 682 BOOL ret = FALSE; 683 int i; 684 685 driveinfo = Get_Drive_Control_Data(&lasterror); 686 if(lasterror != LVM_ENGINE_NO_ERROR) { 687 DebugInt3(); 688 return FALSE; 689 } 690 pDriveRec = driveinfo.Drive_Control_Data; 691 if(pDriveRec == NULL) { 692 DebugInt3(); 693 return FALSE; 694 } 695 if(dwDiskNr > driveinfo.Count) { 696 DebugInt3(); 697 ret = FALSE; 698 goto endfunc; 699 } 700 for(i=0;i<driveinfo.Count;i++) { 701 if(pDriveRec->Drive_Number == dwDiskNr) { 702 pGeom->Cylinders.u.LowPart = pDriveRec->Cylinder_Count; 703 pGeom->Cylinders.u.HighPart = 0; 704 pGeom->TracksPerCylinder = pDriveRec->Heads_Per_Cylinder; 705 pGeom->SectorsPerTrack = pDriveRec->Sectors_Per_Track; 706 pGeom->BytesPerSector = 512; 707 pGeom->MediaType = FixedMedia; 708 709 ret = TRUE; 710 break; 711 } 712 } 713 endfunc: 714 Free_Engine_Memory((ULONG)driveinfo.Drive_Control_Data); 715 return ret; 716 } 717 //****************************************************************************** 718 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.