lfs_bmapv - retrieve disk addresses for arrays of blocks
Standard C Library (libc, -lc)
#include <sys/types.h>
#include <ufs/lfs/lfs.h>
int
lfs_bmapv(fsid_t *fsidp, BLOCK_INFO *blkiov, int blkcnt);
lfs_bmapv() fills in the bi_daddr field for every block listed in the
block array blkiov with the disk address corrseponding 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 filesystem 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;
lfs_bmapv() returns 0 on success, or -1 on error.
An error return from lfs_bmapv() indicates:
[EFAULT] fsidp points outside the process's allocated address
space.
[EINVAL] *fsidp does not specify a valid filesystem.
lfs_markv(2), lfs_segclean(2), lfs_segwait(2), lfs_cleanerd(8)
The lfs_bmapv() function call appeared in 4.4BSD.
BSD May 23, 2000 BSD
[ Back ] |