X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FFilesystems%2FFAT%2Fdir.c;h=c7268d735fb3aacd4dbc1c8830893d1d7ae8caa0;hb=d0b4559f2936f6d9f06be0f7c3c51527a480ec0d;hp=b74b31ff9efa6937133678c211765db5638b9217;hpb=4ebe00546574e97c5316881881f7f2562deea74b;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Filesystems/FAT/dir.c b/KernelLand/Modules/Filesystems/FAT/dir.c index b74b31ff..c7268d73 100644 --- a/KernelLand/Modules/Filesystems/FAT/dir.c +++ b/KernelLand/Modules/Filesystems/FAT/dir.c @@ -278,7 +278,10 @@ int FAT_int_GetEntryByCluster(tVFS_Node *DirNode, Uint32 Cluster, fat_filetable fat_filetable fileinfo[ents_per_sector]; int i, sector; - Mutex_Acquire(&DirNode->Lock); + if( Mutex_Acquire(&DirNode->Lock) ) { + return -EINTR; + } + sector = 0; for( i = 0; ; i ++ ) { @@ -318,7 +321,7 @@ int FAT_int_GetEntryByCluster(tVFS_Node *DirNode, Uint32 Cluster, fat_filetable } Mutex_Release(&DirNode->Lock); - return -1; + return -ENOENT; } /* @@ -445,7 +448,9 @@ Uint16 *FAT_int_GetLFN(tVFS_Node *Node, int ID) tFAT_LFNCache *cache; int i, firstFree; - Mutex_Acquire( &Node->Lock ); + if( Mutex_Acquire( &Node->Lock ) ) { + return NULL; + } // TODO: Thread Safety (Lock things) cache = Node->Data; @@ -659,6 +664,7 @@ tVFS_Node *FAT_GetNodeFromINode(tVFS_Node *Root, Uint64 Inode) if( ret ) { if( (ret->Inode >> 32) != 0 ) { LOG("Node in cache, quick return"); + LEAVE('p', ret); return ret; } else { @@ -812,7 +818,9 @@ int FAT_Link(tVFS_Node *DirNode, const char *NewName, tVFS_Node *NewNode) const int eps = 512 / sizeof(fat_filetable); fat_filetable fileinfo[eps]; - Mutex_Acquire( &DirNode->Lock ); + if( Mutex_Acquire( &DirNode->Lock ) ) { + return EINTR; + } // -- Ensure duplicates aren't created -- if( FAT_int_GetEntryByName(DirNode, NewName, &ft) >= 0 ) { @@ -1096,7 +1104,9 @@ int FAT_Unlink(tVFS_Node *Node, const char *OldName) tVFS_Node *child; fat_filetable ft; - Mutex_Acquire(&Node->Lock); + if( Mutex_Acquire(&Node->Lock) ) { + return EINTR; + } int id = FAT_int_GetEntryByName(Node, OldName, &ft); if(id == -1) {