<dec f='src/src/sys/ufs/ufs/ufs_extern.h' l='107' type='int ufs_bmaparray(struct vnode * , daddr_t , daddr_t * , struct indir * , int * , int * , ufs_issequential_callback_t )'/>
<use f='src/src/sys/ufs/ufs/ufs_bmap.c' l='97' u='c' c='ufs_bmap'/>
<def f='src/src/sys/ufs/ufs/ufs_bmap.c' l='117' ll='325' type='int ufs_bmaparray(struct vnode * vp, daddr_t bn, daddr_t * bnp, struct indir * ap, int * nump, int * runp, ufs_issequential_callback_t is_sequential)'/>
<doc f='src/src/sys/ufs/ufs/ufs_bmap.c' l='103'>/*
 * Indirect blocks are now on the vnode for the file.  They are given negative
 * logical block numbers.  Indirect blocks are addressed by the negative
 * address of the first data block to which they point.  Double indirect blocks
 * are addressed by one less than the address of the first indirect block to
 * which they point.  Triple indirect blocks are addressed by one less than
 * the address of the first double indirect block to which they point.
 *
 * ufs_bmaparray does the bmap conversion, and if requested returns the
 * array of logical blocks which must be traversed to get to a block.
 * Each entry contains the offset into that block that gets you to the
 * next block and the disk address of the block (if it is assigned).
 */</doc>
