lfs_bmapv() fills in the bi_daddr field for every block listed in the block array
blkiov with the disk address corresponding to the logical block
bi_lbn of the file with inode
bi_inode. If
bi_lbn is LFS_UNUSED_LBN, the disk location of the inode block containing the file's inode will be returned in
bi_daddr instead.
The
fsidp argument contains the id of the file system to which the inodes and blocks belong. The
blkiov argument is an array of BLOCK_INFO structures (see below). The
blkcnt argument determines the size of the
blkiov array.
typedef struct block_info {
ino_t bi_inode; /* inode # */
ufs_daddr_t bi_lbn; /* logical block w/in file */
ufs_daddr_t bi_daddr; /* disk address of block */
time_t bi_segcreate; /* origin segment create time */
int bi_version; /* file version number */
void *bi_bp; /* data buffer */
int bi_size; /* size of the block (if fragment) */
} BLOCK_INFO;