From c9830ce0f582866c38cd80506a0da8fd8706c8a6 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 10 Nov 2007 20:30:22 +0000 Subject: [PATCH] * 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 --- .../disk_device_manager/KDiskDeviceManager.h | 4 ++-- .../disk_device_manager/KDiskDeviceManager.cpp | 15 ++++++++++----- .../ddm_userland_interface.cpp | 3 ++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/headers/private/kernel/disk_device_manager/KDiskDeviceManager.h b/headers/private/kernel/disk_device_manager/KDiskDeviceManager.h index fe6974473d..4188668e57 100644 --- a/headers/private/kernel/disk_device_manager/KDiskDeviceManager.h +++ b/headers/private/kernel/disk_device_manager/KDiskDeviceManager.h @@ -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); diff --git a/src/system/kernel/disk_device_manager/KDiskDeviceManager.cpp b/src/system/kernel/disk_device_manager/KDiskDeviceManager.cpp index aa9a6eaacf..f09168ec58 100644 --- a/src/system/kernel/disk_device_manager/KDiskDeviceManager.cpp +++ b/src/system/kernel/disk_device_manager/KDiskDeviceManager.cpp @@ -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; } diff --git a/src/system/kernel/disk_device_manager/ddm_userland_interface.cpp b/src/system/kernel/disk_device_manager/ddm_userland_interface.cpp index 3c36f973b9..c27c5ff3c4 100644 --- a/src/system/kernel/disk_device_manager/ddm_userland_interface.cpp +++ b/src/system/kernel/disk_device_manager/ddm_userland_interface.cpp @@ -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);