Symantec logo

fs_vxfs

NAME

fs_vxfs - format of a VxFS file system volume

SYNOPSIS

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

AVAILABILITY

VRTSvxfs

DESCRIPTION

The VxFS super-block always begins at byte offset 8192 from the start of the file system. The super-block location is fixed so that various system utilities know where to locate it.

Super-block fields contain the following fundamental sizes and offsets:

fs_bsize

The block size of the file system. VxFS supports block sizes of 1024, 2048, 4096, and 8192 bytes. The default block size depends on the size of the file system when you create it. See the bsize option in the mkfs_vxfs(1M) manual page for specific values.

fs_ctime

The creation date of the file system. The time system call supplies the time.

fs_defiextsize

The default size, in blocks, for indirect data extents. Currently set to 64 by default.

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_immedlen

The size, in bytes, of the immediate data area in each inode. Currently 96.

fs_logend

The block address of the last log area block. You can specify the log area size with the mkfs command. If not specified, the default size is 256 blocks for a file system less than 8 megabytes in size, 1024 blocks for a file system from 8 megabytes to 512 megabytes, and 16384 blocks for file systems greater than 512 megabytes in size. For smaller file systems, the default is reduced to avoid wasting space. The maximum log size is 256 megabytes for disk layout Version 6 and 7, and 16 megabytes for disk layout Version 4 and 5.

fs_logstart

The block address of the first log area block. Currently two.

fs_magic

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

fs_nau

The number of file system allocation units.

fs_ndaddr

The number of direct extents supported by the VX_EXT4 mapping type. See the section describing the inode list. Currently 10.

fs_ninode

The number of inodes in the file system allocation units. Version 1 disk layout only. fs_ninode is an unsigned 32-bit number specifying the number of inodes in all of the file system allocation units. You can specify the number of inodes with mkfs. If not specified, the default is fs_dsize divided by 4.

fs_old_bsize

The size of an old inode list block, expressed in bytes. You can specify this value with mkfs. If not specified, the default is 2K or fs_bsize, whichever is larger. Version 1 disk layout only.

fs_size

The number of blocks, of size fs_bsize, in the file system. fs_size is an unsigned 64-bit number. The maximum number of blocks is restricted to 64 bits.

fs_version

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

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

The super-block contains the following derived offsets:

fs_aublocks

The number of data blocks in an allocation unit.

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 is used to align the first allocation unit on a desired boundary.

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. Version 1 disk layout only.

fs_auimlen

The length of a free inode map in blocks. Version 1 disk layout only.

fs_aulen

The length of an allocation unit in blocks.

fs_aupad

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

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_bshift

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

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_checksum

A checksum of the above fields. A macro, VX_FSCHECKSUM, verifies or calculates the checksum.

fs_emap

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

fs_fbstart

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

fs_femap

The offset, in blocks, of the first free extent map (emap) 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. Version 1 disk layout only.

fs_fimap

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

fs_fistart

The offset, in blocks, of the first ilist from the start of the file system. Version 1 disk layout only.

fs_iaddrlen

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

fs_iextop

The offset, in blocks, of the extended inode operation map from the start of an allocation unit. Version 1 disk layout only.

fs_imap

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

fs_inomask

A mask value such that (inode_number & fs_inomask) yields the offset from the start of the inode list block of the corresponding inode list entry. Version 1 disk layout only.

fs_inopau

The number of inodes in an allocation unit.

fs_inopb

The number of inode entries per fs_bsize block in the inode list. The VxFS inode can be 256 or 512 bytes long.

fs_inopilb

The number of inode entries per fs_old_bsize block in the inode list. Version 1 disk layout only.

fs_inoshift

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

fs_istart

The offset, in blocks, of the inode list (ilist) from the start of an allocation unit. Version 1 disk layout only.

fs_maxtier

The log base 2 of fs_aublocks.

fs_ndiripau

Expected number of directory inodes per allocation unit. 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_nindir

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

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.

The following are additional fields, which are dynamic:

fs_clean

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

fs_efree

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

fs_extopversion

Disk layout Version 1 through 6 use the fs_logversion field to denote the extop version. Disk layout Version 7 introduces the fs_extopversion field to denote the extop version.

fs_firstlogid

Initial log ID for when the file system is mounted.

fs_flags

The following flags are recognized:

VX_BSINPROGRESS

Set when byteswapping is in progress.

VX_DATAIOERR

Set when an I/O error occurs in file system data.

VX_FSETQUOTA

Set when fileset quotas are on.

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 is performed after the replay recovery completes.

VX_FULLFSCKRAN

Set when a full fsck was run since the last mount.

VX_METAIOERR

Set when an I/O error occurs in file system metadata.

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 is performed.

VX_RESIZE

Set when a file system resizing is in progress. If fsck detects this flag, it performs a resize recovery. See fsadm_vxfs(1M) for a description of file system expansion.

VX_SINGLEDEV

Set when there is only one device for the file system.

VX_UPGRADING

Set when a file system upgrade is in progress. If fsck detects this flag, it performs an upgrade recovery.

fs_fname

File system name (6 characters). The fs_fname field is not used in disk layout Version 7.

fs_fpack

File system pack label (6 characters). The fs_fpack field is not used in disk layout Version 7.

fs_free

The number of free data blocks.

fs_ifree

The number of free inodes. Version 1 disk layout only.

fs_logversion

The version number of the log format. Set by the kernel on each mount to ensure that an instantiation of 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.

fs_mod

Set whenever a mounted file system is modified. It indicates whether the super-block requires rewriting when a sync operation is performed.

fs_modversion

Indicates the version of VxFS that last modified the file system.

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.

The following fields are required by VxFS Version 2 disk layouts and later. These fields are set when the file system is created and do not change. They are replicated in each allocation unit header.

fs_checksum2

A checksum of fields.

fs_dinosize

The size, in bytes, of a disk inode. Currently 256 bytes.

fs_dniaddr

The number of indirect address levels per inode.

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_oltsize

The size, in blocks, of the object location table extents pointed to by fs_oltext.

fs_oltext

An array of two extent addresses. These extent addresses point to the two replicated copies of the first object location table extent.

SEE ALSO

fsadm_vxfs(1M), fsck(1M), fsdb(1M), mkfs(1M), mount(2), time(2), inode_vxfs(4)