home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsf / fsck / fsck_help < prev    next >
Encoding:
Text File  |  1995-01-31  |  19.7 KB  |  413 lines

  1. fsck (1.21) - map fixer and analyst
  2.  
  3. NOTE: this program is SHAREWARE. Read the !SHAREWARE file for more info.
  4.  
  5. fsck is a disc utility that fixes the map of an E-Format disc (hard or
  6. floppy) if it is corrupted for some obscure reasons. fsck can also report
  7. some informations about the way the files are allocated (such as the bytes
  8. lost because of sectors boundaries) and eventually print a detailed
  9. description of the map and directories organization.
  10. fsck can also be considered as a replace of the *CheckMap command because it
  11. is faster, less prone to crash and can give useful informations on the files
  12. allocation.
  13.  
  14.  
  15. Usage
  16. -----
  17.  
  18. fsck [-options] [-d lostdir] [-l logfile] [pathname]
  19. Most used options:
  20.   -s   calculate statistics
  21.   -f   try to fix map if broken
  22.   -l   print the results in "logfile"
  23. Less used options:
  24.   -h   print help informations
  25.   -d   link broken part of map in directory "lostdir"
  26.   -v   print files location (-vv print also files position in zones)
  27.   -D   just display disc information recorded in the map header
  28.   -q   don't display disc information (quiet mode)
  29.   -c   produce output like *CheckMap
  30.   -m   ask the user to eventually move files instead of changing map
  31.   -n   don't try to recognise directories
  32.  
  33. The default directory where files are linked is "$.lost+found".
  34. If 'pathname' is not specified, the current disc is analysed.
  35. If 'pathname' is not a root directory (eg. ADFS::0.$.Library), fsck checks
  36. only that directory and so it cannot tell you if the map is good or broken.
  37. This could be useful if you want to know the statistics of a single directory
  38. instead of the whole disc. If the -f option is used, the disc is scanned from
  39. the root directory, regardless of 'pathname'.
  40. The -m and -n options used together cause fsck 1.20 or later to work like
  41. fsck 1.13 or earlier.
  42.  
  43.  
  44. What it does (or tries to do...)
  45. --------------------------------
  46.  
  47. fsck scans the directory tree and checks the map to see if every file
  48. registered in the map actually exists in a directory. If not, it creates that
  49. file in a directory so that you will be able to delete it in the normal way.
  50. If the file was originally a directory, fsck tries to relink it
  51. reconstructing the directory name and content. Even if you want to keep the
  52. relinked files or directories, you should copy them and delete the original
  53. one, because there is the risk that your map will be corrupted again,
  54. especially if you try to change them.
  55. Apart from directories and their content, the re-linked files are usually
  56. longer than the original lost file because fsck always links whole sectors
  57. (and there is no way to know the original length), their filenames are random
  58. and filetypes always &FFF (Text).
  59.  
  60. Using the -m option, fsck could tell you that an ID is regularly allocated
  61. for another file and you have to delete it (moving the file to another
  62. directory isn't enough, you have to copy it and delete the original) and run
  63. fsck again. Without this option, fsck will change the ID in the map and
  64. rewrite it to disc. The -m option is in fact only useful if you prefer not to
  65. modify your map: anyway, remember that moving files on a corrupted disc can
  66. be quite dangerous and can eventually corrupt other parts of the disc.
  67. Sometimes the disc may be so corrupted that you will need to run fsck more
  68. than once, the program itself will tell you if a re-run is needed.
  69.  
  70.  
  71. The logfile
  72. -----------
  73.  
  74. Using the logfile (-l) option is generally really useful: if something
  75. strange happens, the author will be more helpful if he can see exactly what
  76. happened and you don't even have to try to explain what happened when you run
  77. fsck, the logfile is usually enough!
  78. The logfile contains exactly what it is printed to the screen: unless you use
  79. the -v option it will be really small (nearly 2K on a good map or nearly 10K
  80. on a quite corrupted one).
  81. You cannot save the logfile to the disc to analyse.
  82. If a file with the same name of the logfile already exists, the new data will
  83. be attached at the end of it: in this way, you can attach together two or
  84. more logfiles.
  85.  
  86.  
  87. fsck and Risc PC
  88. ----------------
  89.  
  90. fsck and CheckMap are no more equivalent on Risc PCs! In fact, Acorn changed
  91. some behaviours of the FileCore module in RISC OS 3.50 so that it can now
  92. cope with over-allocated files (ie. files that have allocated more space than
  93. they need). This sort of files on old version of RISC OS causes CheckMap to
  94. say "Map inconsistent" and if you try to delete such files you will lose some
  95. space. On RISC OS 3.50 CheckMap no more says "Map inconsistent" if
  96. over-allocated files are the only map problem and deleting them no more
  97. causes lost space. Compliment Acorn!
  98. fsck still reports map corruptions in this case (on every version of RISC OS)
  99. since an over-allocated file can be considered a problem (think at a 100K
  100. file that uses up 10Mb of disc space and you will understand what I mean!).
  101. Anyway, on a Risc PC, using the -m option you can be able to discover such
  102. files and you can fix the disc (assuming that your map is corrupted only
  103. because of over-allocated files) just moving them.
  104. Remember that using the -f option fsck can cure the disc without moving any
  105. file on every version of RISC OS.
  106.  
  107.  
  108. Return values
  109. -------------
  110.  
  111. This paragraph can be interesting only for programmers who want to write
  112. some program/frontend that has to interface with fsck.
  113.  
  114. fsck returns to RISC OS a value that is 0 only if fsck was able to scan the
  115. disc and the map is good, otherwise it returns 1.
  116. fsck also sets the numeric system variable fsck$ReturnCode to a value that
  117. can be more helpful to determine why fsck failed or 0 if the map was good.
  118. The value is formed by the following bits:
  119.  
  120. enum {
  121.   return_MAPGOOD          = 0x00000000,   /* the map is good (!) */
  122.  
  123.   return_MAP_BROKEN       = 0x00000001,   /* the map is broken, fsck -f should fix it */
  124.   return_MAP_FIXED        = 0x00000002,   /* the map was broken but has been fixed */
  125.   return_MAP_UNFIXABLE    = 0x00000004,   /* the map seems to be unfixable... */
  126.   return_NEED_ELIMINATE   = 0x00000010,   /* need eliminate to fix the map */
  127.   return_NEED_HARDFIX     = 0x00000020,   /* need hardfix to fix the map */
  128.   return_NO_ACTION        = 0x00000100,   /* no useful action performed (eg. fsck -h) */
  129.   return_PARAM_ERROR      = 0x00000200,   /* bad input parameters */
  130.   return_WRONG_FS         = 0x00000400,   /* wrong file system name, disc name, number, etc. */
  131.   return_IO_ERROR         = 0x00000800,   /* error while reading/writing disc, directories, etc. */
  132.   return_MEMORY_FULL      = 0x00001000    /* not enough free memory */
  133. };
  134.  
  135. You can expect that every possible conbination of that values is returned (ie.
  136. &30 means that both 'eliminate' and 'hardfix' are needed) even if generally
  137. only one error number is returned.
  138. If you are writing a 'C' program that has to call fsck you can use something
  139. like this:
  140.  
  141.  if (system("fsck ...")==0) {
  142.    /* map good */
  143.  }
  144.  else {
  145.    /* some problem occurred (not necessairily map broken!) */
  146.    /* check fsck$ReturnCode for more informations */
  147.  }
  148.  
  149. If you don't want (or can't) check the return status you just check the value
  150. of fsck$ReturnCode.
  151.  
  152.  
  153. Notes
  154. -----
  155.  
  156. fsck is 20-30% faster than CheckMap (actually, up to 50% faster on big and
  157. full drives!). If you really like CheckMap's output instead of fsck's one,
  158. you can use the -c option so that fsck will print the directory tree as it
  159. proceeds with the scan. You can eventually include the following alias in
  160. your boot sequence so that you can still write 'CheckMap' even if 'fsck' is
  161. the command actually executed (fsck should be reachable via Run$Path, for
  162. example, put it in the Library directory):
  163. Set Alias$CheckMap "fsck -c "       [try "fsck -s " for a more useful output]
  164.  
  165. Anyway, fsck can also be used to show the "Free space chunks
  166. statistics" or to calculate some statistics about the files allocation using
  167. the -s option (not in conjunction with -c, though).
  168. The "Free space chunks statistics" are always shown unless the -q or -c
  169. options have been specified: in general, with a high number of (small) free
  170. space chunks, RISC OS will be slower when saving files because it will try to
  171. do an auto-Compact and (this is my personal opinion) there will be more
  172. possibility for your disc to become corrupted. So, I think that in this case
  173. you need to Compact your disc, eventually more than once, to try to lower the
  174. number of free space chunks and to increase their size.
  175.  
  176. Remember that it is better if you close all the open files on the disc that
  177. fsck is examining (ie. don't *spool on it!!). If you run fsck in a TaskWindow
  178. remember to avoid any save of data on that disc while fsck is running because
  179. this will have VERY VERY DANGEROUS consequences if you use the -f option!!!
  180. If some file is corrupted, fsck will tell you to eliminate it before trying
  181. to fix the disc (if you were already trying to fix the disc the fixing will be
  182. disabled): before this, try to load the file and if RISC OS doesn't hang you
  183. could be able to save the file somewhere before deleting the original.
  184.  
  185.  
  186. Disclaimer
  187. ----------
  188.  
  189. Even if fsck *can* write to the map, this is generally not dangerous since it
  190. only modifies the IDs of the lost files. Anyway, you are adviced to use
  191. hardfix to save the disc data before using fsck, so that you will be able to
  192. restore it in case something goes wrong. If the relinked files are (for some
  193. mysterious reason) unreadable or undeletable you should just use eliminate on
  194. them and your disc should be as corrupted as before.
  195.  
  196. Anyway, modifying the disc map and the directory tree can always be
  197. dangerous: if fsck corrupts your disc (or if the disc becomes corrupted when
  198. you start writing to it after using fsck), I am sorry for you but I AM NOT
  199. RESPONSIBLE for any loss of data on your discs, so use fsck at your own risk.
  200. As you can see from the list below, fsck worked on many discs and it never
  201. corrupted anything. Sometimes, I intentionally corrupt my disc to see if the
  202. new versions work and never experienced any problem!
  203.  
  204. Finally, remember that unless you specify the -f option, fsck will not write
  205. to your disc and you are encouraged to make a backup copy of your important
  206. data and to save the disc data using hardfix before running fsck -f.
  207.  
  208.  
  209. Limitations
  210. -----------
  211.  
  212. fsck can't fix seriously damaged discs alone: in this case it will ask you to
  213. run eliminate or hardfix to fix what it can't.
  214.  
  215.  
  216. Bugs
  217. ----
  218.  
  219. It seems that sometimes fsck produces strange "Bad drive" errors: this
  220. probably has been cured but if you encounter this sort of problem, please
  221. contact the author sending a logfile and the saved disc data (using hardfix).
  222. Sometimes, on heavily damaged disc, you need to run fsck more than once even
  223. if it doesn't tell you to do so.
  224. fsck could have problems with RISCiX partitioned discs: it works with the
  225. only RISCiX partitioned disc I tried it on, but I cannot be sure it will work
  226. on yours, too. If you have such a disc and fsck reports strange errors (or
  227. say to run hardfix to fix it) please mail me the logfile and (more important)
  228. the disc data saved by hardfix.
  229. Generally, if the disc contains a non-ADFS partition, fsck will report a
  230. defect at the end of the last zone: don't worry, the defect is actually the
  231. beginning of the non-ADFS partition, just ignore it.
  232.  
  233.  
  234. Results achieved up to now
  235. --------------------------
  236.  
  237. If you run fsck on your corrupted HD, please let me know! If it wasn't able
  238. to fix it, I'll try to modify it to cope with your problem. If you want to
  239. stay anonymous tell me not to include your name.
  240.  
  241. Positive results:
  242.  1) some 800K ADFS floppy (used during development).
  243.  2) 100Mb IDE (ICS interface) partitioned in 84Mb/16Mb (both partitions
  244.     fixed). Owner: Sergio Monesi (ie. me!)
  245.  3) 100Mb IDE (ICS interface). Owner: Cristian Ghezzi
  246.  4) 314Mb SCSI (Serial Port Alpha SCSI interface). Owner: K. Bailey
  247.  5) 60Mb IDE (A4 portable). Owner: G. Castagno
  248.  6) 48Mb SCSI (Oak 16 Bit interface). Owner: A.M. Baardholt
  249.  7) 40Mb ST506. Owner: A. Goodfellow
  250.  8) 80Mb IDE (A5000). Owner: Julian Wright
  251.  9) 240Mb SCSI (HCCS 8 bit interface) partitioned in 2*120Mb. Owner: Kai
  252.     Schlichting.
  253. 10) 245Mb IDE (A5000). Owner: H. M.
  254. 11) 80Mb IDE (A5000). Owner: Mike Henry
  255. 12) 121Mb SCSI (Lingenuity SCSI interface). Owner: R. Z.
  256. 13) 100Mb SCSI (Oak interface). Owner: JP Hendrix
  257. 14) 60Mb IDE (A4 portable). Owner: J. Wallace
  258. 15) 122Mb SCSI (Atomwide Parallel/SCSI interface). Owner: J. Wallace
  259. 16) 80Mb IDE (A5000). Owner: P. Callan
  260. 17) 240Mb SCSI (Morley Cached interface). Owner: P. Callan
  261. 18) 80Mb SCSI (Morley Cached interface). Owner: P. Callan
  262. 19) Some 45Mb Syquest Removable cartridges. Owner: P. Callan (this poor dude
  263.     has a lot of discs, all of them were broken, now successfully fixed!!)
  264. 20) 40Mb ST506. Owner: G. Riley
  265. 21) 40Mb IDE (Serial Port interface). Owner: G. Riley
  266. 22) 40Mb ST506. Owner: M. Ferrari
  267. 23) 240Mb IDE (A5000). Owner: E. Pfarr
  268. 24) 200Mb SCSI. Owner: S. Williams
  269. 25) 500Mb SCSI. Owner: S. Williams
  270. 26) 314Mb SCSI (Morley interface). Owner: Cy Booker
  271. 27) 60Mb IDE (A4 portable). Owner: M. Stephens
  272. 28) 105Mb SCSI (HCCS 8 bit interface). Owner. S. Huber
  273. 29) 20Mb IDE (Watford interface). Owner: S. Pollard
  274. 30) 57Mb SCSI (Lingenuity interface). Owner: M. Grimminck
  275. 31) 170Mb IDE (A5000). Owner: M. Ebourne
  276. 32) 40Mb ST506. Owner: M. Attenborough
  277. 33) 120Mb IDE (ICS interface). Owner: J. Haslam
  278. 34) 170Mb SCSI (Oak 16 Bit interface). Owner: P. Spencer
  279. 35) 116Mb IDE (Desktop Projects interface). Owner: A.D. Hodgkinson
  280. 36) 420Mb IDE (A5000). Owner: E. Pronk
  281. 37) 210Mb IDE (Risc PC): Owner: E. Hughes
  282. 38) 105Mb IDE (ICS interface): Owner: C. Whitehead
  283. 39) 200Mb SCSI (Acorn Interface): Owner: A. Malara
  284. 40) 120Mb IDE (A5000). Owner: B. Bommer
  285. 41) 105Mb IDE Syquest Removable cartridge (A5000). Owner: B. Bommer
  286. 42) 52Mb SCSI (Lingenuity interface). Owner: Kjetil Bernhard Thomassen
  287. 43) 122Mb SCSI (Lingenuity interface). Owner: P. Gillham
  288.  
  289. Probably many other discs have been fixed but their owner didn't contacted
  290. me...
  291.  
  292. Negative results:
  293.  No negative results till now.
  294.  
  295.  
  296. History
  297. -------
  298.  
  299. 1.00   First fully working version. Released only via e-mail.
  300. 1.01   Fixed a bug concerning filing system names. Added -D option. Now fsck
  301.        generally needs only one run to fix a heavily corrupted disc. Added
  302.        eliminate program.
  303. 1.02   Changed again the method to check filing system names (Thanks to
  304.        Keith Bailey). Added percentages in statistics. Checks boot block
  305.        checksum and shows defect list.
  306. 1.03   Now it is possible to scan a single directory instead of the whole
  307.        disc. You can specify 'relative' pathnames (eg. @.Examples) instead
  308.        of full paths (Thanks to Julian Wright). At the end of the scan fsck
  309.        will tell you which files should be eventually deleted. Added
  310.        statistics about fragmented files and free blocks sizes. Changed the
  311.        'F's and 'D's with a rotating wheel... Added -q and -l options.
  312. 1.04   Cured a serious bug that has always been present but never caused
  313.        problems (until 1.03). Added ImageFSFix check and -I option. Now fsck
  314.        understands RISCiX partitions.
  315. 1.10   RISCiX partitions are now fully supported (ie. mapped out). First
  316.        version distributed as SHAREWARE.
  317. 1.11   Added -a option. The logfile is appended to the end of the file if it
  318.        already exists and now it contains the creation date. Great speed
  319.        increase (up to 2 times faster without -s and 5 times faster with
  320.        -s!!!). Now fsck is just 25% slower than *CheckMap (or 2 times slower
  321.        with -s)! Added the note about "Free space chunks statistics" (see
  322.        the section Notes).
  323. 1.12   Another speed improvement (just 10%)! fsck isn't yet as fast as
  324.        *CheckMap but I'm working on it ;-) Fixed a possible dangerous
  325.        behaviour of -a option. Added a warning for HD boot blocks marked as
  326.        defect. Slowed down the wheel. Added files MapExpl and StatsHelp.
  327. 1.13   Faster again (15% with -s, 3% without)!! Now statistics are just a bit
  328.        slower than normal mode. Automatic creation of lostdir. More messages
  329.        at the end of the process that can help to understand what happened
  330.        (ie. the disc is fixed, fixable, unfixable, etc.) and more helpful
  331.        error messages (no more "Can't find 'AD::0.$': incorrect FS") if the
  332.        floppy drive is empty!
  333. 1.20   Completely rewritten! As you would expect: *FASTER* (this is
  334.        probably the maximum achievable speed with the structure of fsck, so
  335.        don't expect further significant improvements!). Now fsck is 20-30%
  336.        faster than *CheckMap, even with statistics enabled! Directory
  337.        recognition added (see the "What it does" secton). No more files to
  338.        move (so many people complained about this)! Added -m and -n options
  339.        to 'simulate' 1.13 version. Added -c option to simulate CheckMap (!).
  340.        Removed the obsolescent -a option. Fixed problems with ImageFSFix
  341.        module and removed -I option. If some file has allocation problems,
  342.        the name of the file is reported together with the error, so that you
  343.        can use 'eliminate' to remove it. Fixed a lot of bugs, some more
  344.        sensible messages and more consistent way to print some value. Added
  345.        new statistics about files that must be fragmented. Modified command
  346.        line behaviour: if no 'pathname' is given, fsck scans the current
  347.        disc (as CheckMap does). Added 'hardfix' program. Added '!QuickFix'
  348.        and '!Intro' files. Modified most of this help file, removed the "Can
  349.        a serious filing system corrupt discs?" section that contained only my
  350.        (debatable) opinions and added "fsck and Risc PC" section.
  351. 1.21   Fixed some minor bug and added some error trapping. Added and
  352.        documented a sensible return code and the system variable
  353.        fsck$ReturnCode. Fixed some bugs in the directory relinking feature.
  354.  
  355.  
  356. Thanks go to:
  357. -------------
  358.  
  359. - Keith Bailey who discovered that the first 3 versions of fsck were
  360.   completely useless on his SCSI!! The 4th version finally fixed his
  361.   map problems (twice!). Thanks for the comment about the clock too! :-)
  362. - Adam Goodfellow and Atle Mjelde Baardholt for the beta-testing.
  363. - Hans Ole Rafaelsen who tried fsck on 1.6Mb floppies.
  364. - Julian Wright for his beta-testing, suggestions, PRM docs, bugs-report and
  365.   interest.
  366. - Ernest Ong who suggested me to write a map-corruptor program to test fsck:
  367.   'eliminate' is ready, now I am working on 'corrupter' ;-)
  368. - Cristian Ghezzi who let me play with his RISCiX partitioned SCSI for a
  369.   whole day to discover some stupid fsck bug. He also let me intentionally
  370.   corrupt his ST506 disc to test the new directory recognition feature...
  371. - Andreas Schubert (Platon) who tried fsck on his Risc PC.
  372. - Kai Schlichting who said that fsck was one of the most useful 'Unix ports'
  373.   for RISC OS, a program that the Acorn world really needed. Kai has been
  374.   the first who sent me 'something' to register!
  375. - Mike Henry who has been the first who sent me some pounds to register
  376.   (actually he sent me 10 pounds instead of the 5 I ask!).
  377. - Dag Haakon Myrdal for his suggestions and accurate bug report.
  378. - Martin J. Ebourne for his (initially negative but now generally positive)
  379.   comments!
  380. - Simon Middleton who pushed me to finish the new version (1.20) so that he
  381.   could include it in his PD/ShareWare CD-ROM.
  382. - Jason Williams (and all the other collaborators) for DeskLib: the new
  383.   versions of fsck use some small part of DeskLib and the new sources
  384.   structure is really similar to DeskLib's one.
  385. - the person who spread on Internet a document describing the E-Format
  386.   structure.
  387. - Mohsen Alshayef for his !ArcTools, a very useful utility that allowed
  388.   me to search in the ROM FileCore module for some code...
  389.  
  390.  
  391. Conditions of use
  392. -----------------
  393.  
  394. fsck can only be distributed with the complete fsck suite.
  395. Read the !SHAREWARE file for the conditions of use and distribution of the
  396. whole package.
  397.  
  398.  
  399. I can be contacted at the following address:
  400.  
  401. Sergio Monesi
  402. Via Trento e Trieste 30
  403. 20046 Biassono (MI)
  404. Italy
  405.  
  406. E-mail address:
  407. pel0015@cdc8g5.cdc.polimi.it
  408. If you don't receive a reply (or if the message is bounced) I can also be
  409. contacted at:
  410. sergio@phantom.com
  411. or:
  412. sergio@g386bsd.first.gmd.de
  413.