* KDiskDeviceManager::{Find,Load}DiskSystem() can also find the disk

system by pretty name (not only module name) now.
* _user_initialize_partition() loads the disk system by pretty name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22880 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2007-11-10 20:30:22 +00:00
parent aee1388ada
commit c9830ce0f5
3 changed files with 14 additions and 8 deletions
@@ -81,12 +81,12 @@ public:
// Disk Systems
// manager must be locked
KDiskSystem *FindDiskSystem(const char *name);
KDiskSystem *FindDiskSystem(const char *name, bool byPrettyName = false);
KDiskSystem *FindDiskSystem(disk_system_id id);
int32 CountDiskSystems();
KDiskSystem *NextDiskSystem(int32 *cookie);
KDiskSystem *LoadDiskSystem(const char *name);
KDiskSystem *LoadDiskSystem(const char *name, bool byPrettyName = false);
KDiskSystem *LoadDiskSystem(disk_system_id id);
KDiskSystem *LoadNextDiskSystem(int32 *cookie);
@@ -630,12 +630,17 @@ KDiskDeviceManager::DeletePartition(KPartition *partition)
// FindDiskSystem
KDiskSystem *
KDiskDeviceManager::FindDiskSystem(const char *name)
KDiskDeviceManager::FindDiskSystem(const char *name, bool byPrettyName)
{
for (int32 cookie = 0;
KDiskSystem *diskSystem = NextDiskSystem(&cookie); ) {
if (!strcmp(name, diskSystem->Name()))
return diskSystem;
if (byPrettyName) {
if (strcmp(name, diskSystem->PrettyName()) == 0)
return diskSystem;
} else {
if (strcmp(name, diskSystem->Name()) == 0)
return diskSystem;
}
}
return NULL;
}
@@ -674,11 +679,11 @@ KDiskDeviceManager::NextDiskSystem(int32 *cookie)
// LoadDiskSystem
KDiskSystem *
KDiskDeviceManager::LoadDiskSystem(const char *name)
KDiskDeviceManager::LoadDiskSystem(const char *name, bool byPrettyName)
{
KDiskSystem *diskSystem = NULL;
if (ManagerLocker locker = this) {
diskSystem = FindDiskSystem(name);
diskSystem = FindDiskSystem(name, byPrettyName);
if (diskSystem && diskSystem->Load() != B_OK)
diskSystem = NULL;
}
@@ -1162,7 +1162,8 @@ _user_initialize_partition(partition_id partitionID, int32* _changeCounter,
return B_BAD_VALUE;
// load the new disk system
KDiskSystem *diskSystem = manager->LoadDiskSystem(diskSystemName.value);
KDiskSystem *diskSystem = manager->LoadDiskSystem(diskSystemName.value,
true);
if (!diskSystem)
return B_ENTRY_NOT_FOUND;
DiskSystemLoader loader(diskSystem, true);