Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 su-
     perblock 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 applica-
     tions.  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 up-
     dated.

     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.

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 func-
     tions 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).  Ad-
     ditionally	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	13.0		       September 2, 2020		  FreeBSD 13.0

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=cgget&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help