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

FreeBSD Manual Pages

  
 
  

home | help
CGREAD(3)		    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 descrip-
       tor  that  references the filesystem disk.  The cgput() function	is the
       only cylinder group write function that is safe to use in threaded  ap-
       plications.   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	struc-
       ture.  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	cylin-
       der 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 re-
       mains 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	cylin-
       der group specified does	not match the cylinder group that  it  is  re-
       questing	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.3		       September 2, 2020		     CGREAD(3)

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

home | help