DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

fs_vxfs(F)


fs (vxfs) - format of a VERITAS File System volume

Synopsis

#include <sys/types.h> 
#include <sys/param.h> 
#include <sys/fs/vx_fs.h> 

Description

The vxfs super-block always begins at byte offset 1024 from the start of the file system. The super-block location is fixed so utilities know where to look for it.

The super-block contains the following fundamental sizes and offsets:

fs_magic
The magic number for the file system (VX_MAGIC). This number identifies the file system as being a vxfs file system type.

fs_version
The version number of the file system layout (VX_VERSION).

fs_ctime
The creation date of the file system. The time(S) system call supplies the time.

fs_ectime
This field is a placeholder in instances when the creation date for a file system is expanded for more precision. It currently is zero.

fs_logstart
The block address of the first Log Area block. It currently is two.

fs_logend
The block address of the last Log Area block. The Log Area size in blocks may be specified as part of mkfs. If not specified, a default of 512 blocks is used. A minimum size of 32 blocks is enforced. For smaller file systems, the default is reduced to avoid wasting space.

fs_bsize
The block size of the file system. The current choices are 1024, 2048, 4096, and 8192 bytes. The default is 1024 bytes.

fs_size
The number of blocks in the file system, expressed as the number of blocks of size fs_bsize. The fs_size field is a signed 32 bit number. The maximum number of blocks in a vxfs file system is limited to 31 bits.

fs_dsize
The number of data blocks in the file system. A data block is a block which may be allocated to a file in the file system.

fs_ninode
The number of inodes in the file system allocation units. For file systems with a Version 2 layout or greater, this field is 0.

For Version 1 layout file systems:
The fs_ninode field contains the number of inodes in all of the file system allocation units. This field is the limit on the number of inodes in the file system.

The fs_ninode field is an unsigned 32-bit number.
The number of inodes may be specified as part of mkfs. If not specified, the default will be fs_dsize divided by 4.

fs_nau
The number of allocation units in the file system. The number of allocation units may be specified as part of mkfs.

fs_defiextsize
The default size for indirect data extents, expressed in blocks. This field is currently set to 64 by default.

fs_oilbsize
The size of an old inode list block, expressed in bytes. This size may be specified as part of mkfs. If not specified, a default of either 2K or fs_bsize (whichever is larger) is used. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_immedlen
The size, in bytes, of the immediate data area in each inode. This value is 96 for the vxfs file system.

fs_ndaddr
The number of direct extents supported by the VX_EXT4 mapping type (see the section describing inode list). This value is 10 for the vxfs file system.

The preceding fields define the size and makeup of the file system. To reduce the calculations required in utilities, a number of values are derived from the fundamental values and placed in the super-block.

The super-block contains the following derived offsets:

fs_aufirst
The address, in blocks, of the first allocation unit. There can be a gap between the end of the intent log and the first allocation unit. This gap could be used to align the first allocation unit on a desired boundary.

fs_emap
The offset in blocks of the free extent map (emap) from the start of an allocation unit.

fs_imap
The offset in blocks of the free inode map (imap) from the start of an allocation unit.

fs_iextop
The offset in blocks of the extended inode operation map from the start of an allocation unit. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_istart
The offset in blocks of the inode list (ilist) from the start of an allocation unit. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_bstart
The offset in blocks of the first data block from the start of an allocation unit. An allocation unit header may contain padding to align the first data block to a specific boundary.

fs_femap
The offset in blocks of the first free extent map (emap) from the start of the file system.

fs_fimap
The offset in blocks of the first free inode map (imap) from the start of the file system.

fs_fiextop
The offset in blocks of the first extended inode operation map from the start of the file system. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_fistart
The offset in blocks of the first ilist from the start of the file system. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_fbstart
The offset in blocks of the first data block from the start of the file system.

fs_nindir
The number of entries in an indirect address extent. An indirect address extent is currently 8192 bytes in length, making the current value for fs_nindir 2048.

fs_aulen
The length of an allocation unit in blocks.

fs_auimlen
The length of a free inode map in blocks. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_auemlen
The length of a free extent map in blocks.

fs_auilen
The length, in blocks, of the inode list for this allocation unit. For file systems with a Version 2 layout or greater, this is initialized to 0 and not used.

fs_aupad
The length, in blocks, of the allocation unit alignment padding.

fs_aublocks
The number of data blocks in an allocation unit.

fs_maxtier
The log base 2 of fs_aublocks.

fs_inopb
The number of inode entries per fs_bsize block in the inode list. The vxfs inode is currently 256 bytes long.

