bread
, bwrite
— read and write blocks of a UFS file
system
UFS File System Access Library (libufs,
-lufs)
#include
<sys/param.h>
#include <sys/mount.h>
#include <ufs/ufs/ufsmount.h>
#include <ufs/ufs/dinode.h>
#include <ufs/ffs/fs.h>
#include <libufs.h>
ssize_t
bread
(struct
uufsd *disk, ufs2_daddr_t
blockno, void
*data, size_t
size);
ssize_t
bwrite
(struct uufsd *disk,
ufs2_daddr_t blockno, const void
*data, size_t size);
int
berase
(struct uufsd *disk,
ufs2_daddr_t blockno, ufs2_daddr_t
size);
The
bread
(),
bwrite
()
and
berase
()
functions provide a block read, write and erase API for
libufs(3)
consumers. They operate on a userland UFS disk structure, and perform the
read and write at a given block address, which uses the current
d_bsize value of the structure.
The bread
() and
bwrite
() functions return the amount read or
written, or -1 in case of any error, including short read.
The berase
() function returns non-zero on
error.
The function bread
() may fail and set
errno for any of the errors specified for the library
functions
ufs_disk_write(3)
or
pread(2).
The function bwrite
() may fail and set
errno for any of the errors specified for the library
function
pwrite(2).
The function berase
() may fail and set
errno for any of the errors specified for the library
function
ioctl(2).
Additionally all three functions may follow the
libufs(3)
error methodologies in situations where the amount of data written is not
equal to the amount requested, or in case of a device error.
These functions first appeared as part of
libufs(3)
in FreeBSD 5.0.