home *** CD-ROM | disk | FTP | other *** search
- fsck (1.20) - map fixer and analyst
-
- NOTE: this program is SHAREWARE. Read the !SHAREWARE file for more info.
-
- fsck is a disc utility that fixes the map of an E-Format disc (hard or
- floppy) if it is corrupted for some obscure reasons. fsck can also report
- some informations about the way the files are allocated (such as the bytes
- lost because of sectors boundaries) and eventually print a detailed
- description of the map and directories organization.
- fsck can also be considered as a replace of the *CheckMap command because it
- is faster, less prone to crash and can give useful informations on the files
- allocation.
-
-
- Usage
- -----
-
- fsck [-options] [-d lostdir] [-l logfile] [pathname]
- Most used options:
- -s calculate statistics
- -f try to fix map if broken
- -l print the results in "logfile"
- Less used options:
- -h print help informations
- -d link broken part of map in directory "lostdir"
- -v print files location (-vv print also files position in zones)
- -D just display disc information recorded in the map header
- -q don't display disc information (quiet mode)
- -c produce output like *CheckMap
- -m ask the user to eventually move files instead of changing map
- -n don't try to recognise directories
-
- The default directory where files are linked is "$.lost+found".
- If 'pathname' is not specified, the current disc is analysed.
- If 'pathname' is not a root directory (eg. ADFS::0.$.Library), fsck checks
- only that directory and so it cannot tell you if the map is good or broken.
- This could be useful if you want to know the statistics of a single directory
- instead of the whole disc. If the -f option is used, the disc is scanned from
- the root directory, regardless of 'pathname'.
- The -m and -n options used together cause fsck 1.20 or later to work like
- fsck 1.13 or earlier.
-
-
- What it does (or tries to do...)
- --------------------------------
-
- fsck scans the directory tree and checks the map to see if every file
- registered in the map actually exists in a directory. If not, it creates that
- file in a directory so that you will be able to delete it in the normal way.
- If the file was originally a directory, fsck tries to relink it
- reconstructing the directory name and content. Even if you want to keep the
- relinked files or directories, you should copy them and delete the original
- one, because there is the risk that your map will be corrupted again,
- especially if you try to change them.
- Apart from directories and their content, the re-linked files are usually
- longer than the original lost file because fsck always links whole sectors
- (and there is no way to know the original length), their filenames are random
- and filetypes always &FFF (Text).
- Using the -m option, fsck could tell you that an ID is regularly allocated
- for another file and you have to delete it (moving the file to another
- directory isn't enough, you have to copy it and delete the original) and run
- fsck again. Without this option, fsck will change the ID in the map and
- rewrite it to disc. The -m option is in fact only useful if you prefer not to
- modify your map: anyway, remember that moving files on a corrupted disc can
- be quite dangerous and can eventually corrupt other parts of the disc.
- Sometimes the disc may be so corrupted that you will need to run fsck more
- than once, the program itself will tell you if a re-run is needed.
-
-
- The logfile
- -----------
-
- Using the logfile (-l) option is generally really useful: if something
- strange happens, the author will be more helpful if he can see exactly what
- happened and you don't even have to try to explain what happened when you run
- fsck, the logfile is usually enough!
- The logfile contains exactly what it is printed to the screen: unless you use
- the -v option it will be really small (nearly 2K on a good map or nearly 10K
- on a quite corrupted one).
- You cannot save the logfile to the disc to analyse.
- If a file with the same name of the logfile already exists, the new data will
- be attached at the end of it: in this way, you can attach together two or
- more logfiles.
-
-
- fsck and Risc PC
- ----------------
-
- fsck and CheckMap are no more equivalent on Risc PCs! In fact, Acorn changed
- some behaviours of the FileCore module in RISC OS 3.50 so that it can now
- cope with over-allocated files (ie. files that have allocated more space than
- they need). This sort of files on old version of RISC OS causes CheckMap to
- say "Map inconsistent" and if you try to delete such files you will lose some
- space. On RISC OS 3.50 CheckMap no more says "Map inconsistent" if
- over-allocated files are the only map problem and deleting them no more
- causes lost space. Compliment Acorn!
- fsck still reports map corruptions in this case (on every version of RISC OS)
- since an over-allocated file can be considered a problem (think at a 100K
- file that uses up 10Mb of disc space and you will understand what I mean!).
- Anyway, on a Risc PC, using the -m option you can be able to discover such
- files and you can fix the disc (assuming that your map is corrupted only
- because of over-allocated files) just moving them.
- Remember that using the -f option fsck can cure the disc without moving any
- file on every version of RISC OS.
-
-
- Notes
- -----
-
- fsck is 20-30% faster than CheckMap (actually, up to 50% faster on big and
- full drives!). If you like CheckMap's output instead of fsck's one, you can
- use the -c option so that fsck will print the directory tree as it proceeds
- with the scan. Anyway, fsck can also be used to show the "Free space chunks
- statistics" or to calculate some statistics about the files allocation using
- the -s option.
- The "Free space chunks statistics" are always shown unless the -q or -c
- options have been specified: in general, with a high number of (small) free
- space chunks, RISC OS will be slower when saving files because it will try to
- do an auto-Compact and (this is my personal opinion) there will be more
- possibility for your disc to become corrupted. So, I think that in this case
- you need to Compact your disc, eventually more than once, to try to lower the
- number of free space chunks and to increase their size.
- Remember that it is better if you close all the open files on the disc that
- fsck is examining (ie. don't *spool on it!!). If you run fsck in a TaskWindow
- remember to avoid any save of data on that disc while fsck is running because
- this will have VERY VERY DANGEROUS consequences if you use the -f option!!!
- If some file is corrupted, fsck will tell you to eliminate it before trying
- to fix the disc (if you were already trying to fix the disc the fixing will be
- disabled): before this, try to load the file and if RISC OS doesn't hang you
- could be able to save the file somewhere before deleting the original.
-
-
- Disclaimer
- ----------
-
- Even if fsck *can* write to the map, this is generally not dangerous since it
- only modifies the IDs of the lost files. Anyway, you are adviced to use
- hardfix to save the disc data before using fsck, so that you will be able to
- restore it in case something goes wrong. If the relinked files are (for some
- mysterious reason) unreadable or undeletable you should just use eliminate on
- them and your disc should be as corrupted as before.
- Anyway, modifying the disc map and the directory tree can always be
- dangerous: if fsck corrupts your disc (or if the disc becomes corrupted when
- you start writing to it after using fsck), I am sorry for you but I AM NOT
- RESPONSIBLE for any loss of data on your discs, so use fsck at your own risk.
- As you can see from the list below, fsck worked on many discs and it never
- corrupted anything. Sometimes, I intentionally corrupt my disc to see if the
- new versions work and never experienced any problem!
- Finally, remember that unless you specify the -f option, fsck will not write
- to your disc and you are encouraged to make a backup copy of your important
- data and to save the disc data using hardfix before running fsck -f.
-
-
- Limitations
- -----------
-
- fsck can't fix seriously damaged discs alone: in this case it will ask you to
- run eliminate or hardfix to fix what it can't.
-
-
- Bugs
- ----
-
- It seems that sometimes fsck produces strange "Bad drive" errors: this
- probably has been cured but if you encounter this sort of problem, please
- contact the author sending a logfile and the saved disc data (using hardfix).
- Sometimes, on heavily damaged disc, you need to run fsck more than once even
- if it doesn't tell you to do so.
- fsck could have problems with RISCiX partitioned discs: it works with the
- only RISCiX partitioned disc I tried it on, but I cannot be sure it will work
- on yours, too. If you have such a disc and fsck reports strange errors (or
- say to run hardfix to fix it) please mail me the logfile and (more important)
- the disc data saved by hardfix.
-
-
- Results achieved up to now
- --------------------------
-
- If you run fsck on your corrupted HD, please let me know! If it wasn't able
- to fix it, I'll try to modify it to cope with your problem. If you want to
- stay anonymous tell me not to include your name.
-
- Positive results:
- 1) some 800K ADFS floppy (used during development).
- 2) 100Mb IDE (ICS interface) partitioned in 84Mb/16Mb (both partitions
- fixed). Owner: Sergio Monesi (ie. me!)
- 3) 100Mb IDE (ICS interface). Owner: Cristian Ghezzi
- 4) 314Mb SCSI (Serial Port Alpha SCSI interface). Owner: K. Bailey
- 5) 60Mb IDE (A4 portable). Owner: G. Castagno
- 6) 48Mb SCSI (Oak 16 Bit interface). Owner: A.M. Baardholt
- 7) 40Mb ST506. Owner: A. Goodfellow
- 8) 80Mb IDE (A5000). Owner: Julian Wright
- 9) 240Mb SCSI (HCCS 8 bit interface) partitioned in 2*120Mb. Owner: Kai
- Schlichting.
- 10) 245Mb IDE (A5000). Owner: H. M.
- 11) 80Mb IDE (A5000). Owner: Mike Henry
- 12) 121Mb SCSI (Lingenuity SCSI interface). Owner: R. Z.
- 13) 100Mb SCSI (Oak interface). Owner: JP Hendrix
- 14) 60Mb IDE (A4 portable). Owner: J. Wallace
- 15) 122Mb SCSI (Atomwide Parallel/SCSI interface). Owner: J. Wallace
- 16) 80Mb IDE (A5000). Owner: P. Callan
- 17) 240Mb SCSI (Morley Cached interface). Owner: P. Callan
- 18) 80Mb SCSI (Morley Cached interface). Owner: P. Callan
- 19) Some 45Mb Syquest Removable cartridges. Owner: P. Callan (this poor dude
- has a lot of discs, all of them were broken, now successfully fixed!!)
- 20) 40Mb ST506. Owner: G. Riley
- 21) 40Mb IDE (Serial Port interface). Owner: G. Riley
- 22) 40Mb ST506. Owner: M. Ferrari
- 23) 240Mb IDE (A5000). Owner: E. Pfarr
- 24) 200Mb SCSI. Owner: S. Williams
- 25) 500Mb SCSI. Owner: S. Williams
- 26) 314Mb SCSI (Morley interface). Owner: Cy Booker
- 27) 60Mb IDE (A4 portable). Owner: M. Stephens
- 28) 105Mb SCSI (HCCS 8 bit interface). Owner. S. Huber
- 29) 20Mb IDE (Watford interface). Owner: S. Pollard
- 30) 57Mb SCSI (Lingenuity interface). Owner: M. Grimminck
- 31) 170Mb IDE (A5000). Owner: M. Ebourne
-
- Probably many other discs have been fixed but their owner didn't contacted
- me...
-
- Negative results:
- No negative results till now.
-
-
- History
- -------
-
- 1.00 First fully working version. Released only via e-mail.
- 1.01 Fixed a bug concerning filing system names. Added -D option. Now fsck
- generally need only one run to fix a heavily corrupted disc. Added
- eliminate program.
- 1.02 Changed again the method to check filing system names (Thanks to
- Keith Bailey). Added percentages in statistics. Checks boot block
- checksum and shows defect list.
- 1.03 Now it is possible to scan a single directory instead of the whole
- disc. You can specify 'relative' pathnames (eg. @.Examples) instead
- of full paths (Thanks to Julian Wright). At the end of the scan fsck
- will tell you which files should be eventually deleted. Added
- statistics about fragmented files and free blocks sizes. Changed the
- 'F's and 'D's with a rotating wheel... Added -q and -l options.
- 1.04 Cured a serious bug that has always been present but never caused
- problems (until 1.03). Added ImageFSFix check and -I option. Now fsck
- understands RISCiX partitions.
- 1.10 RISCiX partitions are now fully supported (ie. mapped out). First
- version distributed as SHAREWARE.
- 1.11 Added -a option. The logfile is appended to the end of the file if it
- already exists and now it contains the creation date. Great speed
- increase (up to 2 times faster without -s and 5 times faster with
- -s!!!). Now fsck is just 25% slower than *CheckMap (or 2 times slower
- with -s)! Added the note about "Free space chunks statistics" (see
- the section Notes).
- 1.12 Another speed improvement (just 10%)! fsck isn't yet as fast as
- *CheckMap but I'm working on it ;-) Fixed a possible dangerous
- behaviour of -a option. Added a warning for HD boot blocks marked as
- defect. Slowed down the wheel. Added files MapExpl and StatsHelp.
- 1.13 Faster again (15% with -s, 3% without)!! Now statistics are just a bit
- slower than normal mode. Automatic creation of lostdir. More messages
- at the end of the process that can help to understand what happened
- (ie. the disc is fixed, fixable, unfixable, etc.) and more helpful
- error messages (no more "Can't find 'AD::0.$': incorrect FS") if the
- floppy drive is empty!
- 1.20 Completely rewritten! As you would expect: *FASTER* (this is
- probably the maximum achievable speed with the structure of fsck, so
- don't expect further significant improvements!). Now fsck is 20-30%
- faster than *CheckMap, even with statistics enabled! Directory
- recognisation added (see the "What it does" secton). No more files to
- move (so many people complained about this)! Added -m and -n options
- to 'simulate' 1.13 version. Added -c option to simulate CheckMap (!).
- Removed the obsolescent -a option. Fixed problems with ImageFSFix
- module and removed -I option. If some file has allocation problems,
- the name of the file is reported together with the error, so that you
- can use 'eliminate' to remove it. Fixed a lot of bugs, some more
- sensible messages and more consistent way to print some value. Added
- new statistics about files that must be fragmented. Modified command
- line behaviour: if no 'pathname' is given, fsck scans the current
- disc (as CheckMap do). Added 'hardfix' program. Added '!QuickFix' and
- '!Intro' files. Modified most of this help file, removed the "Can a
- serious filing system corrupt discs?" section that contained only my
- (debatable) opinions and added "fsck and Risc PC" section.
-
-
- Thanks go to:
- -------------
-
- - Keith Bailey who discovered that the first 3 versions of fsck were
- completely useless on his SCSI!! The 4th version finally fixed his
- map problems (twice!). Thanks for the comment about the clock too! :-)
- - Adam Goodfellow and Atle Mjelde Baardholt for the beta-testing.
- - Hans Ole Rafaelsen who tried fsck on 1.6Mb floppies.
- - Julian Wright for his beta-testing, suggestions, PRM docs, bugs-report and
- interest.
- - Ernest Ong who suggested me to write a map-corruptor program to test fsck:
- 'eliminate' is ready, now I am working on 'corrupter' ;-)
- - Cristian Ghezzi who let me play with his RISCiX partitioned SCSI for a
- whole day to discover some stupid fsck bug. He also let me intentionally
- corrupt his ST506 disc to test the new directory recognisation feature...
- - Andreas Schubert (Platon) who tried fsck on his RiscPC.
- - Kai Schlichting who said that fsck was one of the most useful 'Unix ports'
- for RISC OS, a program that the Acorn world really needed. Kai has been
- the first who sent me 'something' to register!
- - Mike Henry who has been the first who sent me some pounds to register
- (actually he sent me 10 pounds instead of the 5 I ask!).
- - Dag Haakon Myrdal for his suggestions and accurate bug report.
- - Martin J. Ebourne for all the (mostly negative!) comments and scepticism.
- Anyway, fsck finally managed to fix his disc (quickly, as he wanted)! :-)
- - Simon Middleton who pushed me to finish the new version (1.20) so that he
- could include it in his PD/ShareWare CD-ROM.
- - Jason Williams (and all the other collaborators) for DeskLib: the new
- versions of fsck use some small part of DeskLib and the new sources
- structure is really similar to DeskLib's one.
- - the person who spread on Internet a document describing the E-Format
- structure.
- - Mohsen Alshayef for his !ArcTools, a very useful utility that allowed
- me to search in the ROM FileCore module for some code...
-
-
- Conditions of use
- -----------------
-
- fsck can only be distributed with the complete fsck suite.
- Read the !SHAREWARE file for the conditions of use and distribution of the
- whole package.
-
-
- I can be contacted at the following address:
-
- Sergio Monesi
- Via Trento e Trieste 30
- 20046 Biassono (MI)
- Italy
-
- E-mail address:
- pel0015@cdc8g5.cdc.polimi.it
- If you don't receive a reply (or if the message is bounced) I can also be
- contacted at:
- sergio@phantom.com
- or:
- sergio@g386bsd.first.gmd.de
-