<dec f='src/src/sys/kern/vfs_wapbl.c' l='168' type='struct wapbl_wc_header *'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='377' u='r' c='wapbl_start_flush_inodes'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='537' u='w' c='wapbl_start'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='565' u='r' c='wapbl_start'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='566' u='r' c='wapbl_start'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='566' u='r' c='wapbl_start'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='744' u='r' c='wapbl_stop'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='745' u='r' c='wapbl_stop'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='745' u='r' c='wapbl_stop'/>
<use f='src/src/sys/kern/vfs_wapbl.c' l='2205' u='r' c='wapbl_write_commit'/>
<offset>768</offset>
<doc f='src/src/sys/kern/vfs_wapbl.c' l='129'>/*
	 * WAPBL log layout, stored on wl_devvp at wl_logpbn:
	 *
	 *  ___________________ wl_circ_size __________________
	 * /                                                   \
	 * +---------+---------+-------+--------------+--------+
	 * [ commit0 | commit1 | CCWCW | EEEEEEEEEEEE | CCCWCW ]
	 * +---------+---------+-------+--------------+--------+
	 *       wl_circ_off --^       ^-- wl_head    ^-- wl_tail
	 *
	 * commit0 and commit1 are commit headers.  A commit header has
	 * a generation number, indicating which of the two headers is
	 * more recent, and an assignment of head and tail pointers.
	 * The rest is a circular queue of log records, starting at
	 * the byte offset wl_circ_off.
	 *
	 * E marks empty space for records.
	 * W marks records for block writes issued but waiting.
	 * C marks completed records.
	 *
	 * wapbl_flush writes new records to empty `E&apos; spaces after
	 * wl_head from the current transaction in memory.
	 *
	 * wapbl_truncate advances wl_tail past any completed `C&apos;
	 * records, freeing them up for use.
	 *
	 * head == tail == 0 means log is empty.
	 * head == tail != 0 means log is full.
	 *
	 * See assertions in wapbl_advance() for other boundary
	 * conditions.
	 *
	 * Only wapbl_flush moves the head, except when wapbl_truncate
	 * sets it to 0 to indicate that the log is empty.
	 *
	 * Only wapbl_truncate moves the tail, except when wapbl_flush
	 * sets it to wl_circ_off to indicate that the log is full.
	 */</doc>
<doc f='src/src/sys/kern/vfs_wapbl.c' l='168'>/* l	*/</doc>
