diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-12 13:13:52 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-01-12 13:13:52 +0100 |
| commit | 561ba6a493f35461e1eef4e3a488b99e13803682 (patch) | |
| tree | c61b6ea50c227c0e2fff4bbc04b2fb5eb9aad449 /dev | |
| parent | 2f72dc4a5de7836955c7cfda87e7e97a06e37837 (diff) | |
ADD: Worked on a set of patches in NeFS and DriveMgr, tweaks on
BitMapMgr.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev')
| -rw-r--r-- | dev/Kernel/FSKit/NeFS.h | 16 | ||||
| -rw-r--r-- | dev/Kernel/src/BitMapMgr.cc | 2 | ||||
| -rw-r--r-- | dev/Kernel/src/DriveMgr.cc | 26 | ||||
| -rw-r--r-- | dev/Kernel/src/FS/NeFS.cc | 24 |
4 files changed, 33 insertions, 35 deletions
diff --git a/dev/Kernel/FSKit/NeFS.h b/dev/Kernel/FSKit/NeFS.h index b03b4e74..d9a55789 100644 --- a/dev/Kernel/FSKit/NeFS.h +++ b/dev/Kernel/FSKit/NeFS.h @@ -142,6 +142,8 @@ enum /// @brief Catalog type. struct PACKED NFS_CATALOG_STRUCT final { + BOOL ForkOrCatalog : 1{0}; + Kernel::Char Name[kNeFSNodeNameLen] = {0}; Kernel::Char Mime[kNeFSMimeNameLen] = {0}; @@ -177,6 +179,8 @@ struct PACKED NFS_CATALOG_STRUCT final /// whereas the data fork is reserved for file data. struct PACKED NFS_FORK_STRUCT final { + BOOL ForkOrCatalog : 1{1}; + Kernel::Char ForkName[kNeFSForkNameLen] = {0}; Kernel::Char CatalogName[kNeFSNodeNameLen] = {0}; @@ -192,6 +196,8 @@ struct PACKED NFS_FORK_STRUCT final Kernel::Lba NextSibling; Kernel::Lba PreviousSibling; + + Kernel::Char Pad[2] = {0}; }; /// @brief Partition block type @@ -263,7 +269,7 @@ namespace Kernel /// @param catalog it's catalog /// @param theFork the fork itself. /// @return the fork - _Output BOOL CreateFork(_Input NFS_CATALOG_STRUCT* catalog, + _Output BOOL CreateFork(_Input const Char* catalog, _Input NFS_FORK_STRUCT& theFork); /// @brief Find fork inside New filesystem. @@ -398,13 +404,12 @@ namespace Kernel Char* xml_data, Char* journal_name) { - if (!parser || - !mNode) + if (!parser) return NO; NFS_FORK_STRUCT new_fork{}; - rt_copy_memory(mNode->Name, new_fork.CatalogName, rt_string_len(mNode->Name)); + rt_copy_memory(mStamp, new_fork.CatalogName, rt_string_len(mStamp)); rt_copy_memory(journal_name, new_fork.ForkName, rt_string_len(journal_name)); new_fork.ResourceKind = kNeFSCatalogKindMetaFile; @@ -413,7 +418,8 @@ namespace Kernel new_fork.DataSize = rt_string_len(xml_data); new_fork.Kind = kNeFSRsrcForkKind; - parser->CreateFork(mNode, new_fork); + if (!parser->CreateFork(mStamp, new_fork)) + return NO; kcout << "Commit: " << xml_data << "\r\nTo: " << journal_name << endl; diff --git a/dev/Kernel/src/BitMapMgr.cc b/dev/Kernel/src/BitMapMgr.cc index 7ce6ba1a..5407b3fc 100644 --- a/dev/Kernel/src/BitMapMgr.cc +++ b/dev/Kernel/src/BitMapMgr.cc @@ -108,7 +108,7 @@ namespace Kernel return (VoidPtr)ptr_bit_set; } - kcout << "Missed potnetial bitmp!\r\n"; + kcout << "Missed potential BitMap as it is already used!\r\n"; } else if (ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) { diff --git a/dev/Kernel/src/DriveMgr.cc b/dev/Kernel/src/DriveMgr.cc index 544c0c26..ab966575 100644 --- a/dev/Kernel/src/DriveMgr.cc +++ b/dev/Kernel/src/DriveMgr.cc @@ -32,17 +32,6 @@ namespace Kernel return; } - if (pckt->fPacketDrive->fSectorSz == 0) - { -#ifdef __ATA_PIO__ - pckt->fPacketDrive->fSectorSz = kATASectorSize; -#elif defined(__AHCI__) - pckt->fPacketDrive->fSectorSz = kAHCISectorSize; -#else - pckt->fPacketDrive->fSectorSz = 512; -#endif - } - if (!StringBuilder::Equals("fs/detect-packet", pckt->fPacketMime) && pckt->fPacketDrive->fLbaStart > 0 && pckt->fPacketDrive->fLbaEnd > 0) { @@ -53,6 +42,8 @@ namespace Kernel } } + kcout << pckt->fPacketMime << endl; + #ifdef __AHCI__ drv_std_read(pckt->fPacketLba, (Char*)pckt->fPacketContent, pckt->fPacketDrive->fSectorSz, pckt->fPacketSize); #elif defined(__ATA_PIO__) || defined(__ATA_DMA__) @@ -70,15 +61,18 @@ namespace Kernel return; } - if (!StringBuilder::Equals("fs/detect-packet", pckt->fPacketMime)) + if (!StringBuilder::Equals("fs/detect-packet", pckt->fPacketMime) && + pckt->fPacketDrive->fLbaStart > 0 && pckt->fPacketDrive->fLbaEnd > 0) { - if (pckt->fPacketLba < pckt->fPacketDrive->fLbaStart) - return; - if (pckt->fPacketLba > pckt->fPacketDrive->fLbaEnd) + { + pckt->fPacketGood = NO; return; + } } + kcout << pckt->fPacketMime << endl; + #ifdef __AHCI__ drv_std_write(pckt->fPacketLba, (Char*)pckt->fPacketContent, pckt->fPacketDrive->fSectorSz, pckt->fPacketSize); #elif defined(__ATA_PIO__) || defined(__ATA_DMA__) @@ -197,7 +191,7 @@ namespace Kernel #elif defined(__AHCI__) trait.fSectorSz = kAHCISectorSize; #else - trait.fSectorSz = 512; + trait.fSectorSz = 512; #endif trait.fPacket.fPacketLba = kEPMBootBlockLba; trait.fPacket.fPacketSize = sizeof(EPM_PART_BLOCK); diff --git a/dev/Kernel/src/FS/NeFS.cc b/dev/Kernel/src/FS/NeFS.cc index 1f2f1c5e..10bcad02 100644 --- a/dev/Kernel/src/FS/NeFS.cc +++ b/dev/Kernel/src/FS/NeFS.cc @@ -60,11 +60,16 @@ STATIC MountpointInterface kDiskMountpoint; /// @param the_fork the fork itself. /// @return the fork /***********************************************************************************/ -_Output BOOL NeFileSystemParser::CreateFork(_Input NFS_CATALOG_STRUCT* catalog, +_Output BOOL NeFileSystemParser::CreateFork(_Input const Char* catalog_name, _Input NFS_FORK_STRUCT& the_fork) { - if (catalog && the_fork.DataSize > 0) - { + if (the_fork.DataSize > 0) + { + auto catalog = this->GetCatalog(catalog_name); + + if (!catalog) + return NO; + Lba lba = (the_fork.Kind == kNeFSDataForkKind) ? catalog->DataFork : catalog->ResourceFork; @@ -79,12 +84,6 @@ _Output BOOL NeFileSystemParser::CreateFork(_Input NFS_CATALOG_STRUCT* catalog, else catalog->ResourceForkSize += the_fork.DataSize; - drv.fPacket.fPacketLba = catalog->NextSibling - sizeof(NFS_CATALOG_STRUCT); - drv.fPacket.fPacketSize = sizeof(NFS_CATALOG_STRUCT); - drv.fPacket.fPacketContent = catalog; - - drv.fOutput(&drv.fPacket); - /// do not check for anything. Loop until we get what we want, that is a free fork zone. while (lba_next_fork >= kNeFSCatalogStartAddress) { @@ -168,7 +167,6 @@ _Output NFS_FORK_STRUCT* NeFileSystemParser::FindFork(_Input NFS_CATALOG_STRUCT* case 2: err_global_get() = kErrorDiskIsFull; break; - case 3: err_global_get() = kErrorNoSuchDisk; break; @@ -242,9 +240,9 @@ _Output NFS_CATALOG_STRUCT* NeFileSystemParser::CreateCatalog(_Input const Char* Char parent_name[kNeFSNodeNameLen] = {0}; - for (SizeT index_name = 0UL; index_name < rt_string_len(name); ++index_name) + for (SizeT indexName = 0UL; indexName < rt_string_len(name); ++indexName) { - parent_name[index_name] = name[index_name]; + parent_name[indexName] = name[indexName]; } if (*parent_name == 0) @@ -1003,4 +1001,4 @@ namespace Kernel::Detail } } // namespace Kernel::Detail -#endif // ifdef __FSKIT_INCLUDES_NEFS__ +#endif // ifdef __FSKIT_INCLUDES_NEFS__
\ No newline at end of file |
