docs/51189: [PATCH] keep man-page fs(5) in sync with ufs/ffs/fs.h

Lukas Ertl l.ertl at univie.ac.at
Sun Apr 20 17:40:06 UTC 2003


>Number:         51189
>Category:       docs
>Synopsis:       [PATCH] keep man-page fs(5) in sync with ufs/ffs/fs.h
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          doc-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Apr 20 10:40:04 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Lukas Ertl
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
Vienna University Computer Center
>Environment:
System: FreeBSD korben 5.0-CURRENT FreeBSD 5.0-CURRENT #0: Sat Apr 19 23:49:53 CEST 2003 le at korben:/usr/src/sys/i386/compile/KORBEN i386


	
>Description:

The man-page fs(5) doesn't reflect the recent changes of struct fs 
in ufs/ffs/fs.h.

>How-To-Repeat:

Compare fs(5) with ufs/ffs/fs.h.

>Fix:

--- fs.5.diff begins here ---
Index: share/man/man5/fs.5
===================================================================
RCS file: /u/cvs/cvs/src/share/man/man5/fs.5,v
retrieving revision 1.17
diff -u -r1.17 fs.5
--- share/man/man5/fs.5	12 Dec 2002 17:25:57 -0000	1.17
+++ share/man/man5/fs.5	20 Apr 2003 17:29:01 -0000
@@ -71,122 +71,131 @@
 with the
 .Em super-block
 that is of size
