1e78ea9f7SJuli Mallett.\" Author: Juli Mallett <jmallett@FreeBSD.org> 2e78ea9f7SJuli Mallett.\" Date: June 04, 2003 3e78ea9f7SJuli Mallett.\" Description: 4e78ea9f7SJuli Mallett.\" Manual page for libufs functions: 572f854ceSKirk McKusick.\" cgget(3) 672f854ceSKirk McKusick.\" cgput(3) 7e78ea9f7SJuli Mallett.\" cgread(3) 8e78ea9f7SJuli Mallett.\" cgread1(3) 972f854ceSKirk McKusick.\" cgwrite(3) 10cf4652e7SPawel Jakub Dawidek.\" cgwrite1(3) 11e78ea9f7SJuli Mallett.\" 1227fd7478SJuli Mallett.\" This file is in the public domain. 1327fd7478SJuli Mallett.\" 14*85ee267aSKirk McKusick.Dd September 2, 2020 15e78ea9f7SJuli Mallett.Dt CGREAD 3 16e78ea9f7SJuli Mallett.Os 17e78ea9f7SJuli Mallett.Sh NAME 1872f854ceSKirk McKusick.Nm cgget , cgput , cgread , cgread1 , cgwrite , cgwrite1 19cf4652e7SPawel Jakub Dawidek.Nd read/write cylinder groups of UFS disks 20e78ea9f7SJuli Mallett.Sh LIBRARY 21e78ea9f7SJuli Mallett.Lb libufs 22e78ea9f7SJuli Mallett.Sh SYNOPSIS 23e78ea9f7SJuli Mallett.In sys/param.h 24e78ea9f7SJuli Mallett.In sys/mount.h 25e78ea9f7SJuli Mallett.In ufs/ufs/ufsmount.h 26e78ea9f7SJuli Mallett.In ufs/ufs/dinode.h 27e78ea9f7SJuli Mallett.In ufs/ffs/fs.h 28e78ea9f7SJuli Mallett.In libufs.h 29e78ea9f7SJuli Mallett.Ft int 30*85ee267aSKirk McKusick.Fn cgget "int devfd" "struct fs *fs" "int cg" "struct cg *cgp" 3172f854ceSKirk McKusick.Ft int 32*85ee267aSKirk McKusick.Fn cgput "int devfd" "struct fs *fs" "struct cg *cgp" 3372f854ceSKirk McKusick.Ft int 34e78ea9f7SJuli Mallett.Fn cgread "struct uufsd *disk" 35e78ea9f7SJuli Mallett.Ft int 3672f854ceSKirk McKusick.Fn cgread1 "struct uufsd *disk" "int cg" 37cf4652e7SPawel Jakub Dawidek.Ft int 3872f854ceSKirk McKusick.Fn cgwrite "struct uufsd *disk" 3972f854ceSKirk McKusick.Ft int 4072f854ceSKirk McKusick.Fn cgwrite1 "struct uufsd *disk" "int cg" 41e78ea9f7SJuli Mallett.Sh DESCRIPTION 42e78ea9f7SJuli MallettThe 4372f854ceSKirk McKusick.Fn cgget , 4472f854ceSKirk McKusick.Fn cgread , 45e78ea9f7SJuli Mallettand 46e78ea9f7SJuli Mallett.Fn cgread1 47e78ea9f7SJuli Mallettfunctions provide cylinder group reads for 48e78ea9f7SJuli Mallett.Xr libufs 3 49e78ea9f7SJuli Mallettconsumers. 50e78ea9f7SJuli MallettThe 5172f854ceSKirk McKusick.Fn cgput , 5272f854ceSKirk McKusick.Fn cgwrite , 5372f854ceSKirk McKusickand 5472f854ceSKirk McKusick.Fn cgwrite1 5572f854ceSKirk McKusickfunctions provide cylinder group writes for 5672f854ceSKirk McKusick.Xr libufs 3 5772f854ceSKirk McKusickconsumers. 5872f854ceSKirk McKusick.Pp 5972f854ceSKirk McKusickThe 6072f854ceSKirk McKusick.Fn cgget 6172f854ceSKirk McKusickfunction reads the cylinder group specified by 6272f854ceSKirk McKusick.Fa cg 6372f854ceSKirk McKusickinto the buffer pointed to by 6472f854ceSKirk McKusick.Fa cgp 65*85ee267aSKirk McKusickfrom the filesystem described by the 66*85ee267aSKirk McKusick.Fa fs 67*85ee267aSKirk McKusicksuperblock using the 68*85ee267aSKirk McKusick.Fa devfd 69*85ee267aSKirk McKusickfile descriptor that references the filesystem disk. 7072f854ceSKirk McKusickThe 7172f854ceSKirk McKusick.Fn cgget 7272f854ceSKirk McKusickfunction is the only cylinder group read function that is safe to use 7372f854ceSKirk McKusickin threaded applications. 7472f854ceSKirk McKusick.Pp 7572f854ceSKirk McKusickThe 7672f854ceSKirk McKusick.Fn cgput 7772f854ceSKirk McKusickfunction writes the cylinder group specified by 7872f854ceSKirk McKusick.Va cgp 79*85ee267aSKirk McKusickto the filesystem described by the 80*85ee267aSKirk McKusick.Fa fs 81*85ee267aSKirk McKusicksuperblock using the 82*85ee267aSKirk McKusick.Fa devfd 83*85ee267aSKirk McKusickfile descriptor that references the filesystem disk. 8472f854ceSKirk McKusickThe 8572f854ceSKirk McKusick.Fn cgput 8672f854ceSKirk McKusickfunction is the only cylinder group write function that is safe to use 8772f854ceSKirk McKusickin threaded applications. 8872f854ceSKirk McKusickNote that the 8972f854ceSKirk McKusick.Fn cgput 9072f854ceSKirk McKusickfunction needs to be called only if the cylinder group has been 9172f854ceSKirk McKusickmodified and the on-disk copy needs to be updated. 9272f854ceSKirk McKusick.Pp 9372f854ceSKirk McKusickThe 94e78ea9f7SJuli Mallett.Fn cgread1 9572f854ceSKirk McKusickfunction reads from the cylinder group specified by 9672f854ceSKirk McKusick.Fa cg 97e78ea9f7SJuli Mallettinto the 98c81fcafdSRuslan Ermilov.Va d_cg 9972f854ceSKirk McKusickcylinder-group structure in a user-land UFS-disk structure. 100e78ea9f7SJuli MallettIt sets the 101c81fcafdSRuslan Ermilov.Va d_lcg 102dfa13bbfSJuli Mallettfield to the cylinder group number 10372f854ceSKirk McKusick.Fa cg . 104e78ea9f7SJuli Mallett.Pp 105e78ea9f7SJuli MallettThe 106e78ea9f7SJuli Mallett.Fn cgread 107e78ea9f7SJuli Mallettfunction operates on sequential cylinder groups. 108e78ea9f7SJuli MallettCalling the 109e78ea9f7SJuli Mallett.Fn cgread 110e78ea9f7SJuli Mallettfunction is equivalent to calling 111c81fcafdSRuslan Ermilov.Fn cgread1 112e78ea9f7SJuli Mallettwith a cylinder group specifier equivalent to the value of the current 113c81fcafdSRuslan Ermilov.Va d_ccg 114e78ea9f7SJuli Mallettfield, and then incrementing the 115c81fcafdSRuslan Ermilov.Va d_ccg 116e78ea9f7SJuli Mallettfield. 117cf4652e7SPawel Jakub Dawidek.Pp 118cf4652e7SPawel Jakub DawidekThe 11972f854ceSKirk McKusick.Fn cgwrite 12072f854ceSKirk McKusickfunction stores on disk the cylinder group held in the 121cf4652e7SPawel Jakub Dawidek.Va d_cg 12272f854ceSKirk McKusickcylinder-group structure in a user-land UFS-disk structure. 12372f854ceSKirk McKusick.Pp 12472f854ceSKirk McKusickThe 12572f854ceSKirk McKusick.Fn cgwrite1 12672f854ceSKirk McKusickfunction provides no additional functionality over the 12772f854ceSKirk McKusick.Fn cgwrite 12872f854ceSKirk McKusickfunction as there is only one place that a given cylinder group 12972f854ceSKirk McKusickcan correctly be written. 13072f854ceSKirk McKusickIf the caller gets the 13172f854ceSKirk McKusick.Fa cg 13272f854ceSKirk McKusickparameter wrong, the function fails with the error 13372f854ceSKirk McKusick.Er EDOOFUS . 13472f854ceSKirk McKusickThis function remains only to provide backward compatibility. 135c81fcafdSRuslan Ermilov.Sh RETURN VALUES 13672f854ceSKirk McKusickThe 137e78ea9f7SJuli Mallett.Fn cgread 13872f854ceSKirk McKusickfunction returns 0 if there are no more cylinder groups to read, 13972f854ceSKirk McKusick1 if there are more cylinder groups, and \-1 on error. 14072f854ceSKirk McKusickThe 14172f854ceSKirk McKusick.Fn cgread1 14272f854ceSKirk McKusickfunction returns 1 on success and \-1 on error. 143687ae71fSKirk McKusickThe other functions return 0 on success and \-1 on error. 14472f854ceSKirk McKusick.Sh ERRORS 14572f854ceSKirk McKusickThe 14672f854ceSKirk McKusick.Fn cgget , 14772f854ceSKirk McKusick.Fn cgread , 14872f854ceSKirk McKusickand 14972f854ceSKirk McKusick.Fn cgread1 15072f854ceSKirk McKusickfunctions may fail and set 151e78ea9f7SJuli Mallett.Va errno 152e78ea9f7SJuli Mallettfor any of the errors specified for the library function 153e78ea9f7SJuli Mallett.Xr bread 3 . 154e78ea9f7SJuli Mallett.Pp 15572f854ceSKirk McKusickThe 15672f854ceSKirk McKusick.Fn cgput , 15772f854ceSKirk McKusick.Fn cgwrite , 15872f854ceSKirk McKusickand 159cf4652e7SPawel Jakub Dawidek.Fn cgwrite1 16072f854ceSKirk McKusickfunctions may fail and set 161cf4652e7SPawel Jakub Dawidek.Va errno 162cf4652e7SPawel Jakub Dawidekfor any of the errors specified for the library function 163cf4652e7SPawel Jakub Dawidek.Xr bwrite 3 . 16472f854ceSKirk McKusickAdditionally the 16572f854ceSKirk McKusick.Fn cgwrite1 16672f854ceSKirk McKusickwill return the 16772f854ceSKirk McKusick.Er EDOOFUS 16872f854ceSKirk McKusickerror if the cylinder group specified does not match the 16972f854ceSKirk McKusickcylinder group that it is requesting to write. 170e78ea9f7SJuli Mallett.Sh SEE ALSO 171e78ea9f7SJuli Mallett.Xr bread 3 , 172cf4652e7SPawel Jakub Dawidek.Xr bwrite 3 , 173e78ea9f7SJuli Mallett.Xr libufs 3 174e78ea9f7SJuli Mallett.Sh HISTORY 175e78ea9f7SJuli MallettThese functions first appeared as part of 176e78ea9f7SJuli Mallett.Xr libufs 3 177e78ea9f7SJuli Mallettin 178e78ea9f7SJuli Mallett.Fx 5.1 . 179e78ea9f7SJuli Mallett.Sh AUTHORS 1802b7af31cSBaptiste Daroussin.An Juli Mallett Aq Mt jmallett@FreeBSD.org 181*85ee267aSKirk McKusick.An Marshall Kirk McKusick Aq Mt mckusick@FreeBSD.org 182