final void freeBlock ( long blockId ) throws IOException { if ( blockId == 0 ) { // Can't free block 0. } else { try { mFreeBlocksBitlist . lock ( ) . acquireWriteLock ( ) ; mFreeBlocksBitlist . set ( blockId ) ; if ( mFirstFreeBlock == 0 || blockId < mFirstFreeBlock ) { setFirstFreeBlock ( blockId ) ; } } catch ( InterruptedException e ) { throw new InterruptedIOException ( ) ; } finally { mFreeBlocksBitlist . lock ( ) . releaseLock ( ) ; } } }
Attempting to free block 0 or a block that is already free has no effect .