-.Dv SBSIZE .
+.Dv SBLOCKSIZE .
 The following structure describes the super-block and is
 from the file
 .Aq Pa ufs/ffs/fs.h :
 .Bd -literal
 /*
- * Super block for an FFS file system.
+ * Super block for an FFS filesystem.
  */
 struct fs {
-	int32_t	 fs_firstfield;	/* historic file system linked list, */
-	int32_t	 fs_unused_1;	/*     used for incore super blocks */
-	ufs_daddr_t fs_sblkno;	/* addr of super-block in filesys */
-	ufs_daddr_t fs_cblkno;	/* offset of cyl-block in filesys */
-	ufs_daddr_t fs_iblkno;	/* offset of inode-blocks in filesys */
-	ufs_daddr_t fs_dblkno;	/* offset of first data after cg */
-	int32_t	 fs_cgoffset;	/* cylinder group offset in cylinder */
-	int32_t	 fs_cgmask;	/* used to calc mod fs_ntrak */
-	time_t 	 fs_time;	/* last time written */
-	int32_t	 fs_size;	/* number of blocks in fs */
-	int32_t	 fs_dsize;	/* number of data blocks in fs */
-	int32_t	 fs_ncg;	/* number of cylinder groups */
-	int32_t	 fs_bsize;	/* size of basic blocks in fs */
-	int32_t	 fs_fsize;	/* size of frag blocks in fs */
-	int32_t	 fs_frag;	/* number of frags in a block in fs */
+	int32_t	 fs_firstfield;	   /* historic filesystem linked list, */
+	int32_t	 fs_unused_1;      /*     used for incore super blocks */
+	int32_t	 fs_sblkno;        /* offset of super-block in filesys */
+	int32_t	 fs_cblkno;        /* offset of cyl-block in filesys */
+	int32_t	 fs_iblkno;        /* offset of inode-blocks in filesys */
+	int32_t	 fs_dblkno;        /* offset of first data after cg */
+	int32_t	 fs_old_cgoffset;  /* cylinder group offset in cylinder */
+	int32_t	 fs_old_cgmask;    /* used to calc mod fs_ntrak */
+	int32_t  fs_old_time;      /* last time written */
+	int32_t	 fs_old_size;      /* number of blocks in fs */
+	int32_t	 fs_old_dsize;     /* number of data blocks in fs */
+	int32_t	 fs_ncg;           /* number of cylinder groups */
+	int32_t	 fs_bsize;         /* size of basic blocks in fs */
+	int32_t	 fs_fsize;         /* size of frag blocks in fs */
+	int32_t	 fs_frag;          /* number of frags in a block in fs */
 /* these are configuration parameters */
-	int32_t	 fs_minfree;	/* minimum percentage of free blocks */
-	int32_t	 fs_rotdelay;	/* num of ms for optimal next block */
-	int32_t	 fs_rps;	/* disk revolutions per second */
+	int32_t	 fs_minfree;       /* minimum percentage of free blocks */
+	int32_t	 fs_old_rotdelay;  /* num of ms for optimal next block */
+	int32_t	 fs_old_rps;       /* disk revolutions per second */
 /* these fields can be computed from the others */
-	int32_t	 fs_bmask;	/* ``blkoff'' calc of blk offsets */
-	int32_t	 fs_fmask;	/* ``fragoff'' calc of frag offsets */
-	int32_t	 fs_bshift;	/* ``lblkno'' calc of logical blkno */
-	int32_t	 fs_fshift;	/* ``numfrags'' calc number of frags */
+	int32_t	 fs_bmask;         /* ``blkoff'' calc of blk offsets */
+	int32_t	 fs_fmask;         /* ``fragoff'' calc of frag offsets */
+	int32_t	 fs_bshift;        /* ``lblkno'' calc of logical blkno */
+	int32_t	 fs_fshift;        /* ``numfrags'' calc number of frags */
 /* these are configuration parameters */
-	int32_t	 fs_maxcontig;	/* max number of contiguous blks */
-	int32_t	 fs_maxbpg;	/* max number of blks per cyl group */
+	int32_t	 fs_maxcontig;     /* max number of contiguous blks */
+	int32_t	 fs_maxbpg;        /* max number of blks per cyl group */
 /* these fields can be computed from the others */
-	int32_t	 fs_fragshift;	/* block to frag shift */
-	int32_t	 fs_fsbtodb;	/* fsbtodb and dbtofsb shift constant */
-	int32_t	 fs_sbsize;	/* actual size of super block */
-	int32_t	 fs_csmask;	/* csum block offset */
-	int32_t	 fs_csshift;	/* csum block number */
-	int32_t	 fs_nindir;	/* value of NINDIR */
-	int32_t	 fs_inopb;	/* value of INOPB */
-	int32_t	 fs_nspf;	/* value of NSPF */
+	int32_t	 fs_fragshift;     /* block to frag shift */
+	int32_t	 fs_fsbtodb;       /* fsbtodb and dbtofsb shift constant */
+	int32_t	 fs_sbsize;        /* actual size of super block */
+	int32_t	 fs_spare1[2];     /* old fs_csmask */
+	                           /* old fs_csshift */
+	int32_t	 fs_nindir;        /* value of NINDIR */
+	int32_t	 fs_inopb;         /* value of INOPB */
+	int32_t	 fs_old_nspf;      /* value of NSPF */
 /* yet another configuration parameter */
-	int32_t	 fs_optim;	/* optimization preference, see below */
-/* these fields are derived from the hardware */
-	int32_t	 fs_npsect;	/* # sectors/track including spares */
-	int32_t	 fs_interleave;	/* hardware sector interleave */
-	int32_t	 fs_trackskew;	/* sector 0 skew, per track */
-/* fs_id takes the space of the unused fs_headswitch and fs_trkseek fields */
-	int32_t	fs_id[2];	/* unique file system id*/
+	int32_t	 fs_optim;         /* optimization preference, see below */
+	int32_t	 fs_old_npsect;    /* # sectors/track including spares */
+	int32_t	 fs_old_interleave; /* hardware sector interleave */
+	int32_t	 fs_old_trackskew; /* sector 0 skew, per track */
+	int32_t	 fs_id[2];         /* unique filesystem id */
 /* sizes determined by number of cylinder groups and their sizes */
-	ufs_daddr_t fs_csaddr;	/* blk addr of cyl grp summary area */
-	int32_t	 fs_cssize;	/* size of cyl grp summary area */
-	int32_t	 fs_cgsize;	/* cylinder group size */
-/* these fields are derived from the hardware */
-	int32_t	 fs_ntrak;	/* tracks per cylinder */
-	int32_t	 fs_nsect;	/* sectors per track */
-	int32_t  fs_spc;	/* sectors per cylinder */
-/* this comes from the disk driver partitioning */
-	int32_t	 fs_ncyl;	/* cylinders in file system */
-/* these fields can be computed from the others */
-	int32_t	 fs_cpg;	/* cylinders per group */
-	int32_t	 fs_ipg;	/* inodes per group */
-	int32_t	 fs_fpg;	/* blocks per group * fs_frag */
+	int32_t	 fs_old_csaddr;	   /* blk addr of cyl grp summary area */
+	int32_t	 fs_cssize;        /* size of cyl grp summary area */
+	int32_t	 fs_cgsize;        /* cylinder group size */
+	int32_t	 fs_spare2;        /* old fs_ntrak */
+	int32_t	 fs_old_nsect;     /* sectors per track */
+	int32_t  fs_old_spc;       /* sectors per cylinder */
+	int32_t	 fs_old_ncyl;      /* cylinders in filesystem */
+	int32_t	 fs_old_cpg;       /* cylinders per group */
+	int32_t	 fs_ipg;           /* inodes per group */
+	int32_t	 fs_fpg;           /* blocks per group * fs_frag */
 /* this data must be re-computed after crashes */
-	struct	csum fs_cstotal;/* cylinder summary information */
+	struct	csum fs_old_cstotal; /* cylinder summary information */
 /* these fields are cleared at mount time */
-	int8_t   fs_fmod;	/* super block modified flag */
-	int8_t   fs_clean;	/* file system is clean flag */
-	int8_t 	 fs_ronly;	/* mounted read-only flag */
-	int8_t   fs_flags;	/* currently unused flag */
-	u_char	 fs_fsmnt[MAXMNTLEN];	/* name mounted on */
+	int8_t   fs_fmod;          /* super block modified flag */
+	int8_t   fs_clean;         /* filesystem is clean flag */
+	int8_t 	 fs_ronly;         /* mounted read-only flag */
+	int8_t   fs_old_flags;     /* old FS_ flags */
+	u_char	 fs_fsmnt[MAXMNTLEN]; /* name mounted on */
+	u_char	 fs_volname[MAXVOLLEN]; /* volume name */
+	u_int64_t fs_swuid;        /* system-wide uid */
+	int32_t  fs_pad;           /* due to alignment of fs_swuid */
 /* these fields retain the current block allocation info */
-	int32_t	 fs_cgrotor;	/* last cg searched */
-	struct	csum *fs_csp[MAXCSBUFS];/* list of fs_cs info buffers */
-	int32_t	 *fs_maxcluster;/* max cluster in each cyl group */
-	int32_t	 fs_cpc;	/* cyl per cycle in postbl */
-	int16_t	 fs_opostbl[16][8];	/* old rotation block list head */
-	int32_t	 fs_sparecon[50];	/* reserved for future constants */
-	int32_t	 fs_contigsumsize;	/* size of cluster summary array */
-	int32_t	 fs_maxsymlinklen;/* max length of an internal symlink */
-	int32_t	 fs_inodefmt;	/* format of on-disk inodes */
-	u_int64_t fs_maxfilesize;/* maximum representable file size */
-	int64_t	 fs_qbmask;	/* ~fs_bmask for use with 64-bit size */
-	int64_t	 fs_qfmask;	/* ~fs_fmask for use with 64-bit size */
-	int32_t	 fs_state;	/* validate fs_clean field */
-	int32_t	 fs_postblformat;/* format of positional layout tables */
-	int32_t	 fs_nrpos;	/* number of rotational positions */
-	int32_t	 fs_postbloff;	/* (u_int16) rotation block list head */
-	int32_t	 fs_rotbloff;	/* (u_int8) blocks for each rotation */
-	int32_t	 fs_magic;	/* magic number */
-	u_int8_t fs_space[1];	/* list of blocks for each rotation */
-/* actually longer */
+	int32_t	 fs_cgrotor;       /* last cg searched */
+	void 	*fs_ocsp[NOCSPTRS]; /* padding; was list of fs_cs buffers */
+	u_int8_t *fs_contigdirs;   /* # of contiguously allocated dirs */
+	struct	csum *fs_csp;      /* cg summary info buffer for fs_cs */
+	int32_t	*fs_maxcluster;    /* max cluster in each cyl group */
+	u_int	*fs_active;        /* used by snapshots to track fs */
+	int32_t	 fs_old_cpc;       /* cyl per cycle in postbl */
+	int32_t	 fs_maxbsize;      /* maximum blocking factor permitted */
+	int64_t	 fs_sparecon64[17]; /* old rotation block list head */
+	int64_t	 fs_sblockloc;     /* byte offset of standard superblock */
+	struct	csum_total fs_cstotal;  /* cylinder summary information */
+	ufs_time_t fs_time;        /* last time written */
+	int64_t	 fs_size;          /* number of blocks in fs */
+	int64_t	 fs_dsize;         /* number of data blocks in fs */
+	ufs2_daddr_t fs_csaddr;    /* blk addr of cyl grp summary area */
+	int64_t	 fs_pendingblocks; /* blocks in process of being freed */
+	int32_t	 fs_pendinginodes; /* inodes in process of being freed */
+	int32_t	 fs_snapinum[FSMAXSNAP]; /* list of snapshot inode numbers */
+	int32_t	 fs_avgfilesize;   /* expected average file size */
+	int32_t	 fs_avgfpdir;      /* expected # of files per directory */
+	int32_t	 fs_save_cgsize;   /* save real cg size to use fs_bsize */
+	int32_t	 fs_sparecon32[26]; /* reserved for future constants */
+	int32_t  fs_flags;         /* see FS_ flags below */
+	int32_t	 fs_contigsumsize; /* size of cluster summary array */ 
+	int32_t	 fs_maxsymlinklen; /* max length of an internal symlink */
+	int32_t	 fs_old_inodefmt;  /* format of on-disk inodes */
+	u_int64_t fs_maxfilesize;  /* maximum representable file size */
+	int64_t	 fs_qbmask;        /* ~fs_bmask for use with 64-bit size */
+	int64_t	 fs_qfmask;        /* ~fs_fmask for use with 64-bit size */
+	int32_t	 fs_state;         /* validate fs_clean field */
+	int32_t	 fs_old_postblformat; /* format of positional layout tables */
+	int32_t	 fs_old_nrpos;     /* number of rotational positions */
+	int32_t	 fs_spare5[2];     /* old fs_postbloff */
+	                           /* old fs_rotbloff */
+	int32_t	 fs_magic;         /* magic number */
 };
 
 /*
- * File system identification
+ * Filesystem identification
  */
