summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/FS
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/src/FS')
-rw-r--r--dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc28
1 files changed, 16 insertions, 12 deletions
diff --git a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc
index 8bfbf7fb..5d9bbd55 100644
--- a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc
+++ b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc
@@ -86,7 +86,7 @@ namespace Detail {
((val << 8) & 0x000000FF00000000ULL) | ((val << 24) & 0x0000FF0000000000ULL) |
((val << 40) & 0x00FF000000000000ULL) | ((val << 56) & 0xFF00000000000000ULL);
}
-
+
/// @brief Simple algorithm to hash directory entries for INDs.
/// @param path the directory path.
/// @return The hashed path.
@@ -759,15 +759,14 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* mnt, _Input c
// if disk isn't good, then error out.
if (false == mnt->fPacket.fPacketGood) {
err_global_get() = kErrorDiskIsCorrupted;
- return false;
+ return NO;
}
if (drv_std_get_size() < kHeFSMinimumDiskSize) {
(Void)(kout << "OpenHeFS recommends at least 128 GiB of free space." << kendl);
- (Void)(
- kout
- << "The OS will still try to format a OpenHeFS disk here anyway, don't expect perfect geometry."
- << kendl);
+ (Void)(kout << "The OS will still try to format a OpenHeFS disk here anyway, don't expect "
+ "perfect geometry."
+ << kendl);
}
HEFS_BOOT_NODE* boot = (HEFS_BOOT_NODE*) RTL_ALLOCA(sizeof(HEFS_BOOT_NODE));
@@ -1145,23 +1144,28 @@ _Output Bool HeFileSystemParser::INodeCtlManip(_Input DriveTrait* mnt, _Input co
return NO;
}
-STATIC DriveTrait kMountPoint;
+STATIC IMountpoint kMountpoint;
/// @brief Initialize the OpenHeFS filesystem.
/// @return To check its status, see err_local_get().
Boolean OpenHeFS::fs_init_openhefs(Void) noexcept {
- kout << "Verifying disk...\r";
+ io_construct_main_drive(kMountpoint.A());
- kMountPoint = io_construct_main_drive();
-
- if (kMountPoint.fPacket.fPacketReadOnly == YES) {
+ if (kMountpoint.A().fPacket.fPacketReadOnly == YES) {
kout << "Main disk cannot be mounted (read-only media).\r";
return NO;
}
HeFileSystemParser parser;
- return parser.Format(&kMountPoint, kHeFSEncodingFlagsUTF8, kHeFSDefaultVolumeName);
+ if (!parser.Format(&kMountpoint.A(), kHeFSEncodingFlagsUTF8, kHeFSDefaultVolumeName)) {
+ kout << "Failed to format OpenHeFS partition!\r";
+ return NO;
+ }
+
+ kout << "Valid OpenHeFS disk...\r";
+
+ return YES;
}
} // namespace Kernel