Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
  1.. SPDX-License-Identifier: GPL-2.0
  2
  3==================
  4SystemV Filesystem
  5==================
  6
  7It implements all of
  8  - Xenix FS,
  9  - SystemV/386 FS,
 10  - Coherent FS.
 11
 12To install:
 13
 14* Answer the 'System V and Coherent filesystem support' question with 'y'
 15  when configuring the kernel.
 16* To mount a disk or a partition, use::
 17
 18    mount [-r] -t sysv device mountpoint
 19
 20  The file system type names::
 21
 22               -t sysv
 23               -t xenix
 24               -t coherent
 25
 26  may be used interchangeably, but the last two will eventually disappear.
 27
 28Bugs in the present implementation:
 29
 30- Coherent FS:
 31
 32  - The "free list interleave" n:m is currently ignored.
 33  - Only file systems with no filesystem name and no pack name are recognized.
 34    (See Coherent "man mkfs" for a description of these features.)
 35
 36- SystemV Release 2 FS:
 37
 38  The superblock is only searched in the blocks 9, 15, 18, which
 39  corresponds to the beginning of track 1 on floppy disks. No support
 40  for this FS on hard disk yet.
 41
 42
 43These filesystems are rather similar. Here is a comparison with Minix FS:
 44
 45* Linux fdisk reports on partitions
 46
 47  - Minix FS     0x81 Linux/Minix
 48  - Xenix FS     ??
 49  - SystemV FS   ??
 50  - Coherent FS  0x08 AIX bootable
 51
 52* Size of a block or zone (data allocation unit on disk)
 53
 54  - Minix FS     1024
 55  - Xenix FS     1024 (also 512 ??)
 56  - SystemV FS   1024 (also 512 and 2048)
 57  - Coherent FS   512
 58
 59* General layout: all have one boot block, one super block and
 60  separate areas for inodes and for directories/data.
 61  On SystemV Release 2 FS (e.g. Microport) the first track is reserved and
 62  all the block numbers (including the super block) are offset by one track.
 63
 64* Byte ordering of "short" (16 bit entities) on disk:
 65
 66  - Minix FS     little endian  0 1
 67  - Xenix FS     little endian  0 1
 68  - SystemV FS   little endian  0 1
 69  - Coherent FS  little endian  0 1
 70
 71  Of course, this affects only the file system, not the data of files on it!
 72
 73* Byte ordering of "long" (32 bit entities) on disk:
 74
 75  - Minix FS     little endian  0 1 2 3
 76  - Xenix FS     little endian  0 1 2 3
 77  - SystemV FS   little endian  0 1 2 3
 78  - Coherent FS  PDP-11         2 3 0 1
 79
 80  Of course, this affects only the file system, not the data of files on it!
 81
 82* Inode on disk: "short", 0 means non-existent, the root dir ino is:
 83
 84  =================================  ==
 85  Minix FS                            1
 86  Xenix FS, SystemV FS, Coherent FS   2
 87  =================================  ==
 88
 89* Maximum number of hard links to a file:
 90
 91  ===========  =========
 92  Minix FS     250
 93  Xenix FS     ??
 94  SystemV FS   ??
 95  Coherent FS  >=10000
 96  ===========  =========
 97
 98* Free inode management:
 99
