home *** CD-ROM | disk | FTP | other *** search
- This file gives brief details of the installable filesystem minix.xfs version
- 0.55 .
-
- If you don't have Minix then you are on your own ... to use minix
- partitions safely ideally you need a good fsck (filesystem checker) I'm working
- on a stand alone version which runs under TOS. Until then I wouldn't advise
- non-minix users to use minix partitions, unless you are absolutely sure you
- know what you are doing. Don't blame me if you trash a partition.
-
- This driver works with both V1 and V2 filesystems , so if you are using minix
- 1.6.xxx with the new V2 filesytem then it should handle them OK . If you have
- very large partitions then you may need to use a disk editor to edit the
- sector size if it is > 1K . Also your driver needs to support the extra Rwabs
- parameter in order to access very large ( > 64 Mb or >32Mb if sector size is
- 512 bytes) partitions. The program 'minit' with the '-t' option is useful
- to test for this.
-
- If minix.xfs will access your minix partitions on your setup OK then skip
- the next paragraph.
-
- If you can't access partitions then it is possible that your driver
- software wont access them . The partition type must be GEM (sorry but it's a bit
- awkward to access non-GEM partitions). Also the sector size on the minix
- partitions must be either 1K or 512 bytes (as well as the extended Rwabs call
- being mandatory for very large V2 partitions). If both of these are OK then
- maybe the driver software doesn't like the boot sector of your minix
- partitions . There are two solutions to this , described in greater detail
- in 'minit.doc'. If you have minix filesystems on GEM partitions and the
- 'fixup' program still wont permit access to your partitions with minix.xfs then
- please let me know , giving details of your setup.
-
- Now this version of minixfs uses all of the new feature in MiNT ... hardlinks
- symbolic links chmod,chown etc. Symbolic links may cause trouble if you have
- minix and try 'fsck' on them ... plain minix doesn't understand symbolic links
- and fsck will try to delete them. Note: an older symbolic link package for
- minix stuffed all the info in the inodes ... this wont work with minix.xfs .
- I think there is a newer symlinks package that does work . However the package
- must use the same mode for symbolic links , the default value is 0160000 edit
- either minixfs or the minix symlinks package so that the two agree and
- recompile as appropriate. Now about fsck ... if you are using minix 1.6.xxx then
- the new fsck will handle symlinks correctly if you add the flag
- -DI_SYMBOLIC_LINK=0160000 when you compile it . If aren't running 1.6.xxx
- then apply 'fsck.dif' (with patch) to the old minix fsck.c . 'fsck.dif' should
- be supplied with this filesystem driver . Keep the old fsck source though for
- upgrades . Note the dif assumes that the version of fsck you are using is the
- one with minix 1.5.10 (or 1.5 if its 'out of the box' and hasn't been upgraded
- from 1.1 ). The file should have crc 25152 (before patching) and 24070 after.
-
- File locking has been added for this version, it has not been extensively
- tested so be careful !
-
- Filename translation has been overhauled for this version. See the fscntl
- section for details.
-
- Another potentially useful feature has been added to this version , you can
- have longer filenames if you initialise the filesystem properly. Currently
- this can only be done by wiping existing partitions . Also minix itself wont
- recognise this new format, though it may be possible to persuade it , I
- haven't tried this myself. I hope to have a non-destructive conversion method
- for longer filenames in the near future (possibly as an option to 'fsck' , if
- I ever get that working).
-
- Three fscntl options are 'supported' the others present in the source are likely
- to change without notice ... so DO NOT use them !! The constants are defined in
- minixfs.h . All three of these interpret the value of 'arg' as a pointer to a
- long value. They are described below.
-
- MFS_VERIFY , this is intended to check if the partition is minix , the value
- MFS_MAGIC will be sent to the long argument 'arg' points to.
-
- MFS_SYNC , sync the filesystem in a manner similar to the unix sync() sys call.
- Minixfs does however sync the filesystem at regular intervals such as when any
- file is closed so it is certainly not necessary to call this before powering
- down the system.
-
- MFS_CINVALID , invalidate all cache entries for the drive fscntl path resides
- on. This will be used by fsck (if I ever get it finished) so that a filesystem
- can be messed about with at a low level and the cache wont ever become out
- of sync with the physical filesystem (a recipe for disaster).
-
- MFS_FINVALID , invalidate all file descriptors for the drive fscntl resides on.
-
- MFS_IMODE , use 'arg' as an inode mode number to change the object pointed to
- by the fscntl path. This makes it possible to change directories to files and
- vice versa. If you aren't sure what that means do *not* use this option , you
- can trash filesystems with it !
-
- MFS_INFO , 'arg' points to an mfs_info structure , this has the following
- entries (with meanings) :
-
- long total_inodes,total_zones;
- long free_inodes,free_zones;
- int version; /* Filesystem version 1=V1 2=V2 */
- int increment; /* Directory increment */
- long res1,res2,res3,res4; /* Reserved for future use */
-
- 'int' is 16 bits in this context. 'increment' is a measure of the maximum
- filename length this is given by ((increment<<4)-2). This option is a
- effectively a more relevant minixfs version of 'dfree'.
-
- MFS_GTRANS , the value 'arg' points to is set to the current translation
- options. (see MFS_STRANS).
-
- MFS_STRANS , the current translation options are set to the value 'arg'
- points to. Since these options are global (i.e. affect all programs), the
- calling process must be root to do it. Currently valid options are the
- following or'ed together :
-
- SRCH_TOS : when searching for files translate the name searched for and the
- name being matched to TOS 8+3 format , in tos domain. E.g. the
- filename 'LargeName.c' becomes LARGENAM.C and can be accessed as
- anything that gets translated to this , like LARgenamefile.C' .
- SRCH_MNT : as above but MiNT domain.
- DIR_TOS : when using Dreaddir in compatability mode (and Fsfirst/Fsnext)
- translates filename to TOS 8+3 , tos domain only. In normal mode
- filenames are *never* translated. Without this option filenames
- longer than 12 characters will be truncated for Fsfirst/Fsnext.
- DIR_MNT : as above but MiNT domain.
- AEXEC_TOS : files with extensions TTP,TOS,APP,PRG,ACC,GTP are automatically
- given execute permissions in tos domain with this option
- (comparison is not case sensitive so works for ttp, TtP too).
- AEXEC_MNT : as above but MiNT domain.
- LWR_TOS : created filenames are translated to lower case in tos domain.
- LWR_MNT : as above but MiNT domain.
-
- The purpose of these options is to help programs expecting 8+3 filenames to
- work , e.g. the file selector. The default values for translation are in
- minixfs.h , in TRANS_DEFAULT. A sample program is supplied that allows these
- options to be set , see 'mfsconf.doc' for details.
-
- A few other options . SCACHE_SIZE and UCACHE_SIZE , these determine the
- size (in K) of the caches used for minixfs , don't make them smaller than about
- 10 or the filesystem performance will deterriorate considerably. Increase them
- by all means, this will reduce the amount of I/O required by the filesystem.
- SCACHE refers to the system cache which is called for 'internal' operations such
- as reading/writing directories and inodes. UCACHE is the user cache which
- contains user data (from reading/writing files). These are separated so that
- if a program does a lot of file I/O minix.xfs wont have to re-read directories
- for example.
-
- The MAX_INCREMENT determines the maximum value which may be passed to the '-n'
- option when creating the filesystem with minit. Unless you are using long
- filename filesystems , this option is irrelevant. However if you are using them
- then minix.xfs will not read a filesystem whose directory increment is bigger
- than MAX_INCREMENT. MAX_INCREMENT should be a power of two between 1 and 16
- (inclusive), its default is 2 which allows up to 30 characters in a filename
- of a suitable filesystem, this should be more than adequate for most cases.
- For more information about the long filename filesystems read 'minit.doc'.
-
- The ROBUST compilation option syncs the filesystem whenever a write does more
- than a certain amount of i/o. This does slow things down somewhat but it makes
- it far less likely for a filesystem to be left in a mess if the system crashes
- while write operations are taking place (even without ROBUST only the file
- being written to may be damaged if a crash occurs). Without ROBUST things are
- somewhat quicker but less safe.
-
- A note about the code . It was written as independently as possible from minix,
- so any resemblances are entirely coincidental (well what would you call
- something that searches directories other than search_dir , or allocates
- bits in a bitmap other than alloc_bit ?). Naturally I had to look up the
- format of inodes/superblock and the disk layout and so some of the
- inode/superblock structures are the same. I could have changed all the names
- but this would have been pretty confusing for someone looking at the code
- that was familiar with the FS code in Minix, so I kept the originals as far
- as possible. Also please note filesystems are complex things to write and
- although I've tried to anticipate bugs it is possible one or two got through.
- If you spot *anything* that makes fsck in minix complain (other than symlinks
- in an unpatched fsck) please let me know and I'll try to fix any bugs asap.
-
- Now a few notes for future versions. Hopefully , now this is a separate
- filesystem, I should be able to upgrade/bugfix minix.xfs fairly independently
- of MiNT, so send and bugs/suggestions to the email below. However minix.xfs is
- not my number one priority and circumstances in the near future may make heavy
- demands on my time , so I can't guarantee immediate bugfixes or enhancements.
-
- I hope this program illustrates how useful installable filesystems are
- in MiNT, they could be easily used for other formats, such as Spectre or TT
- Unix (though not easily written!). I would be quite prepared to write such
- things, however there are two snags. Firstly I don't have access to the
- necessary information of the relevant filesystem format (or the software that
- uses them) and secondly I am not in a position to write such things free of
- charge. I'd be happy to discuss such things with any interested party, via
- either the email address below, phone or snail mail (or indeed any other
- programming projects).
-
- A few credits, thanks to :
-
- Eric R. Smith for MiNT and lots of helpful advice (not to mention re-writing
- minixfs to work as an installable filesystem).
-
- Andy S Tanenbaum. For writing Minix in the first place.
-
- Frans Meulenbroeks for the ST version of Minix.
-
- Also thanks to everyone who sent in bugs reports or suggestions to this and
- earlier versions of minixfs.
-
- Thanks must also go to everyone at Edinburgh University (and elsewhere) who
- supported the Tardis project which gave me net access up until August 1991,
- Tardis is sadly missed :-(
-
- Finally, big thanks for Steve Usher for his help with my current email
- address.
-
- All comments/questions/bugfixes/suggestions/flames to :
-
- shenson@csm.ac.uk
-
- My old address on nyx will still get through eventually.
-
- Alternatively I can be reached via snail mail or telephone as :
-
- S. N. Henson ,
- 4 Monaco Place,
- Westlands,
- Newcastle ,
- Staffs. ST5 2QT.
- England.
-
- Phone : +44 782 662808
-
- I cannot guarantee to reply to articles posted to comp.sys.atari.st and
- comp.sys.atari.st.tech . In fact I don't read these groups much at all
- at present, so any suggestion or bug report are likely to never reach me
- if mentioned via Usenet. If you want to ensure you get a reply then
- USE EMAIL.
-