X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FExt2%2Fext2.c;h=3a9a080ebf1bece04d8c2b7cccdcf0b421dfe180;hb=cbe0bf8833612d7581e96a55681fc576202d2969;hp=4d13f1ed795e57da1148c362bc04cbdbf3fcd8c5;hpb=d0b4559f2936f6d9f06be0f7c3c51527a480ec0d;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/Ext2/ext2.c b/KernelLand/Modules/Filesystems/Ext2/ext2.c index 4d13f1ed..3a9a080e 100644 --- a/KernelLand/Modules/Filesystems/Ext2/ext2.c +++ b/KernelLand/Modules/Filesystems/Ext2/ext2.c @@ -139,7 +139,7 @@ tVFS_Node *Ext2_InitDevice(const char *Device, const char **Options) disk->GroupCount = groupCount; // Get an inode cache handle - disk->CacheID = Inode_GetHandle(); + disk->CacheID = Inode_GetHandle(NULL); // Get Block Size if( sb.s_log_block_size > MAX_BLOCK_LOG_SIZE ) { @@ -395,7 +395,7 @@ tVFS_Node *Ext2_int_CreateNode(tExt2_Disk *Disk, Uint InodeID) int Ext2_int_WritebackNode(tExt2_Disk *Disk, tVFS_Node *Node) { - tExt2_Inode inode; + tExt2_Inode inode = {0}; if( Disk != Node->ImplPtr ) { Log_Error("Ext2", "Ext2_int_WritebackNode - Disk != Node->ImplPtr"); @@ -529,7 +529,7 @@ Uint32 Ext2_int_AllocateInode(tExt2_Disk *Disk, Uint32 Parent) VFS_ReadAt(Disk->FD, Disk->BlockSize*bg->bg_inode_bitmap+ofs, sector_size, buf); int byte, bit; - for( byte = 0; byte < sector_size && buf[byte] != 0xFF; byte ++ ) + for( byte = 0; byte < sector_size && buf[byte] == 0xFF; byte ++ ) ; if( byte < sector_size ) { @@ -577,6 +577,14 @@ void Ext2_int_UpdateSuperblock(tExt2_Disk *Disk) // Update Primary VFS_WriteAt(Disk->FD, 1024, 1024, &Disk->SuperBlock); + // - Update block groups while we're at it + VFS_WriteAt( + Disk->FD, + Disk->SuperBlock.s_first_data_block * Disk->BlockSize + 1024, + sizeof(tExt2_Group)*Disk->GroupCount, + Disk->Groups + ); + // Secondaries // at Block Group 1, 3^n, 5^n, 7^n