@Override
	public void unlockFile(FileHandle handle, long byteOffset, long length)
			throws PathNotFoundException, AccessDeniedException,
			NotAFileException, UnsupportedFeatureException {
		if (hardlinks)
		{
			if (RedirectedFileHandle.class.isInstance(handle))
			{
				handle = ((RedirectedFileHandle)handle).getRedirectedFileHandle();
			}
		}
		if (fileLocking)
		{
			FileLock lock = getFileLockWithinOffset(handle.getFilePath(), byteOffset, byteOffset + length);
			if (lock == null)
				return;
			
			if (lock.handle != handle)
				throw new AccessDeniedException();
			
			LinkedList<FileLock> locklist = this.getFileLockList(handle.getFilePath(), false);
			locklist.remove(lock);
			
		} else
			innerFs.unlockFile(handle, byteOffset, length);
	}