May 23, 2000 LFS_BMAPV 2

### NAME

lfs_bmapv - retrieve disk addresses for arrays of blocks

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` lfs_bmapv(```fsid_t *fsidp``, BLOCK_INFO *blkiov``, int blkcnt`)

### DESCRIPTION

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;

### RETURN VALUES

lfs_bmapv(``) returns 0 on success, or -1 on error.

### ERRORS

An error return from lfs_bmapv(``) indicates:

[```EFAULT`]
  ```fsidp` points outside the process's allocated address space.

[```EINVAL`]
  ```*fsidp` does not specify a valid file system.

### SEE ALSO

lfs_markv(2), lfs_segclean(2), lfs_segwait(2), lfs_cleanerd(8)

### HISTORY

The lfs_bmapv(``) function call appeared in 4.4BSD.