Short: Utility to check a SmartFileSystem device structure Author: Marcin "Morgoth" Kurek Uploader: Marek "March" Szyprowski Type: disk/misc Version: 2.45u Architecture: ppc-morphos --------------- 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 - able to check the links state (SOFT only SFS currently do not support the HARD links) and inform about broken ones ! - 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) - smartbuffer feature for optimal defragmentation speed - stackextension (no more crashes due low stack situation) --------------- Usage --------------- Template: DEVICE/A, LOCK/S,FRAGLIST/S,SEEK/S,FORCE/S,QUICK/S,DEFRAGMENT/S, P=PURGE/S,NFP=NOFULLPATH/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] ... For liks it will also prints it's state and path to linked object. FORCE/S: If you specify this parameter, SFScheck will force check or/and defragment for too old version of SmartFileSystem or no SmartFileSystem devices. 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 NFP=NOFULLPATH/S: Forces SEEK, FRAGLIST and PURGE to display only the object names without a full path to it. 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?) Increase the ReadAhead cache size by using L=LINES/N/K and RAHS=READAHEADSIZE/N/K to speedup the check process. The default values makes check slow exp. when you have a many small fileson it, increase it can dramaticly speedup check process. --------------- 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. Increase the Buffer size by using ADDB=ADDBUFFERS/N/K to speedup defragmentation process. The recomended value for 512 bytes / block partition is '10 buffers/MB' ... With the dafault value the defragmentation process will be *EXTREMALY SLOW* exp. for quite big and full partitions. --------------- Notes - SmartBuffer --------------- From version 2.41 SFSCheck try to chose a best buffer size for defragmentation process, to get best defragmentation speed. The SmartBuffer chose ADDBUFFERS parameter automaticly. This method is called smart because it check many things before add a buffers to device to avoid a low memory situation for example. If you do not want use a SmartBuffer feature for some reason's you can disable it by specyfy the ADDB=ADDBUFFERS/N/K directly. --------------- 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 !! 2.41 (1.12.2002) - Rebuild completly after a major HD crash :( - Added stackextension - Added SmartBuffer feature - Fixed problem with SEEK/S, in previous versions it ignored empty directories - Extended SEEK/S - Reduce memory consumption - Some optimalization's and speedup's, now should work faster on 68040/68060 machines - Fixed a tons of small potential problems and bugs - Fixed DOSBuffers display, previously it shows the initial buffer state, now it shows the acctual state - Removed 'Check Caches' information - Added Hungarian locale - Added some notes about ReadAhead and Buffers 2.42 (5.12.2002) - Fixed a terrible bug in SmartBuffer feature - Improved error handling, please note that this makes a old locale a partialy not usable with new version. I do not know nothing about update I do not manage to contact any of my translators. - Modified FORCE/S switch, now affect's also a defragmentetion process - Extended SFSCheck.script and SFSDefrag.script 2.43 (11.02.2002) - Fixed a links problem with FULLPATH/S option Now it prints a path to linked object and also check the link state (OK, Local or Broken one) - Makes FULLPATH/S to default and changed name to NOFULLPATH/S - Fixed scripts in Scripts/ directory - Removed some obsolete parts of distribution archive - Working MorphOS Port - Final update, this project is dead now ... sorry folks 2.45 (25.07.2003) - Added support for some extensions in SFS 1.201 (MorphOS version) 2.45u (6.05.2004) - Added support for more extensions in SFS 1.210 (MorphOS version) --------------- ToDo --------------- - find the rest of the bugs ;) - ... any suggestions ? --------------- Bugs --------------- - As far I know ... none ;) --------------- ThX --------------- MorphOS Team. --------------- Support --------------- Feel free to send me your suggestions and/or bug reports. --------------- Author --------------- Marcin "Morgoth" Kurek morgoth6@box43.pl --------------------------------------