filsys man page on UNIXv7

Man page or keyword search:  
man Server   300 pages
apropos Keyword Search (all sections)
Output format
UNIXv7 logo
[printable version]

FILSYS(5)							     FILSYS(5)

NAME
       filsys, flblk, ino - format of file system volume

SYNOPSIS
       #include <sys/types.h>
       #include <sys/flbk.h>
       #include <sys/filsys.h>
       #include <sys/ino.h>

DESCRIPTION
       Every  file system storage volume (e.g. RF disk, RK disk, RP disk, DEC‐
       tape reel) has a common format for certain  vital  information.	 Every
       such volume is divided into a certain number of 512-byte blocks.	 Block
       0 is unused and is available  to	 contain  a  bootstrap	program,  pack
       label, or other information.

       Block  1	 is the super block.  The layout of the super block as defined
       by the include file <sys/filsys.h> is:

       S_isize is the address of the  first  block  after  the	i-list,	 which
       starts  just  after  the	 super-block,  in  block 2.  Thus is i-list is
       s_isize-2 blocks long.  S_fsize is the address of the first  block  not
       potentially available for allocation to a file.	These numbers are used
       by the system to check for bad  block  addresses;  if  an  `impossible'
       block address is allocated from the free list or is freed, a diagnostic
       is written on  the  on-line  console.   Moreover,  the  free  array  is
       cleared,	 so  as	 to  prevent further allocation from a presumably cor‐
       rupted free list.

       The free list for each volume is maintained  as	follows.   The	s_free
       array  contains,	 in  s_free[1], ... , s_free[s_nfree-1], up to NICFREE
       free block numbers.  NICFREE is a configuration constant.  S_free[0] is
       the  block  address  of	the head of a chain of blocks constituting the
       free list.  The layout of each block of the free chain  as  defined  in
       the include file <sys/fblk.h> is:

       The  fields  df_nfree and df_free in a free block are used exactly like
       s_nfree and s_free in the super block.  To allocate a block:  decrement
       s_nfree, and the new block number is s_free[s_nfree].  If the new block
       address is 0, there are no blocks left, so give an error.   If  s_nfree
       became 0, read the new block into s_nfree and s_free.  To free a block,
       check if s_nfree is NICFREE; if so, copy s_nfree and the	 s_free	 array
       into  it,  write	 it  out,  and	set  s_nfree  to  0.  In any event set
       s_free[s_nfree] to the freed block's address and increment s_nfree.

       S_ninode is the number of free i-numbers	 in  the  s_inode  array.   To
       allocate	 an  i-node:  if  s_ninode is greater than 0, decrement it and
       return s_inode[s_ninode].  If it was 0, read the i-list and  place  the
       numbers of all free inodes (up to NICINOD) into the s_inode array, then
       try again.  To free an i-node, provided s_ninode is less than NICINODE,
       place  its  number  into	 s_inode[s_ninode] and increment s_ninode.  If
       s_ninode is already NICINODE, don't bother to enter  the	 freed	i-node
       into  any  table.  This list of i-nodes is only to speed up the alloca‐
       tion process; the information as to whether the inode is really free or
       not is maintained in the inode itself.

       S_flock	and  s_ilock are flags maintained in the core copy of the file
       system while it is mounted and their values  on	disk  are  immaterial.
       The  value  of  s_fmod  on disk is likewise immaterial; it is used as a
       flag to indicate that the super-block has changed and should be	copied
       to the disk during the next periodic update of file system information.
       S_ronly is a write-protection indicator; its disk value is also immate‐
       rial.

       S_time is the last time the super-block of the file system was changed.
       During a reboot, s_time of the super-block for the root file system  is
       used to set the system's idea of the time.

       The  fields  s_tfree,  s_tinode,	 s_fname and s_fpack are not currently
       maintained.

       I-numbers begin at 1, and the storage for i-nodes begins	 in  block  2.
       I-nodes	are 64 bytes long, so 8 of them fit into a block.  I-node 2 is
       reserved for the root directory of the file system, but no other i-num‐
       ber has a built-in meaning.  Each i-node represents one file.  The for‐
       mat of an i-node as given in the include file <sys/ino.h> is:

       Di_mode tells the kind of  file;	 it  is	 encoded  identically  to  the
       st_mode	field of stat(2).  Di_nlink is the number of directory entries
       (links) that refer to this i-node.  Di_uid and di_gid are  the  owner's
       user and group IDs.  Size is the number of bytes in the file.  Di_atime
       and di_mtime are the times of last access and modification of the  file
       contents	 (read,	 write or create) (see times(2)); Di_ctime records the
       time of last modification to the inode or to the file, and is  used  to
       determine whether it should be dumped.

       Special	files  are  recognized	by their modes and not by i-number.  A
       block-type special file is one which can potentially be	mounted	 as  a
       file  system;  a	 character-type	 special file cannot, though it is not
       necessarily character-oriented.	For special files, the	di_addr	 field
       is  occupied  by	 the  device code (see types(5)).  The device codes of
       block and character special files overlap.

       Disk addresses of plain files and directories are  kept	in  the	 array
       di_addr	packed	into  3	 bytes	each.	The first 10 addresses specify
       device blocks directly.	The last 3 addresses are singly,  doubly,  and
       triply indirect and point to blocks of 128 block pointers.  Pointers in
       indirect blocks have the type daddr_t (see types(5)).

       For block b in a file to exist, it is not  necessary  that  all	blocks
       less  than b exist.  A zero block number either in the address words of
       the i-node or in an indirect block  indicates  that  the	 corresponding
       block  has  never  been allocated.  Such a missing block reads as if it
       contained all zero words.

SEE ALSO
       icheck(1), dcheck(1), dir(5), mount(1), stat(2), types(5)

								     FILSYS(5)
[top]

List of man pages available for UNIXv7

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net