INodeTable iNodeTable = iNodeTables[group]; INode result = new INode(this, new INodeDescriptor(iNodeTable, iNodeNr, group, index)); result.read(iNodeTable.getInodeData(index));  synchronized(inodeCache) {  if(!inodeCache.containsKey(key)) { inodeCache.put(key, result); return result; } else return (INode)inodeCache.get(key); } }
log.debug("iNodeCache size: " + inodeCache.size());  synchronized (inodeCache) {  if (inodeCache.containsKey(key)) return (INode) inodeCache.get(key); }     int group = (int) ((iNodeNr - 1) / superblock.getINodesPerGroup()); int index = (int) ((iNodeNr - 1) % superblock.getINodesPerGroup());   INodeTable iNodeTable = iNodeTables[group]; INode result = new INode(this, new INodeDescriptor(iNodeTable, iNodeNr, group, index)); result.read(iNodeTable.getInodeData(index));  synchronized (inodeCache) {  if (!inodeCache.containsKey(key)) { inodeCache.put(key, result); return result; } else return (INode) inodeCache.get(key); } }
	public INode getINode(int iNodeNr) throws IOException, FileSystemException{		if((iNodeNr<1)||(iNodeNr>superblock.getINodesCount()))			throw new FileSystemException("INode number ("+iNodeNr+") out of range (0-"+superblock.getINodesCount()+")");					Integer key=new Integer(iNodeNr);				log.debug("iNodeCache size: "+inodeCache.size());				synchronized(inodeCache) {			//check if the inode is already in the cache			if(inodeCache.containsKey(key)) 				return (INode)inodeCache.get(key);		}				//move the time consuming disk read out of the synchronized block		//(see comments at getBlock())		int group = (int) ((iNodeNr - 1) / superblock.getINodesPerGroup());		int index = (int) ((iNodeNr - 1) % superblock.getINodesPerGroup());		//get the part of the inode table that contains the inode		INodeTable iNodeTable = iNodeTables[group];		INode result = new INode(this, new INodeDescriptor(iNodeTable, iNodeNr, group, index));		result.read(iNodeTable.getInodeData(index));								synchronized(inodeCache) {			//check if the inode is still not in the cache			if(!inodeCache.containsKey(key)) { 				inodeCache.put(key, result);				return result;				}			else				return (INode)inodeCache.get(key);						}	}