public void update() throws IOException {
public synchronized void update() throws IOException {
	public void update() throws IOException {		if(isDirty()) {			log.debug("Updating superblock copies");			byte[] oldData;						//update the main copy			if(getFirstDataBlock()==0) {				oldData=fs.getBlock(0);				//the block size is an integer multiply of 1024, and if getFirstDataBlock==0, it's				//at least 2048 bytes				System.arraycopy(data, 0, oldData, 1024, SUPERBLOCK_LENGTH);			} else {				oldData=fs.getBlock(getFirstDataBlock());				System.arraycopy(data, 0, oldData, 0, SUPERBLOCK_LENGTH);							}			fs.writeBlock(getFirstDataBlock(), oldData, true);						//update the other copies			for(int i=1; i<fs.getGroupCount(); i++) {				//check if there is a superblock copy in the block group				if(!fs.groupHasDescriptors(i))					continue;				long blockNr=getFirstDataBlock() + i*getBlocksPerGroup();				oldData = fs.getBlock(blockNr);				setBlockGroupNr(i);				//update the old contents with the new superblock				System.arraycopy(data, 0, oldData, 0, SUPERBLOCK_LENGTH);				fs.writeBlock(blockNr, oldData, true);			}						setBlockGroupNr(0);			setDirty(false);		}			}