GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
CGREAD(3) FreeBSD Library Functions Manual CGREAD(3)

cgget, cgput, cgread, cgread1, cgwrite, cgwrite1
read/write cylinder groups of UFS disks

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>

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);

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 cgread() function is equivalent to calling cgread1() with a cylinder group specifier equivalent to the value of the current d_ccg field, and then incrementing the d_ccg field.

The cgwrite() function stores on disk the cylinder group held in the d_cg cylinder-group structure in a user-land UFS-disk structure.

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.

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.

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.

bread(3), bwrite(3), libufs(3)

These functions first appeared as part of libufs(3) in FreeBSD 5.1.

Juli Mallett <jmallett@FreeBSD.org>
Marshall Kirk McKusick <mckusick@FreeBSD.org>
September 2, 2020 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.