void assignToBlock ( BlockId blk ) { internalLock . writeLock ( ) . lock ( ) ; try { flush ( ) ; this . blk = blk ; contents . read ( blk ) ; pins = 0 ; lastLsn = LogSeqNum . readFromPage ( contents , LAST_LSN_OFFSET ) ; } finally { internalLock . writeLock ( ) . unlock ( ) ; } }
Reads the contents of the specified block into the buffer s page . If the buffer was dirty then the contents of the previous page are first written to disk .