-#define	FS_MAGIC	0x011954   /* the fast file system magic number */
-#define	FS_OKAY		0x7c269d38 /* superblock checksum */
-#define FS_42INODEFMT	-1	   /* 4.2BSD inode format */
-#define FS_44INODEFMT	2	   /* 4.4BSD inode format */
+#define	FS_UFS1_MAGIC	0x011954    /* UFS1 fast filesystem magic number */
+#define	FS_UFS2_MAGIC	0x19540119  /* UFS2 fast filesystem magic number */
+#define	FS_OKAY		0x7c269d38  /* superblock checksum */
+#define FS_42INODEFMT	-1      /* 4.2BSD inode format */
+#define FS_44INODEFMT	2       /* 4.4BSD inode format */
+
 /*
  * Preference for optimization.
  */
 #define FS_OPTTIME	0	/* minimize allocation time */
 #define FS_OPTSPACE	1	/* minimize disk fragmentation */
-
-/*
- * Rotational layout table format types
- */
-#define FS_42POSTBLFMT		-1  /* 4.2BSD rotational table format */
-#define FS_DYNAMICPOSTBLFMT	1   /* dynamic rotational table format */
 .Ed
 .Pp
 Each disk drive contains some number of file systems.
@@ -275,13 +284,13 @@
 summary information is 2ms for a typical 3600 rpm drive.
 .Pp
 The element
-.Fa fs_rotdelay
+.Fa fs_old_rotdelay
 gives the minimum number of milliseconds to initiate
 another disk transfer on the same cylinder.
 It is used in determining the rotationally optimal
 layout for disk blocks within a file;
 the default value for
-.Fa fs_rotdelay
+.Fa fs_old_rotdelay
 is 2ms.
 .Pp
 Each file system has a statically allocated number of inodes.
@@ -304,7 +313,7 @@
 must keep its size within
 .Dv MINBSIZE .
 Note that super-blocks are never more than size
-.Dv SBSIZE .
+.Dv SBLOCKSIZE .
 .Pp
 The path name on which the file system is mounted is maintained in
 .Fa fs_fsmnt .
@@ -336,7 +345,7 @@
 .Em "Super-block for a file system" :
 The size of the rotational layout tables
 is limited by the fact that the super-block is of size
-.Dv SBSIZE .
+.Dv SBLOCKSIZE .
 The size of these tables is
 .Em inversely
 proportional to the block
--- fs.5.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-doc mailing list