Short: SGI(tm) XFileSystem(tm) (XFS) driver for AmigaOS3.x v0.3 Author: Marek Szyprowski Uploader: Marek Szyprowski Type: disk/misc This is early version of the SGI(tm) XFileSystem(tm) (XFS) driver for AmigaOS3.x. *** What's new in 0.3 *** * fixed some problems with extent-list-based directories * added M68k version *** Features *** * support for different directory and file storage type: in-inode, single block, extent list and btree based * support different blocksizes (but only default 4096 tested so far) * automatically adapts to correct blocksize (not tested) * special un*x files like socket, pipe or devices are listed as files with 0 size * transparent support for un*x path names (like "../etc") * unique volume names for unnamed filesystems * configurable cache size * thanks to great DeviceIO.library from Marcin 'Morgoth' Kurek there is: - effective and fast read cache system - support for partitions larger than 4Gb - support for partitions beyond 4Gb boundary (using TD64) *** Limitations *** * read-only support (this probably won't change in future) * no symlinks support yet * no directory hashtables support yet (object lookup in really large directory will take some time) * it is simple handler not a filesystem (you cannot put it in RDB for automount on startup) * no removable media (i.e. floppies) support * only 32 bit inodes are supported (it isn't a real problem, because Linux on 32bit systems also supports only 32bit inodes) *** Warning *** There is no guarantee that this filesystem will work with your disk. It may crash without any reasons. This filesystem is a COMPLETE HACK - there is no up-to-date documentation about XFS on-disk structures. Linux XFS sources are so weird that are almost useless (in terms of code). A bit helpful was XFS driver from GNU Grub - where I found all needed in-block offsets. However all of the SOURCE CODE is written from scratch basing mainly on what I found with disk editor. I did not use any GPL covered code in this driver. *** Cache size and disk buffers *** You can adjust number of memory buffers used by this filesystem. Just set 'Buffers' field in mountlist to the requested number of buffers. The only difference between this and other filesystems that the size of SIGNLE buffer is 16KB, NOT the size of filesystem block. So setting 64 buffers will use about 1MB of memory! Reasonable value for SGIXFileSystem filesystem is about 64 or 128 (1MB or 2MB). *** How to install *** Step 1 - determine the block size of the specified file system (not needed) It is not strictly needed, because this driver should autotically adapt to correct blocksize, however correct block size will speed-up filesystem init. Most common blocksize for Linux XFS filesystems is 4096. If you are not sure, you can check it with "xfs_info" under Linux (it works only with mounted filesystems). Step 2 - correcting partition parameters in RDB Run SCSIConfig (or other tool used for partitioning your HD). Select XFS partition. Set blocksize you got in step 1. Also turn 'Mount' option on. Save you changes and reboot machine. Step 3 - creating mountlist Run 'MakeMountList' tool (included) with the XFS partition name as an argument. Save generated mountlist and open it in your favourite editor. Remove the first line (partition name) and the last line ('#' character). Change 'GlobVec' field to '-1' (if it was set to '0'). Change 'DosType' field to '0x58465300'. Change 'Buffers' field to requested value (more info in 'Cache size' paragraph). Change 'Stack' field to '16384' (just in case). Add these lines to the mountlist: FileSystem = L:SGIXFileSystem Activate = 1 Save mountlist. Step 4 - cleaning up RDB Run SCSIConfig once more and select XFS partition. Turn 'Mount' option off. Save changes and reboot machine. Step 5 - finish Copy SGIXFileSystem to SYS:L and mount XFS partition with shell 'mount' command. You should see an extra icon on your Workbench screen. *** Additional informations *** If you want to change or set the volume name of XFS partition, use 'xfs_admin' tool under Linux: xfs_admin -L /dev/ If you want to have XFS partition mounted every boot, copy your mountlist to SYS:Devs/DOSDrivers If you want to set blocksize manually use SectorsPerBlock field in mountlist, not the SectorSize field (it cointains physical blocksize of the disc and almost always should be left untouched). The default SectorSize is 512 (in case when this field is missing in mountlist). Set SectorsPerBlock to Blocksize/SectorSize. For example to set blocksize to 4096, set SectorsPerBlock to 8 (4096/512 = 8). If you whan to mount partition from disk which has partitions in PC (MDB) format, use 'mountdos' from Aminet. Use 'GENERATE' option and correct generated mountlist in way that is written in 'Install Step 3' section. *** Author, contact and copyright infos *** More informations about SGI(tm) XFS(tm) can be found on: http://www.sgi.com/products/software/xfs/ SGI(tm) and XFS(tm) are registered trademark of Silicon Graphics, Inc. More informations about GNU Grub can be found on: http://www.gnu.org/software/grub/grub.en.html SGIXFileSystem has been written by Marek 'March' Szyprowski . Mail me if you have any suggestions or found a bug. Copyright (C) 2004 Marek 'March' Szyprowski SGIXFileSystem uses libDeviceIO by Marcin Kurek (Morgoth/Dreamolers-CAPS). Big thanks to him for it and for help in writing this driver.