Home | History | Annotate | Download | only in fstyp

Lines Matching refs:offset

88 #define HAMMER_OFF_SHORT_MASK	0x000FFFFFFFFFFFFFULL /* offset portion */
89 #define HAMMER_OFF_LONG_MASK 0x0FFFFFFFFFFFFFFFULL /* offset portion */
93 #define HAMMER_BUFSIZE_DOALIGN(offset) \
94 (((offset) + HAMMER_BUFMASK) & ~HAMMER_BUFMASK)
95 #define HAMMER_BUFSIZE64_DOALIGN(offset) \
96 (((offset) + HAMMER_BUFMASK64) & ~HAMMER_BUFMASK64)
98 #define HAMMER_XBUFSIZE_DOALIGN(offset) \
99 (((offset) + HAMMER_XBUFMASK) & ~HAMMER_XBUFMASK)
100 #define HAMMER_XBUFSIZE64_DOALIGN(offset) \
101 (((offset) + HAMMER_XBUFMASK64) & ~HAMMER_XBUFMASK64)
120 * and volume number in addition to the offset. Most offsets are required
144 * In other words, HAMMER's logical filesystem offset consists of 64 bits,
148 * zone 0: available, a big-block that contains the offset is unused
149 * zone 1 (z,v,o): raw volume relative (offset 0 is the volume header)
150 * zone 2 (z,v,o): raw buffer relative (offset 0 is the first buffer)
151 * zone 3 (z,o): undo/redo fifo - fixed zone-2 offset array in volume header
157 * zone 15: unavailable, usually the offset is beyond volume size
161 * 2^8(max volumes) * 2^52(max volume size) = 2^60 = 1EB (long offset)
163 * 8bits 52bits (short offset)
174 * +-------------------------> offset 0 of a device/partition
181 * +-------------------------> vol_buf_beg (physical offset of zone-2)
204 * +-------------------------> offset 0 of a device/partition
211 * +-------------------------> vol_buf_beg (physical offset of zone-2)
253 #define HAMMER_ZONE(offset) ((offset) & HAMMER_OFF_ZONE_MASK)
255 #define hammer_is_zone_raw_volume(offset) \
256 (HAMMER_ZONE(offset) == HAMMER_ZONE_RAW_VOLUME)
257 #define hammer_is_zone_raw_buffer(offset) \
258 (HAMMER_ZONE(offset) == HAMMER_ZONE_RAW_BUFFER)
259 #define hammer_is_zone_undo(offset) \
260 (HAMMER_ZONE(offset) == HAMMER_ZONE_UNDO)
261 #define hammer_is_zone_freemap(offset) \
262 (HAMMER_ZONE(offset) == HAMMER_ZONE_FREEMAP)
263 #define hammer_is_zone_btree(offset) \
264 (HAMMER_ZONE(offset) == HAMMER_ZONE_BTREE)
265 #define hammer_is_zone_meta(offset) \
266 (HAMMER_ZONE(offset) == HAMMER_ZONE_META)
267 #define hammer_is_zone_large_data(offset) \
268 (HAMMER_ZONE(offset) == HAMMER_ZONE_LARGE_DATA)
269 #define hammer_is_zone_small_data(offset) \
270 (HAMMER_ZONE(offset) == HAMMER_ZONE_SMALL_DATA)
271 #define hammer_is_zone_unavail(offset) \
272 (HAMMER_ZONE(offset) == HAMMER_ZONE_UNAVAIL)
273 #define hammer_is_zone_data(offset) \
274 (hammer_is_zone_large_data(offset) || hammer_is_zone_small_data(offset))
280 #define hammer_is_zone_record(offset) \
281 hammer_is_index_record(HAMMER_ZONE_DECODE(offset))
288 #define hammer_is_zone_direct_xlated(offset) \
289 hammer_is_index_direct_xlated(HAMMER_ZONE_DECODE(offset))
301 #define HAMMER_OFF_SHORT_ENCODE(offset) \
302 ((hammer_off_t)(offset) & HAMMER_OFF_SHORT_MASK)
303 #define HAMMER_OFF_LONG_ENCODE(offset) \
304 ((hammer_off_t)(offset) & HAMMER_OFF_LONG_MASK)
306 #define HAMMER_ENCODE(zone, vol_no, offset) \
309 HAMMER_OFF_SHORT_ENCODE(offset))
310 #define HAMMER_ENCODE_RAW_VOLUME(vol_no, offset) \
311 HAMMER_ENCODE(HAMMER_ZONE_RAW_VOLUME_INDEX, vol_no, offset)
312 #define HAMMER_ENCODE_RAW_BUFFER(vol_no, offset) \
313 HAMMER_ENCODE(HAMMER_ZONE_RAW_BUFFER_INDEX, vol_no, offset)
314 #define HAMMER_ENCODE_UNDO(offset) \
315 HAMMER_ENCODE(HAMMER_ZONE_UNDO_INDEX, HAMMER_ROOT_VOLNO, offset)
316 #define HAMMER_ENCODE_FREEMAP(vol_no, offset) \
317 HAMMER_ENCODE(HAMMER_ZONE_FREEMAP_INDEX, vol_no, offset)
322 #define hammer_xlate_to_zoneX(zone, offset) \
323 HAMMER_ZONE_ENCODE((zone), (offset) & ~HAMMER_OFF_ZONE_MASK)
324 #define hammer_xlate_to_zone2(offset) \
325 hammer_xlate_to_zoneX(HAMMER_ZONE_RAW_BUFFER_INDEX, (offset))
340 * offset into a raw zone 2 offset. The layer 1 handles 18 bits and the
369 #define HAMMER_BIGBLOCK_DOALIGN(offset) \
370 (((offset) + HAMMER_BIGBLOCK_MASK64) & ~HAMMER_BIGBLOCK_MASK64)
391 hammer_off_t phys_offset; /* zone-2 offset only used by zone-4 */
392 hammer_off_t first_offset; /* zone-X offset only used by zone-3 */
393 hammer_off_t next_offset; /* zone-X offset for allocation */
394 hammer_off_t alloc_offset; /* zone-X offset only used by zone-3 */
416 * zone-X blockmap offset: [zone:4][layer1:18][layer2:19][big-block:23]
473 #define HAMMER_BLOCKMAP_LAYER2_DOALIGN(offset) \
474 (((offset) + HAMMER_BLOCKMAP_LAYER2_MASK) & \
479 * a zone-2 physical offset.
490 * Byte offset within layer1 or layer2 big-block for the entry representing
491 * a zone-2 physical offset. Multiply the index by sizeof(blockmap_layer).
502 * Move on to offset 0 of the next layer1 or layer2.
504 #define HAMMER_ZONE_LAYER1_NEXT_OFFSET(offset) \
505 (((offset) + HAMMER_BLOCKMAP_LAYER2) & ~HAMMER_BLOCKMAP_LAYER2_MASK)
507 #define HAMMER_ZONE_LAYER2_NEXT_OFFSET(offset) \
508 (((offset) + HAMMER_BIGBLOCK_SIZE) & ~HAMMER_BIGBLOCK_MASK64)
578 #define HAMMER_UNDO_DOALIGN(offset) \
579 (((offset) + HAMMER_UNDO_MASK) & ~HAMMER_UNDO_MASK64)
619 hammer_off_t undo_offset; /* zone-1,2 offset */
666 hammer_off_t redo_offset; /* logical offset in file */
708 * vol_bot_beg - offset of boot area (mem_beg - bot_beg bytes)
709 * vol_mem_beg - offset of memory log (buf_beg - mem_beg bytes)
710 * vol_buf_beg - offset of the first buffer in volume
711 * vol_buf_end - offset of volume EOF (on buffer boundary)
719 * The buffer offset is a physical offset of zone-2 offset. The lower
720 * 52 bits of the zone-2 offset is added to the buffer offset of each
721 * volume to generate an actual I/O offset within the block device.
747 * These are relative to block device offset, not zone offsets.
749 int64_t vol_bot_beg; /* offset of boot area */
750 int64_t vol_mem_beg; /* offset of memory log */
751 int64_t vol_buf_beg; /* offset of the first buffer in volume */
752 int64_t vol_buf_end; /* offset of volume EOF (on buffer boundary) */
781 hammer_off_t vol0_btree_root; /* B-Tree root offset in zone-8 */
939 #define HAMMER_DATA_DOALIGN(offset) \
940 (((offset) + 15) & ~15)
941 #define HAMMER_DATA_DOALIGN_WITH(type, offset) \
942 (((type)(offset) + 15) & (~(type)15))
952 * offset. A portion of the namekey is an iterator/randomizer to deal