100  - Minix FS
101      a bitmap
102  - Xenix FS, SystemV FS, Coherent FS
103      There is a cache of a certain number of free inodes in the super-block.
104      When it is exhausted, new free inodes are found using a linear search.
105
106* Free block management:
107
108  - Minix FS
109      a bitmap
110  - Xenix FS, SystemV FS, Coherent FS
111      Free blocks are organized in a "free list". Maybe a misleading term,
112      since it is not true that every free block contains a pointer to
113      the next free block. Rather, the free blocks are organized in chunks
114      of limited size, and every now and then a free block contains pointers
115      to the free blocks pertaining to the next chunk; the first of these
116      contains pointers and so on. The list terminates with a "block number"
117      0 on Xenix FS and SystemV FS, with a block zeroed out on Coherent FS.
118
119* Super-block location:
120
121  ===========  ==========================
122  Minix FS     block 1 = bytes 1024..2047
123  Xenix FS     block 1 = bytes 1024..2047
124  SystemV FS   bytes 512..1023
125  Coherent FS  block 1 = bytes 512..1023
126  ===========  ==========================
127
128* Super-block layout:
129
130  - Minix FS::
131
132                    unsigned short s_ninodes;
133                    unsigned short s_nzones;
134                    unsigned short s_imap_blocks;
135                    unsigned short s_zmap_blocks;
136                    unsigned short s_firstdatazone;
137                    unsigned short s_log_zone_size;
138                    unsigned long s_max_size;
139                    unsigned short s_magic;
140
141  - Xenix FS, SystemV FS, Coherent FS::
142
143                    unsigned short s_firstdatazone;
144                    unsigned long  s_nzones;
145                    unsigned short s_fzone_count;
146                    unsigned long  s_fzones[NICFREE];
147                    unsigned short s_finode_count;
148                    unsigned short s_finodes[NICINOD];
149                    char           s_flock;
150                    char           s_ilock;
151                    char           s_modified;
152                    char           s_rdonly;
153                    unsigned long  s_time;
154                    short          s_dinfo[4]; -- SystemV FS only
155                    unsigned long  s_free_zones;
156                    unsigned short s_free_inodes;
157                    short          s_dinfo[4]; -- Xenix FS only
158                    unsigned short s_interleave_m,s_interleave_n; -- Coherent FS only
159                    char           s_fname[6];
160                    char           s_fpack[6];
161
162    then they differ considerably:
163
164        Xenix FS::
165
166                    char           s_clean;
167                    char           s_fill[371];
168                    long           s_magic;
169                    long           s_type;
170
171        SystemV FS::
172
173                    long           s_fill[12 or 14];
174                    long           s_state;
175                    long           s_magic;
176                    long           s_type;
177
178        Coherent FS::
179
180                    unsigned long  s_unique;
181
182    Note that Coherent FS has no magic.
183
184* Inode layout:
185
186  - Minix FS::
187
188                    unsigned short i_mode;
189                    unsigned short i_uid;
190                    unsigned long  i_size;
191                    unsigned long  i_time;
192                    unsigned char  i_gid;
193                    unsigned char  i_nlinks;
194                    unsigned short i_zone[7+1+1];
195
196  - Xenix FS, SystemV FS, Coherent FS::
197
198                    unsigned short i_mode;
199                    unsigned short i_nlink;
200                    unsigned short i_uid;
201                    unsigned short i_gid;
202                    unsigned long  i_size;
203                    unsigned char  i_zone[3*(10+1+1+1)];
204                    unsigned long  i_atime;
205                    unsigned long  i_mtime;
206                    unsigned long  i_ctime;
207
208
209* Regular file data blocks are organized as
210
211  - Minix FS:
212
213             - 7 direct blocks
214	     - 1 indirect block (pointers to blocks)
215             - 1 double-indirect block (pointer to pointers to blocks)
216
217  - Xenix FS, SystemV FS, Coherent FS:
218
219             - 10 direct blocks
220             -  1 indirect block (pointers to blocks)
221             -  1 double-indirect block (pointer to pointers to blocks)
222             -  1 triple-indirect block (pointer to pointers to pointers to blocks)
223
224
225  ===========  ==========   ================
226               Inode size   inodes per block
227  ===========  ==========   ================
228  Minix FS        32        32
229  Xenix FS        64        16
230  SystemV FS      64        16
231  Coherent FS     64        8
232  ===========  ==========   ================
233
234* Directory entry on disk
235
236  - Minix FS::
237
238                    unsigned short inode;
239                    char name[14/30];
240
241  - Xenix FS, SystemV FS, Coherent FS::
242
243                    unsigned short inode;
244                    char name[14];
245
246  ===========    ==============    =====================
247                 Dir entry size    dir entries per block
248  ===========    ==============    =====================
249  Minix FS       16/32             64/32
250  Xenix FS       16                64
251  SystemV FS     16                64
252  Coherent FS    16                32
253  ===========    ==============    =====================
254
255* How to implement symbolic links such that the host fsck doesn't scream:
256
257  - Minix FS     normal
258  - Xenix FS     kludge: as regular files with  chmod 1000
259  - SystemV FS   ??
260  - Coherent FS  kludge: as regular files with  chmod 1000
261
262
263Notation: We often speak of a "block" but mean a zone (the allocation unit)
264and not the disk driver's notion of "block".