int
lfs_bmapv(
fsid_t *fsidp
, BLOCK_INFO *blkiov
, int blkcnt
)
)
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;
)
returns 0 on success, or -1 on error.
)
indicates:
EFAULT
]
fsidp
points outside the process's allocated address space.
EINVAL
]
*fsidp
does not specify a valid file system.
)
function call appeared in
4.4BSD.