LFS_BMAPV(2) | System Calls Manual | LFS_BMAPV(2)

# NAME

`lfs_bmapv` — retrieve disk addresses for arrays of blocks

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <sys/types.h>`
`#include <ufs/lfs/lfs.h>`

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.

May 23, 2000 | NetBSD 11.0