Short: Utility to check a SmartFileSystem device structure Uploader: Marcin "Morgoth" Kurek Author: Marcin "Morgoth" Kurek Type: disk/misc Replaces: SFSCheck.lha Requires: Kickstart 3.0 Version: 2.4 --------------- Introduction --------------- Completly re-written SFSCheck 1.x which can be found in most SFS distributions. All functions from the old program are available in this new utility. Additionally there are many new features and bug fixes. Although it is not the final version, its functionality overtakes the original SFSCheck. There are stil some upgrades to come in the final version. --------------- Legal --------------- The author DOES NOT take any responsibility for any damage occured while using this tool. !THERE ARE NO WARRANTIES! SFSCheck may be freely distributed. It is freeware! --------------- New Features --------------- - checks and displays device fragmentation - able to create a list of fragmented files - able to create a list of objects with special SFS attributes - recognizes volumes given as a argument - support for locale.library (fully localized) - displays crucial information about device - reduced memory fragmentation - support for CTRL+C command - buildin defragmenter - can' purge .recycled directory before defragment device - smart .recycled detection (you can safely rename .recycled directory) - ready for MorphOS and/or OS 4.0 (pure C/C++ code) --------------- Usage --------------- Template: DEVICE/A, LOCK/S,FRAGLIST/S,SEEK/S,FORCE/S,QUICK/S,DEFRAGMENT/S, P=PURGE/S,FP=FULLPATH/S, NCHK=NOCHECK/S,NORB=NOROOTBLOCKS/S,NOASC=NOADMINSPACECONTAINERS/S,NONC=NONODECONTAINERS/S,NOOC=NOOBJECTCONTAINERS/S,NOBMP=NOBITMAP/S,NOFRG=NOFRAGMENTATION/S, FRL=FRAGMENTATIONLIMIT/N/K,ADDB=ADDBUFFERS/N/K,L=LINES/N/K,RAHS=READAHEADSIZE/N/K Required arguments: DEVICE/A: device/volume to check Optional arguments: LOCK/S: If you specify this parameter, SFScheck locks the device/volume for the duration of the scan by using ACTION_INHIBIT. FRAGLIST/S: If you specify this parameter, SFScheck displays a detailed list of fragmented files of the specified device/volume with this syntax: ... Fragmented file: FileName [Object Node Number], number of fragments ... SEEK/S: If you specify this parameter, SFScheck displays a detailed list of objects with special SFS attributes of the specified device/volume with this syntax ... Object Type: Object Name [Object Node Number] Attributes: [List of Attributes] ... FORCE/S: If you specify this parameter, SFScheck will force check for too old version of SmartFileSystem or no SmartFileSystem devices. This do not affected DEFRAGMENT this one require 1.83+ and FORCE will not help. QUICK/S: If you specify this parameter, SFSCheck will perform only ObjectContainers and fragmentation check. You can also specyfy a SEEK/S, FRAGLIST/S FORCE/S or FP=FULLPATH/S options. DEFRAGMENT/S: If you specify this parameter, SFSCheck will defragment the device after check it. For now it's only a simple reworked old SFSDefrag but I will change this ... soon. Also this option require SmartFileSystem 1.83+ and refuset to work with anything bellow. P=PURGE/S: If you specify this parameter, SFSCheck will unprotect if nesesary and delete all files in .recycled directrory before defragment device. SFSCheck will detect is .recycled directory exists then specyfy this option when device is formated without it is safe. You can also rename this directory and PURGE/S will still work without any problem. Requires DEFRAGMENT to work FP=FULLPATH/S: If you specify this parameter, SFScheck forces SEEK, FRAGLIST and PURGE to display the full path of an object; requires either of these to work NCHK=NOCHECK/S: If you specify this parameter, SFScheck will skip all it's checks (RootBlocks, AdminSpaceContainers, NodeContainers, ObjectContainers, Bitmap, Fragmentation) Useful when you want only defragment the device NORB=NOROOTBLOCKS/S: If you specify this parameter, SFScheck will skip RootBlock check NOASC=NOADMINSPACECONTAINERS/S: If you specify this parameter, SFScheck will skip AdminSpaceContaines check NONC=NONODECONTAINERS/S: If you specify this parameter, SFScheck will skip NodeContainers check NOOC=NOOBJECTCONTAINERS/S: If you specify this parameter, SFScheck will skip ObjectContainers check and fragmentation check NOBMP=NOBITMAP/S: If you specify this parameter, SFScheck will skip Bitmap check NOFRG=NOFRAGMENTATION/S: If you specify this parameter, SFScheck will skip Fragmentation check FRL=FRAGMENTATIONLIMIT/N/K: If you specify this parameter, SFScheck will skip device defragmentation if fragmentation is lower than limit. example: if fragmentation is 27% and fragmentation limit is set to 50 SFSCheck will skip defragmentation because fraglimit > fragmentation but if fragmentation is for example 73% SFSCheck will defragment device (fraglimit < fragmentation) ADDB=ADDBUFFERS/N/K: Indicate how many buffers SFSCheck will add for defragmentation. There is higly recomendet to set rather high values to speed up defragmentation process. All buffers are removed after defragmentation. L=LINES/N/K: The number of lines SFScheck uses for its cache during the check. Default is 128 lines RAHS=READAHEADSIZE/N/K: The size of each cache line; the entered value is treated as the number of kilobytes to use. Default is 8 kb example: L=512 RAHS=32 forces SFScheck to use 512 lines, 32 kb each, requires 16 MB of free memory (512 * (32 * 1024)) --------------- Notes - SFSCheck --------------- This tool checks a SFS disk's structure and looks for anything which is wrong. It makes no modifications, it only reads the device. Any error it finds will be displayed. You can use this tool to give more detailed information when reporting bugs to SFS author, but also to convince yourself that the SFS device is still working smoothly. If SFScheck reports errors, the best thing to do would be to backup important files and reformat. Continous using of a SFS disk with errors will eventually result in fatal errors which could mean you lose all data on that device. In that case try to use a SFSSalve utility to recover your data. Do not run SFScheck when you are writing something to the disk. SFScheck will get confused (because the structure changes right under its feet) and reports errors which are not really there. This is not dangerous as SFScheck only reads the disk (it can not repair a disk), but you should be aware of this when using SFScheck. Use LOCK/S to avoid this. SFScheck can be used on SFS devices only. Using it on other type of devices is harmless. SFScheck will simply report that the device is not in the correct format. SFScheck returns following values: - 0 (OK) - everything is OK - 5 (WARN) - CTRL+C break detected - 10 (ERROR) - wrong command line argument - 20 (FAIL) - scan error occured (bad block, cache error, SFS fails?) --------------- Notes - Defragmenter --------------- Defragments files and free space. 100% transparent; defragment a disk while you're still reading and writing data from/to it (SFS won't guarantee a 100% defragmented disk when the disk has been modified during defragmentation though). Defragmentation uses the same safe-writing techniques which SFS always uses. This means a crash, reset or power failure will not cause you to lose any data, even while the defragmenter is running. The price you pay for this feature is speed and a not 100% optimal defragmentation (there is a big difference between a simple defragmenter and a disk optimizer like ReOrg). A very simple interface is provided to activate the defragmenter built-in SFS. See packets.h and the source of SFSdefragmentGUI for more information. --------------- History --------------- 2.3 (26.07.2002) - First public release. 2.4 (31.08.2002) - Fixed a small bug in Volume's support - No longer print "General device init. error" when there is no space for it's internal caches - Added FORCE/S and QUICK/S switch - Added DEFRAGMENT/S, FL=FRAGMENTATIONLIMIT/N/K and ADDB=ADDBUFFERS/N/K - Added NCHK=NOCHECK/S,NORB=NOROOTBLOCKS/S, NOASC=NOADMINSPACECONTAINERS/S,NONC=NONODECONTAINERS/S, NOOC=NOOBJECTCONTAINERS/S,NOBM=NOBITMAP/S,NOF=NOFRAGMENTATION/S - Added polish locale - Added français locale - Added deutsch locale - Added SFSCheck.script and SFSDefrag.script WARNING: Both of them require something about 20 MB free memory in one block !! --------------- ToDo --------------- - GUI - ALL/S - seek&check all SFS devices - MorphOS version - repair SFS devices - find the rest of the bugs ;) --------------- ThX --------------- John Hendrikx - For wonderful SFS of coz :) Jörg Strohmayer - For keep it alive Adam "Vaghax" Potempa - For help with this manual All people from #MorphOS canal for many help not only in development of this tool All people from my Beta Team (in alphabetically order) - Duncan Gow, - Dietmar Lakotta, - Daniel Rangel, - Enrique R. Mecklenburg Serkovic, - Henri, - Jarek "Ajuô" Balcer, - Jerome Chesnot, - Mathias Uhlig, - OPI, - P-O Yliniemi, - Thomas Igracki, - Tony van Haarlem, - Zapek Translators: - Jerome Chesnot - French Translation and manual - Thomas Igracki German Translation and Manual - Jaroslaw Balcer - Polish Translation All people that I forgot :( --------------- Support --------------- Feel free to send me your suggestions and/or bug reports. --------------- Author --------------- Marcin "Morgoth" Kurek morgoth6@box43.pl --------------------------------------