brintos

brintos / linux-shallow public Read only

0
0
Text · 8.1 KiB · 89e4091 Raw
265 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3==================4SystemV Filesystem5==================6 7It implements all of8  - 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 mountpoint19 20  The file system type names::21 22               -t sysv23               -t xenix24               -t coherent25 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, which39  corresponds to the beginning of track 1 on floppy disks. No support40  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 partitions46 47  - Minix FS     0x81 Linux/Minix48  - Xenix FS     ??49  - SystemV FS   ??50  - Coherent FS  0x08 AIX bootable51 52* Size of a block or zone (data allocation unit on disk)53 54  - Minix FS     102455  - Xenix FS     1024 (also 512 ??)56  - SystemV FS   1024 (also 512 and 2048)57  - Coherent FS   51258 59* General layout: all have one boot block, one super block and60  separate areas for inodes and for directories/data.61  On SystemV Release 2 FS (e.g. Microport) the first track is reserved and62  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 167  - Xenix FS     little endian  0 168  - SystemV FS   little endian  0 169  - Coherent FS  little endian  0 170 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 376  - Xenix FS     little endian  0 1 2 377  - SystemV FS   little endian  0 1 2 378  - Coherent FS  PDP-11         2 3 0 179 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                            186  Xenix FS, SystemV FS, Coherent FS   287  =================================  ==88 89* Maximum number of hard links to a file:90 91  ===========  =========92  Minix FS     25093  Xenix FS     ??94  SystemV FS   ??95  Coherent FS  >=1000096  ===========  =========97 98* Free inode management:99 100  - Minix FS101      a bitmap102  - Xenix FS, SystemV FS, Coherent FS103      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 FS109      a bitmap110  - Xenix FS, SystemV FS, Coherent FS111      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 to113      the next free block. Rather, the free blocks are organized in chunks114      of limited size, and every now and then a free block contains pointers115      to the free blocks pertaining to the next chunk; the first of these116      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..2047123  Xenix FS     block 1 = bytes 1024..2047124  SystemV FS   bytes 512..1023125  Coherent FS  block 1 = bytes 512..1023126  ===========  ==========================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 only155                    unsigned long  s_free_zones;156                    unsigned short s_free_inodes;157                    short          s_dinfo[4]; -- Xenix FS only158                    unsigned short s_interleave_m,s_interleave_n; -- Coherent FS only159                    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 as210 211  - Minix FS:212 213             - 7 direct blocks214	     - 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 blocks220             -  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 block227  ===========  ==========   ================228  Minix FS        32        32229  Xenix FS        64        16230  SystemV FS      64        16231  Coherent FS     64        8232  ===========  ==========   ================233 234* Directory entry on disk235 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 block248  ===========    ==============    =====================249  Minix FS       16/32             64/32250  Xenix FS       16                64251  SystemV FS     16                64252  Coherent FS    16                32253  ===========    ==============    =====================254 255* How to implement symbolic links such that the host fsck doesn't scream:256 257  - Minix FS     normal258  - Xenix FS     kludge: as regular files with  chmod 1000259  - SystemV FS   ??260  - Coherent FS  kludge: as regular files with  chmod 1000261 262 263Notation: We often speak of a "block" but mean a zone (the allocation unit)264and not the disk driver's notion of "block".265