fs_inopau
The number of inodes in an allocation unit.

fs_inopilb
The number of inode entries per fs_oilbsize block in the inode list. For file systems with a Version 2 layout or greater, this is field is obsolete.

fs_ndiripau
Expected number of directory inodes per allocation unit. For file systems with a Version 2 layout or greater, this field is initialized to 0 and not used. For the Version 1 layout, this field is unused, but mkfs initializes it to about one ninth of the total number of inodes in the allocation unit.

fs_iaddrlen
The size, in blocks, of an indirect address block. An indirect address block is 8K bytes. This field will be set to (8K / fs_bsize).

fs_bshift
The log base 2 of fs_bsize. Used to convert a byte offset into a block offset.

fs_inoshift
The log base 2 of fs_inopb. Used to convert an inode number into a block offset in the inode list.

fs_bmask
A mask value such that (byte_offset + fs_bmask) rounds the offset to the nearest smaller block boundary.

fs_boffmask
A mask value such that (byte_offset + fs_boffmask) yields the offset from the start of the nearest smaller block boundary.

fs_inomask
A mask value such that (inode_number + fs_inomask) yields the offset from the start of the containing inode list block of the corresponding inode list entry. For file systems with a Version 2 layout or greater, this field is obsolete.

fs_checksum
A simple checksum of the above fields. A macro, VX_FSCHECKSUM is provided to verify or calculate the checksum.

The preceding fields are initialized when the file system is created and do not change unless the file system is resized. These fields are replicated in each allocation unit header.

There are additional fields which are considered to be dynamic:

fs_free
The current number of free data blocks.

fs_ifree
The current number of free inodes. For file systems with a Version 2 layout or greater, a separate free inode count is kept for each fileset; this is initialized to 0 and is not used.

fs_efree
An array of the current number of free extents of each extent size in the file system.

fs_flags
The following flags are recognized:

VX_FULLFSCK
Set when a file system requires a full structural check to recover from an error. If this flag is set, a full check will be performed after the replay recovery is finished.

VX_NOLOG
Set when the file system was mounted with the VX_MS_NOLOG option. If this flag is set, then no log replay recovery will be performed.

VX_LOGBAD
Set when an I/O error has invalidated the log. If this flag is set, then no log replay recovery will be performed.

VX_LOGRESET
Set when the log ID runs over VX_MAXLOGID ( 2^30 ). The log ID will be reset at the next appropriate opportunity (such as a mount or system sync).

VX_RESIZE
Set when a file system resizing is in progress. If an fsck sees this flag, it will have to perform resize recovery. See fsadm(ADM) for a description of file system expansion.

VX_UPGRADING
Set when a file system upgrade is in progress. If an fsck sees this flag, it will have to perform upgrade recovery.

fs_mod
Set whenever a mounted file system is modified. It is used to indicate if the super-block needs to be written when a sync operation is performed.

fs_clean
Set to VX_DIRTY when a file system is mounted for read/write access. Set to VX_CLEAN upon umount or successful fsck. The file system cannot be mounted for read/write access unless the fs_clean field is VX_CLEAN.

fs_reserved
Reserved for future use.

fs_firstlogid
Initial log ID to use when the file system is mounted.

fs_time
Last time the super-block was written to disk, indicated as the number of seconds and microseconds that have elapsed since 0:00:00 GMT January 1, 1970.

fs_fname
File system name (6 characters).

fs_fpack
File system pack label (6 characters).

fs_logversion
The version number of the log format. This field is set by the kernel on each mount to ensure that an fsck running log replay understands the log format written by the kernel.

The log format may change with each release, so all file systems should be clean before upgrading to a new release.

The following fields are related to the vxfs Version 2 disk layout and later. These fields are set when the file system is created and do not change. These fields are replicated in each allocation unit header.

fs_oltext
This is an array of two extent addresses. These extent addresses point to the two replicated copies of the first object location table extent.

fs_oltsize
This is the size, in blocks, of the object location table extents pointed to by fs_oltext.

fs_iauimlen
The length, in blocks, of a free inode map in an inode allocation unit.

fs_iausize
The size, in blocks, of an inode allocation unit.

fs_dinosize
The size, in bytes, of a disk inode. This is currently 256 bytes.

fs_dniaddr
The number of indirect address levels per inode.

fs_checksum2
This is a checksum of the fields specific to layout Version 2 or later.

References

fsadm(ADM), fsck(ADM), fsdb(ADM), mkfs(ADM), mount(S), time(S), inode_vxfs(F)



© 1997 The Santa Cruz Operation, Inc. All rights reserved.