xref: /freebsd/lib/libufs/sbread.3 (revision a521f2116473fbd8c09db395518f060a27d02334)
1.\" Author:	Juli Mallett <jmallett@FreeBSD.org>
2.\" Date:	June 04, 2003
3.\" Description:
4.\" 	Manual page for libufs functions:
5.\"		sbget(3)
6.\"		sbput(3)
7.\"		sbread(3)
8.\"		sbwrite(3)
9.\"
10.\" This file is in the public domain.
11.\"
12.\" $FreeBSD$
13.\"
14.Dd September 2, 2020
15.Dt SBREAD 3
16.Os
17.Sh NAME
18.Nm sbget , sbput , sbread , sbwrite
19.Nd read and write superblocks of a UFS file system
20.Sh LIBRARY
21.Lb libufs
22.Sh SYNOPSIS
23.In sys/param.h
24.In sys/mount.h
25.In ufs/ufs/ufsmount.h
26.In ufs/ufs/dinode.h
27.In ufs/ffs/fs.h
28.In libufs.h
29.Ft int
30.Fn sbget "int devfd" "struct fs **fsp" "off_t sblockloc"
31.Ft int
32.Fn sbput "int devfd" "struct fs *fs" "int numaltwrite"
33.Ft int
34.Fn sbread "struct uufsd *disk"
35.Ft int
36.Fn sbwrite "struct uufsd *disk" "int all"
37.Sh DESCRIPTION
38The
39.Fn sbget
40and
41.Fn sbread
42functions provide superblock reads for
43.Xr libufs 3
44consumers.
45The
46.Fn sbput
47and
48.Fn sbwrite
49functions provide superblock writes for
50.Xr libufs 3
51consumers.
52.Pp
53The
54.Fn sbget
55function first allocates a buffer to hold the superblock.
56Using the
57.Va devfd
58file descriptor that references the filesystem disk,
59.Fn sbget
60reads the superblock located at the byte offset specified by
61.Va sblockloc
62into the allocated buffer.
63If successful, it returns a pointer to the buffer containing the superblock in
64.Va fsp .
65The
66.Fn sbget
67function is safe to use in threaded applications.
68.Pp
69The
70.Fn sbput
71function writes the superblock specified by
72.Va fs
73to the location from which it was read on the disk referenced by the
74.Va devfd
75file descriptor.
76Additionally, the
77.Fn sbput
78function will update the first
79.Va numaltwrite
80alternate superblock locations.
81To update all the alternate superblocks,
82specify a
83.Va numaltwrite
84value of
85.Va fs->fs_ncg .
86The
87.Fn sbput
88function is safe to use in threaded applications.
89Note that the
90.Fn sbput
91function needs to be called only if the superblock has been
92modified and the on-disk copy needs to be updated.
93.Pp
94The
95.Fn sbread
96function reads the standard filesystem superblock into the
97.Va d_sb ,
98structure embedded in the given user-land UFS disk structure.
99.Pp
100The
101.Fn sbwrite
102function writes the superblock from the
103.Va d_sb ,
104structure embedded in the given user-land UFS disk structure
105to the location from which it was read.
106Additionally, the
107.Fn sbwrite
108function will write to all the alternate superblock locations if the
109.Fa all
110value is non-zero.
111.Sh RETURN VALUES
112.Rv -std sbread sbwrite
113The
114.Fn sbget
115and
116.Fn sbput
117functions return the value 0 if successful;
118otherwise they return one of the errors described below.
119.Sh ERRORS
120The errors returned by
121.Fn sbget
122and
123.Fn sbread
124include any of the errors specified for the library function
125.Xr bread 3 .
126Additionally, they may follow the
127.Xr libufs 3
128error methodologies in situations where no usable superblock could be
129found.
130.Pp
131The errors returned by
132.Fn sbput
133and
134.Fn sbwrite
135include any of the errors specified for the library function
136.Xr bwrite 3 .
137.Sh SEE ALSO
138.Xr bread 3 ,
139.Xr bwrite 3 ,
140.Xr libufs 3
141.Sh HISTORY
142These functions first appeared as part of
143.Xr libufs 3
144in
145.Fx 5.0 .
146.Sh AUTHORS
147.An Juli Mallett Aq Mt jmallett@FreeBSD.org
148.An Marshall Kirk McKusick Aq Mt mckusick@FreeBSD.org
149