<dec f='src/src/sys/ufs/lfs/ulfs_extern.h' l='102' type='int ulfs_bmaparray(struct vnode * , daddr_t , daddr_t * , struct indir * , int * , int * , ulfs_issequential_callback_t )'/>
<use f='src/src/sys/ufs/lfs/lfs_balloc.c' l='266' u='c' c='lfs_balloc'/>
<use f='src/src/sys/ufs/lfs/lfs_segment.c' l='1482' u='c' c='lfs_update_single'/>
<use f='src/src/sys/ufs/lfs/lfs_vfsops.c' l='2119' u='c' c='lfs_gop_write'/>
<use f='src/src/sys/ufs/lfs/ulfs_bmap.c' l='117' u='c' c='ulfs_bmap'/>
<def f='src/src/sys/ufs/lfs/ulfs_bmap.c' l='137' ll='348' type='int ulfs_bmaparray(struct vnode * vp, daddr_t bn, daddr_t * bnp, struct indir * ap, int * nump, int * runp, ulfs_issequential_callback_t is_sequential)'/>
<doc f='src/src/sys/ufs/lfs/ulfs_bmap.c' l='123'>/*
 * 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.
 *
 * ulfs_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>
