log.debug("indirectWrite(blockNr="+dataBlockNr+", offset="+offset+"...)");
	private final void indirectWrite(long dataBlockNr, long offset, long allocatedBlocks, long value, int indirectionLevel) 		throws IOException, FileSystemException {			byte[] data = fs.getBlock( dataBlockNr );			if(indirectionLevel==1) {					//data is a (simple) indirect block					Ext2Utils.set32(data, (int)offset*4, value);					//write back the updated block					fs.writeBlock( dataBlockNr, data, false );					return;			}			long blockNr;			long blockIndex = offset / (long)Math.pow(getIndirectCount(), indirectionLevel-1);			long blockOffset= offset % (long)Math.pow(getIndirectCount(), indirectionLevel-1);			if(blockOffset==0) {					//need to reserve the indirect block itself					blockNr = findFreeBlock(allocatedBlocks++);					Ext2Utils.set32(data, (int)blockIndex*4, blockNr);					fs.writeBlock( dataBlockNr, data, false);						//need to blank the block so that e2fsck does not complain					byte[] zeroes=new byte[fs.getBlockSize()];	//blank the block					Arrays.fill(zeroes, 0, fs.getBlockSize(), (byte)0);					fs.writeBlock(blockNr, zeroes, false);			} else					blockNr = Ext2Utils.get32(data, (int)blockIndex*4);			indirectWrite( blockNr, blockOffset, allocatedBlocks, value, indirectionLevel-1);	}