X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FExt2%2Fext2.c;h=460c4fbbd861e34013a385ae968dc9084ed8bcaf;hb=8e54c94fa54a975f1eea55e4dda475251d5445b6;hp=5c9f97a5c5413930a225e203aacc8f30f6921820;hpb=06a3eb8135ecb748c998e6827d20338158526d12;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/Ext2/ext2.c b/KernelLand/Modules/Filesystems/Ext2/ext2.c index 5c9f97a5..460c4fbb 100644 --- a/KernelLand/Modules/Filesystems/Ext2/ext2.c +++ b/KernelLand/Modules/Filesystems/Ext2/ext2.c @@ -209,29 +209,40 @@ void Ext2_Unmount(tVFS_Node *Node) void Ext2_CloseFile(tVFS_Node *Node) { tExt2_Disk *disk = Node->ImplPtr; + ENTER("pNode", Node); if( Mutex_Acquire(&Node->Lock) != 0 ) { + LEAVE('-'); return ; } if( Node->Flags & VFS_FFLAG_DIRTY ) { // Commit changes + Log_Warning("Ext2", "TODO: Commit node changes"); } int was_not_referenced = (Node->ImplInt == 0); tVFS_ACL *acls = Node->ACLs; - if( Inode_UncacheNode(disk->CacheID, Node->Inode) ) + if( Inode_UncacheNode(disk->CacheID, Node->Inode) == 1 ) { if( was_not_referenced ) { + LOG("Removng inode"); // Remove inode + Log_Warning("Ext2", "TODO: Remove inode when not deleted"); } if( acls != &gVFS_ACL_EveryoneRW ) { free(acls); } + LOG("Node cleaned"); } + else { + LOG("Still referenced, releasing lock"); + Mutex_Release(&Node->Lock); + } + LEAVE('-'); return ; }