hammer_off_t
(((hammer_off_t)(zone) << 60) | (ham_off))
((int)(((hammer_off_t)(ham_off) >> 60)))
((hammer_off_t)((vol_no) & 255) << 52)
((int)(((hammer_off_t)(ham_off) >> 52) & 255))
((hammer_off_t)(offset) & HAMMER_OFF_SHORT_MASK)
((hammer_off_t)(offset) & HAMMER_OFF_LONG_MASK)
(((hammer_off_t)(zone) << 60) | \
((hammer_off_t)HAMMER_BUFFERS_PER_BIGBLOCK_MASK)
hammer_off_t phys_offset; /* zone-2 offset only used by zone-4 */
hammer_off_t first_offset; /* zone-X offset only used by zone-3 */
hammer_off_t next_offset; /* zone-X offset for allocation */
hammer_off_t alloc_offset; /* zone-X offset only used by zone-3 */
hammer_off_t blocks_free; /* big-blocks free */
hammer_off_t phys_offset; /* UNAVAIL or zone-2 */
hammer_off_t reserved01;
#define HAMMER_BLOCKMAP_UNAVAIL ((hammer_off_t)-1LL)
hammer_off_t undo_offset; /* zone-1,2 offset */
hammer_off_t redo_offset; /* logical offset in file */
hammer_off_t vol0_btree_root; /* B-Tree root offset in zone-8 */
hammer_off_t vol0_reserved03;
hammer_off_t vol0_undo_array[HAMMER_MAX_UNDO_BIGBLOCKS];
#define HAMMER_OFF_BAD ((hammer_off_t)-1)