FreeBSD manual
download PDF document: cgread1.3.pdf
CGREAD(3) FreeBSD Library Functions Manual CGREAD(3)
NAME
cgget, cgput, cgread, cgread1, cgwrite, cgwrite1 - read/write cylinder
groups of UFS disks
LIBRARY
UFS File System Access Library (libufs, -lufs)
SYNOPSIS
#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>
int
cgget(int devfd, struct fs *fs, int cg, struct cg *cgp);
int
cgput(int devfd, struct fs *fs, struct cg *cgp);
int
cgread(struct uufsd *disk);
int
cgread1(struct uufsd *disk, int cg);
int
cgwrite(struct uufsd *disk);
int
cgwrite1(struct uufsd *disk, int cg);
DESCRIPTION
The cgget(), cgread(), and cgread1() functions provide cylinder group
reads for libufs(3) consumers. The cgput(), cgwrite(), and cgwrite1()
functions provide cylinder group writes for libufs(3) consumers.
The cgget() function reads the cylinder group specified by cg into the
buffer pointed to by cgp from the filesystem described by the fs
superblock using the devfd file descriptor that references the filesystem
disk. The cgget() function is the only cylinder group read function that
is safe to use in threaded applications.
The cgput() function writes the cylinder group specified by cgp to the
filesystem described by the fs superblock using the devfd file descriptor
that references the filesystem disk. The cgput() function is the only
cylinder group write function that is safe to use in threaded
applications. Note that the cgput() function needs to be called only if
the cylinder group has been modified and the on-disk copy needs to be
updated.
The cgread1() function reads from the cylinder group specified by cg into
the d_cg cylinder-group structure in a user-land UFS-disk structure. It
sets the d_lcg field to the cylinder group number cg.
The cgread() function operates on sequential cylinder groups. Calling
The cgwrite1() function provides no additional functionality over the
cgwrite() function as there is only one place that a given cylinder group
can correctly be written. If the caller gets the cg parameter wrong, the
function fails with the error EDOOFUS. This function remains only to
provide backward compatibility.
RETURN VALUES
The cgread() function returns 0 if there are no more cylinder groups to
read, 1 if there are more cylinder groups, and -1 on error. The
cgread1() function returns 1 on success and -1 on error. The other
functions return 0 on success and -1 on error.
ERRORS
The cgget(), cgread(), and cgread1() functions may fail and set errno for
any of the errors specified for the library function bread(3).
The cgput(), cgwrite(), and cgwrite1() functions may fail and set errno
for any of the errors specified for the library function bwrite(3).
Additionally the cgwrite1() will return the EDOOFUS error if the cylinder
group specified does not match the cylinder group that it is requesting
to write.
SEE ALSO
bread(3), bwrite(3), libufs(3)
HISTORY
These functions first appeared as part of libufs(3) in FreeBSD 5.1.
AUTHORS
Juli Mallett <jmallett@FreeBSD.org>
Marshall Kirk McKusick <mckusick@FreeBSD.org>
FreeBSD 14.0-RELEASE-p11 September 2, 2020 FreeBSD 14.0-RELEASE-p11