private List<String> orphanCheck(String dataNodeName, List<String> chunkNameList_DataNode) {
		
		Set<String> fileNameSet = this.fileTbl.keySet();
		
		Set<String> chunkSet_NameNode = new HashSet<String>();
		
		for (String fileName : fileNameSet) {
			
			HDFSFile file = this.fileTbl.get(fileName);  //Check if the file is new created
			
			synchronized(file) {
				
				Iterator<HDFSChunk> chunkIt = file.getChunkList().iterator();
				
				while (chunkIt.hasNext()) {
					
					HDFSChunk chunk = chunkIt.next();
					chunkSet_NameNode.add(chunk.getChunkName());
					
				}
				
			}
		}
		
		List<String> deletedChunkName = new ArrayList<String>();
		for (String chunkName : chunkNameList_DataNode) {
			
			/* If the NameNode doesn't have such chunk */
			if (!chunkSet_NameNode.contains(chunkName)) {
				
				/* Add DeleteChunkTask to the list */
				String tid = String.format("%d", (new Date()).getTime());
				this.dataNodeTaskTbl.get(dataNodeName).add(new DeleteOrphanTask(tid, chunkName));
				deletedChunkName.add(chunkName);
			}			
		}
		
		for (String chunkName : deletedChunkName) {
			chunkNameList_DataNode.remove(chunkName);
		}
		
		return chunkNameList_DataNode;
	}