X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FExt2%2Fext2.c;h=460c4fbbd861e34013a385ae968dc9084ed8bcaf;hb=8e54c94fa54a975f1eea55e4dda475251d5445b6;hp=f8f942d58153c79243f8d5705d60ea290c9c41d3;hpb=e93b9c1fe4068dd5b07049c0926dbb910d20a99b;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/Ext2/ext2.c b/KernelLand/Modules/Filesystems/Ext2/ext2.c index f8f942d5..460c4fbb 100644 --- a/KernelLand/Modules/Filesystems/Ext2/ext2.c +++ b/KernelLand/Modules/Filesystems/Ext2/ext2.c @@ -209,22 +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); - if( Inode_UncacheNode(disk->CacheID, Node->Inode) && was_not_referenced ) + tVFS_ACL *acls = Node->ACLs; + if( Inode_UncacheNode(disk->CacheID, Node->Inode) == 1 ) { - // Remove inode + 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 ; }