summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-11 11:51:31 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-11 11:51:31 +0100
commitd4211b210e3e63f69bc3b86555b563a323f8d865 (patch)
tree02c9b63b60856ed330da8d0426564b2dba79e604
parentc50d283019bfbc43d460e7a66ac58f187897d474 (diff)
WIP: Working on a fix for NeFS forks.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
-rw-r--r--dev/Boot/amd64-desktop.make2
-rw-r--r--dev/Kernel/FSKit/NeFS.h11
-rw-r--r--dev/Kernel/src/FS/NeFS.cc69
-rw-r--r--dev/Kernel/src/KernelMain.cc2
-rw-r--r--dev/LibSCI/libsci.json2
-rw-r--r--public/frameworks/.keep0
6 files changed, 30 insertions, 56 deletions
diff --git a/dev/Boot/amd64-desktop.make b/dev/Boot/amd64-desktop.make
index 84ff8187..395b4e86 100644
--- a/dev/Boot/amd64-desktop.make
+++ b/dev/Boot/amd64-desktop.make
@@ -50,7 +50,7 @@ BOOTLOADER=zbaosldr.exe
KERNEL=minoskrnl.exe
SYSCHK=syschk.sys
STARTUP=startup.sys
-SCIKIT=LibSCI.dylib
+SCIKIT=libSCI.dylib
.PHONY: invalid-recipe
invalid-recipe:
diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h
index b9babad8..1a744ad0 100644
--- a/dev/Kernel/FSKit/NeFS.h
+++ b/dev/Kernel/FSKit/NeFS.h
@@ -406,19 +406,20 @@ namespace Kernel
rt_copy_memory(mNode->Name, new_fork.CatalogName, rt_string_len(mNode->Name));
rt_copy_memory(journal_name.Data(), new_fork.ForkName, rt_string_len(journal_name.Data()));
- new_fork.DataSize = xml_data.Length();
-
- new_fork.Kind = kNeFSRsrcForkKind;
+ new_fork.DataSize = kNeFSForkDataSz;
+ new_fork.Kind = kNeFSRsrcForkKind;
parser->CreateFork(mNode, new_fork);
kcout << "Commit: " << xml_data.Data() << "\r\nTo: " << journal_name.Data() << endl;
- return parser->WriteCatalog(mNode, YES, xml_data.Data(), xml_data.Length(), journal_name.CData());
+ auto ret = parser->WriteCatalog(mNode, YES, xml_data.Data(), xml_data.Length(), journal_name.CData());
+
+ return ret;
}
private:
- Char mStamp[255] = {"/system/zka_journal" kNeFSJournalExt};
+ Char mStamp[255] = {"/system/journal_sys" kNeFSJournalExt};
};
namespace Detail
diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc
index 784275f8..6f4c43b9 100644
--- a/dev/Kernel/src/FS/NeFS.cc
+++ b/dev/Kernel/src/FS/NeFS.cc
@@ -64,82 +64,55 @@ _Output NFS_FORK_STRUCT* NeFileSystemParser::CreateFork(_Input NFS_CATALOG_STRUC
_Input NFS_FORK_STRUCT& the_fork)
{
if (catalog && the_fork.ForkName[0] != 0 &&
- the_fork.DataSize <= kNeFSForkDataSz)
+ the_fork.DataSize == kNeFSForkDataSz)
{
Lba lba = (the_fork.Kind == kNeFSDataForkKind) ? catalog->DataFork
: catalog->ResourceFork;
- kcout << "Fork LBA: " << hex_number(lba) << endl;
-
- if (lba <= kNeFSCatalogStartAddress)
- return nullptr;
-
auto drv = kDiskMountpoint.A();
/// special treatment.
rt_copy_memory((VoidPtr) "fs/nefs-packet", drv.fPacket.fPacketMime,
rt_string_len("fs/nefs-packet"));
- NFS_FORK_STRUCT curFork{0};
- NFS_FORK_STRUCT prevFork{0};
- Lba lbaOfPreviousFork = lba;
+ NFS_FORK_STRUCT cur_fork{0};
+ Lba lba_prev_fork = lba;
/// do not check for anything. Loop until we get what we want, that is a free fork zone.
while (lba <= kNeFSCatalogStartAddress)
{
drv.fPacket.fPacketLba = lba;
drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = &curFork;
+ drv.fPacket.fPacketContent = &cur_fork;
drv.fInput(&drv.fPacket);
- if (curFork.NextSibling > kBadAddress)
- {
- kcout << "Bad fork: " << hex_number(curFork.NextSibling) << endl;
- break;
- }
-
- kcout << "Next fork: " << hex_number(curFork.NextSibling) << endl;
+ kcout << "Next fork: " << hex_number(cur_fork.NextSibling) << endl;
- if (curFork.Flags & kNeFSFlagCreated)
+ if (cur_fork.Flags & kNeFSFlagCreated)
{
- kcout << "Fork already exists.\r";
-
/// sanity check.
- if (StringBuilder::Equals(curFork.ForkName, the_fork.ForkName) &&
- StringBuilder::Equals(curFork.CatalogName, catalog->Name))
+ if (StringBuilder::Equals(cur_fork.ForkName, the_fork.ForkName) &&
+ StringBuilder::Equals(cur_fork.CatalogName, catalog->Name))
+ {
+ kcout << "Fork already exists.\r";
return nullptr;
+ }
- kcout << "Next fork: " << hex_number(curFork.NextSibling) << endl;
-
- lbaOfPreviousFork = lba;
- lba = curFork.NextSibling;
+ kcout << "Next fork: " << hex_number(cur_fork.NextSibling) << endl;
- prevFork = curFork;
+ lba_prev_fork = lba;
+ lba = cur_fork.NextSibling;
}
else
{
- /// This is a check that we have, in order to link the previous fork
- /// entry.
- if (lba >= kNeFSCatalogStartAddress)
- {
- drv.fPacket.fPacketLba = lbaOfPreviousFork;
- drv.fPacket.fPacketSize = sizeof(NFS_FORK_STRUCT);
- drv.fPacket.fPacketContent = &prevFork;
-
- prevFork.NextSibling = lba;
-
- /// write to disk.
- drv.fOutput(&drv.fPacket);
- }
-
break;
}
}
the_fork.Flags |= kNeFSFlagCreated;
the_fork.DataOffset = lba - sizeof(NFS_FORK_STRUCT);
- the_fork.PreviousSibling = lbaOfPreviousFork;
+ the_fork.PreviousSibling = lba_prev_fork;
the_fork.NextSibling = the_fork.DataOffset - the_fork.DataSize - sizeof(NFS_FORK_STRUCT);
drv.fPacket.fPacketLba = lba;
@@ -279,9 +252,9 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char*
/// Locate parent catalog, to then allocate right after it.
- for (SizeT indexFill = 0; indexFill < rt_string_len(name); ++indexFill)
+ for (SizeT index_fill = 0; index_fill < rt_string_len(name); ++index_fill)
{
- parent_name[indexFill] = name[indexFill];
+ parent_name[index_fill] = name[index_fill];
}
SizeT index_reverse_copy = rt_string_len(parent_name);
@@ -387,7 +360,7 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char*
return nullptr;
}
- child_catalog->DataFork = part_block->DiskSize - start_free;
+ child_catalog->DataFork = part_block->DiskSize - kNeFSRootCatalogStartAddress - start_free;
child_catalog->ResourceFork = child_catalog->DataFork;
// Write the new catalog next sibling, if we don't know this parent. //
@@ -755,9 +728,9 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::FindCatalog(_Input const Char* c
{
Char parent_name[kNeFSNodeNameLen] = {0};
- for (SizeT indexFill = 0; indexFill < rt_string_len(catalog_name); ++indexFill)
+ for (SizeT index_fill = 0; index_fill < rt_string_len(catalog_name); ++index_fill)
{
- parent_name[indexFill] = catalog_name[indexFill];
+ parent_name[index_fill] = catalog_name[index_fill];
}
SizeT index_reverse_copy = rt_string_len(parent_name);
@@ -1055,7 +1028,7 @@ namespace Kernel::Detail
kcout << "Creating A:\r";
kDiskMountpoint.A() = io_construct_main_drive();
-
+
kcout << "Creating A: [ OK ]\r";
return true;
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index 06223ff9..fea439ca 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -72,7 +72,7 @@ namespace Kernel::Detail
mJournal.CreateJournal(mNeFS);
KString xml;
- xml += "<LOG_XML>Formatted Filesystem</LOG_XML>";
+ xml += "<LOG_XML>Format Filesystem NeFS for ZkaOS.</LOG_XML>";
KString name;
name += "NeFS Format System";
diff --git a/dev/LibSCI/libsci.json b/dev/LibSCI/libsci.json
index 34f4fb0a..8b54828d 100644
--- a/dev/LibSCI/libsci.json
+++ b/dev/LibSCI/libsci.json
@@ -3,7 +3,7 @@
"compiler_std": "c++20",
"headers_path": ["../", "./"],
"sources_path": ["src/*.cc", "src/*.o"],
- "output_name": "LibSCI.dylib",
+ "output_name": "libSCI.dylib",
"compiler_flags": [
"-fPIC",
"-ffreestanding",
diff --git a/public/frameworks/.keep b/public/frameworks/.keep
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/public/frameworks/.keep