+yaffs_Object *yaffsfs_GetHandleObject(int handle)
+{
+ yaffsfs_Inode *in = yaffsfs_GetInodePointer(handle);
+
+ if(in)
+ return in->iObj;
+
+ return NULL;
+}
+
+//yaffsfs_GetInodeIdForObject
+// Grab an inode entry when opening a new inode.
+//
+
+static int yaffsfs_GetInodeIdForObject(yaffs_Object *obj)
+{
+ int i;
+ int ret = -1;
+ yaffsfs_Inode *in = NULL;
+
+ if(obj)
+ obj = yaffs_GetEquivalentObject(obj);
+
+ /* Look for it. If we can't find it then make one */
+ for(i = 0; i < YAFFSFS_N_HANDLES && ret < 0; i++){
+ if(yaffsfs_inode[i].iObj == obj)
+ ret = i;
+ }
+
+ for(i = 0; i < YAFFSFS_N_HANDLES && ret < 0; i++){
+ if(!yaffsfs_inode[i].iObj)
+ ret = i;
+ }
+
+
+ if(ret>=0){
+ in = &yaffsfs_inode[ret];
+ if(!in->iObj)
+ in->count = 0;
+ in->iObj = obj;
+ in->count++;
+ }
+
+
+ return ret;
+}
+
+static void yaffsfs_ReleaseInode(yaffsfs_Inode *in)
+{
+ yaffs_Object *obj;
+
+ obj = in->iObj;
+
+ if(obj->unlinked)
+ yaffs_DeleteObject(obj);
+
+ obj->myInode = NULL;
+ in->iObj = NULL;
+
+}
+
+static void yaffsfs_PutInode(int inodeId)
+{
+ if(inodeId >= 0 && inodeId < YAFFSFS_N_HANDLES){
+ yaffsfs_Inode *in = & yaffsfs_inode[inodeId];
+ in->count--;
+ if(in->count <= 0)
+ yaffsfs_ReleaseInode(in);
+ }
+}
+