From 9053d86b82dcd4a833b1f64e0dcdf77ac148fb86 Mon Sep 17 00:00:00 2001 From: Samuel Bowman Date: Tue, 1 Mar 2022 20:01:52 -0500 Subject: [PATCH] Kernel+LibPartition: Move EBRPartitionTable into LibPartition --- Kernel/CMakeLists.txt | 2 +- Kernel/Storage/Partition/EBRPartitionTable.h | 33 ------------------- Kernel/Storage/StorageManagement.cpp | 4 +-- .../Libraries/LibPartition/CMakeLists.txt | 1 + .../LibPartition}/EBRPartitionTable.cpp | 11 +++---- .../LibPartition/EBRPartitionTable.h | 28 ++++++++++++++++ 6 files changed, 37 insertions(+), 42 deletions(-) delete mode 100644 Kernel/Storage/Partition/EBRPartitionTable.h rename {Kernel/Storage/Partition => Userland/Libraries/LibPartition}/EBRPartitionTable.cpp (85%) create mode 100644 Userland/Libraries/LibPartition/EBRPartitionTable.h diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index 49b8420c6c..59deda8990 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -104,7 +104,6 @@ set(KERNEL_SOURCES Storage/ATA/ATAPIDiscDevice.cpp Storage/ATA/ATAPort.cpp Storage/Partition/DiskPartition.cpp - Storage/Partition/EBRPartitionTable.cpp Storage/Partition/GUIDPartitionTable.cpp Storage/NVMe/NVMeController.cpp Storage/NVMe/NVMeNameSpace.cpp @@ -404,6 +403,7 @@ set(CRYPTO_SOURCES set(PARTITION_SOURCES ../Userland/Libraries/LibPartition/DiskPartitionMetadata.cpp + ../Userland/Libraries/LibPartition/EBRPartitionTable.cpp ../Userland/Libraries/LibPartition/MBRPartitionTable.cpp ../Userland/Libraries/LibPartition/PartitionTable.cpp ) diff --git a/Kernel/Storage/Partition/EBRPartitionTable.h b/Kernel/Storage/Partition/EBRPartitionTable.h deleted file mode 100644 index a32c20de87..0000000000 --- a/Kernel/Storage/Partition/EBRPartitionTable.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2020-2022, Liav A. - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include -#include -#include -#include -#include -#include -#include - -namespace Kernel { - -struct EBRPartitionHeader; -class EBRPartitionTable : public Partition::MBRPartitionTable { -public: - ~EBRPartitionTable(); - - static ErrorOr> try_to_initialize(StorageDevice const&); - explicit EBRPartitionTable(StorageDevice const&); - virtual bool is_valid() const override { return m_valid; }; - -private: - void search_extended_partition(StorageDevice const&, MBRPartitionTable&, u64, size_t limit); - - bool m_valid { false }; -}; -} diff --git a/Kernel/Storage/StorageManagement.cpp b/Kernel/Storage/StorageManagement.cpp index 32982078c9..ce7c41e5c3 100644 --- a/Kernel/Storage/StorageManagement.cpp +++ b/Kernel/Storage/StorageManagement.cpp @@ -21,10 +21,10 @@ #include #include #include -#include #include #include #include +#include #include namespace Kernel { @@ -136,7 +136,7 @@ UNMAP_AFTER_INIT ErrorOr> StorageManage auto mbr_table_or_error = Partition::MBRPartitionTable::try_to_initialize(device); if (!mbr_table_or_error.is_error()) return mbr_table_or_error.release_value(); - auto ebr_table_or_error = EBRPartitionTable::try_to_initialize(device); + auto ebr_table_or_error = Partition::EBRPartitionTable::try_to_initialize(device); if (!ebr_table_or_error.is_error()) { return ebr_table_or_error.release_value(); } diff --git a/Userland/Libraries/LibPartition/CMakeLists.txt b/Userland/Libraries/LibPartition/CMakeLists.txt index a3f43660b8..adae3e4c98 100644 --- a/Userland/Libraries/LibPartition/CMakeLists.txt +++ b/Userland/Libraries/LibPartition/CMakeLists.txt @@ -1,5 +1,6 @@ set(SOURCES DiskPartitionMetadata.cpp + EBRPartitionTable.cpp MBRPartitionTable.cpp PartitionTable.cpp ) diff --git a/Kernel/Storage/Partition/EBRPartitionTable.cpp b/Userland/Libraries/LibPartition/EBRPartitionTable.cpp similarity index 85% rename from Kernel/Storage/Partition/EBRPartitionTable.cpp rename to Userland/Libraries/LibPartition/EBRPartitionTable.cpp index 67a402062a..ee2220d2d0 100644 --- a/Kernel/Storage/Partition/EBRPartitionTable.cpp +++ b/Userland/Libraries/LibPartition/EBRPartitionTable.cpp @@ -4,12 +4,11 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include -#include +#include -namespace Kernel { +namespace Partition { -ErrorOr> EBRPartitionTable::try_to_initialize(StorageDevice const& device) +ErrorOr> EBRPartitionTable::try_to_initialize(Kernel::StorageDevice const& device) { auto table = TRY(adopt_nonnull_own_or_enomem(new (nothrow) EBRPartitionTable(device))); if (table->is_protective_mbr()) @@ -19,7 +18,7 @@ ErrorOr> EBRPartitionTable::try_to_initialize(S return table; } -void EBRPartitionTable::search_extended_partition(StorageDevice const& device, MBRPartitionTable& checked_ebr, u64 current_block_offset, size_t limit) +void EBRPartitionTable::search_extended_partition(Kernel::StorageDevice const& device, MBRPartitionTable& checked_ebr, u64 current_block_offset, size_t limit) { if (limit == 0) return; @@ -39,7 +38,7 @@ void EBRPartitionTable::search_extended_partition(StorageDevice const& device, M search_extended_partition(device, *next_ebr, current_block_offset, (limit - 1)); } -EBRPartitionTable::EBRPartitionTable(StorageDevice const& device) +EBRPartitionTable::EBRPartitionTable(Kernel::StorageDevice const& device) : MBRPartitionTable(device) { if (!is_header_valid()) diff --git a/Userland/Libraries/LibPartition/EBRPartitionTable.h b/Userland/Libraries/LibPartition/EBRPartitionTable.h new file mode 100644 index 0000000000..d44f5a4490 --- /dev/null +++ b/Userland/Libraries/LibPartition/EBRPartitionTable.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2020-2022, Liav A. + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Partition { + +struct EBRPartitionHeader; +class EBRPartitionTable : public MBRPartitionTable { +public: + ~EBRPartitionTable(); + + static ErrorOr> try_to_initialize(Kernel::StorageDevice const&); + explicit EBRPartitionTable(Kernel::StorageDevice const&); + virtual bool is_valid() const override { return m_valid; }; + +private: + void search_extended_partition(Kernel::StorageDevice const&, MBRPartitionTable&, u64, size_t limit); + + bool m_valid { false }; +}; + +}