public void init() {
	try {
	    File disk = new File(_volName);
	    FileInputStream in = new FileInputStream(disk);
	    byte[] blockRead = new byte[1024];
	    in.read(blockRead);// block 0 is empty/ has metadata

	    // reading in iNode blocks
	    for (int i = 0; i < (Constants.MAX_DFILES * Constants.INODE_SIZE)
		    / Constants.BLOCK_SIZE; i++) {
		in.read(blockRead);// read in first block with 32 iNodes

		for (int j = 0; j < 32; j++) {
		    byte[] node = Arrays.copyOfRange(blockRead, j * 32,
			    (j + 1) * 32);
		    int fileID = byteArrayToInt(node, 0);
		    int[] blockMap = new int[7];
		    int fileSize = 0;
		    DFileID DFID;
		    if (fileID > 0)// if this inode holds a reference to a DFID
		    {
			for (int k = 0; k < 7; k++) {
			    int blockLocation = byteArrayToInt(node,
				    4 + (k * 4));
			    if (blockLocation >= 0) {
				availableBlocks[blockLocation] = 1;
				fileSize += Constants.BLOCK_SIZE;
			    }
			    blockMap[k] = blockLocation;
			}
			DFID = new DFileID(fileID);
		    } else {
			DFID = new DFileID(-1);
		    }

		    INode currentNode = new INode(DFID, blockMap);
		    currentNode.setSize(fileSize);
		    myINodes[i * 32 + j] = currentNode;
		    // iNodes.add(currentNode);
		    // DFileIds[fileID] = 1;
		    // myINodes.put(new DFileID(i*1024+j*32), currentNode);
		}

	    }
	} catch (FileNotFoundException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	} catch (IOException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

    }