|
|
1.1 ! root 1: troubleshooting.doc ! 2: ! 3: This file contains solutions to common problems with the dmsdos driver. ! 4: It is mostly based on the feedback of dmsdos users that have sent mail to me ! 5: for some hints (thanks a lot to all of you!). ! 6: ! 7: ------------------------------------------------------------------------------ ! 8: ! 9: If you have problems, you may have found a bug. But check the following ! 10: list before (it is a collection of problems I have been reported and, I ! 11: think, can be solved easily). See also file BUGS for a list of known bugs. ! 12: ! 13: *** See also your kernel log for 'DMSDOS:...' messages. Each message is ! 14: explained in file messages.doc. There you can find hints how to ! 15: solve the problems, too. ! 16: ! 17: - It does not install/compile! ! 18: ! 19: Maybe the cvf.diff did not apply correctly. Check for *.rej files in ! 20: your kernel sources (only for the 2.0.xx kernels). ! 21: ! 22: In some 2.1.xx kernels umsdos is broken. Get at least 2.1.94 if you want ! 23: to use umsdos together with dmsdos. ! 24: ! 25: Depending on the dmsdos configuration the code might fail to compile. ! 26: Critical configuration options are: ! 27: ! 28: * advanced memory management (switch it off if problems occur) ! 29: * writable mmap (switch it *on* for latest 2.1.xx kernels) ! 30: ! 31: Please keep in mind that 2.1.xx kernels are still changing quite fast. ! 32: I cannot test every configuration option against each kernel... ! 33: ! 34: - The module doesn't load. It fails with a message about undefined symbols. ! 35: ! 36: The dmsdos module requires fat filesystem support. If the fat module is ! 37: not loaded and not part of the kernel the dmsdos module refuses to load ! 38: and complains about missing symbols. Since kernel 2.0.34, fat additionally ! 39: depends on nls support. If it is the UMSDOS module that doesn't load, ! 40: see also the next problem :) ! 41: ! 42: - The UMSDOS module doesn't load though fat and msdos support is present. ! 43: It complains about missing symbols 'fat_readpage' and 'fat_dir_ioctl'. ! 44: ! 45: This is a known bug in some older cvf.diffs from alpha test versions. ! 46: I forgot to add some symbols to the export list in older cvf.diffs for ! 47: kernel 2.0.33. This bug also went in 2.1.80 when CVF-FAT was included. ! 48: In order to fix the problem, edit file linux/fs/fat/fatfs_syms.c and ! 49: append the missing symbols 'fat_readpage' and 'fat_dir_ioctl' to the ! 50: export list. Look how the other symbols are listed there and put in the ! 51: missing ones in the same way. Then recompile the fat module (or the ! 52: kernel if your fat support isn't modular). ! 53: ! 54: - It crashes and writes a register dump to the syslog. ! 55: ! 56: If you did not load the module with the -m flag this time, you are out ! 57: of luck here. Please load the module with the -m flag (this prints a ! 58: symbol table) and redirect the output into a file. This symbol table is ! 59: required to analyse the crash. The symbol table usually differs from one ! 60: insmod to another depending on free memory pages, so you cannot just ! 61: use an older one :) Then try to reproduce the problem. ! 62: ! 63: This smells like a bug - most likely. To be sure that this is really a ! 64: dmsdos related problem please read the README file in the Linux kernel ! 65: sources (/usr/src/linux/README). There's a procedure explained how to ! 66: obtain valuable information from the register dump in the syslog, in ! 67: particular, how to find out in which function the crash occured. Please ! 68: note that the register dump is absolutely system dependent and thus must ! 69: be analysed and interpreted by *you* (it's really not difficult, but it must ! 70: be done carefully - otherwise it's meaningless). Just use the symbol table ! 71: the insmod -m command created *before* the crash. ! 72: ! 73: If it turns out to be a dmsdos function, you have discovered a serious bug ! 74: that should be fixed. Please send a bug report in that case. Please also ! 75: explain how to reproduce the problem with simple commands like 'ls', ! 76: 'cat' or 'touch', for example. ! 77: ! 78: - It hangs without any comments. ! 79: ! 80: Can you switch to another virtual console and enter commands there? What ! 81: does 'ps' tell about the hanging process? Can you kill it? If the answer ! 82: to all these is no, this may be a bug. ! 83: ! 84: Can you reproduce the problem with simple commands like 'ls' or 'cat'? ! 85: ! 86: Please note that write access to a compressed partition may be awfully ! 87: slow. This depends on the compression level and on the fragmentation of ! 88: the compressed filesystem. Such a situation might be interpreted as a hang ! 89: though it isn't really one (especially on a 386SX16 machine...). ! 90: ! 91: Also reading a large file or a huge directory might cause a system freeze ! 92: for a short time. This is especially true for the /dev directory (given ! 93: that you copied it to a compressed partition...) ! 94: ! 95: - After mounting the CVF I only see garbage when I do 'ls /_mountpoint_'. ! 96: ! 97: Are you sure you loaded the dmsdos module? The plain fat driver (without ! 98: the dmsdos module) mounts some compressed volumes without complaining, but ! 99: it really can't deal with them and logs a lot of errors when trying to ! 100: read, for example, a directory on that partition. Since the mount command ! 101: is exactly the same this might indeed happen accidentially. ! 102: ! 103: Take a look at your system log (usually in /var/log/messages). If you ! 104: don't see DMSDOS messages - unmount the filesystem, load the dmsdos module ! 105: and try again. ! 106: ! 107: If you are sure you have loaded the module (try 'lsmod') dmsdos auto ! 108: detection may have failed. Try again with the appropriate cvf_format=xxx ! 109: mount option, i.e. cvf_format=dblspace (for M$ doublespace and drivespace) ! 110: or cvf_format=stacker (for Stacker 3 and 4). ! 111: ! 112: If you do see DMSDOS messages, there are very likely much of them. If ! 113: the dmsdos driver cannot deal correctly with a filesystem it becomes ! 114: very noisy and sets the partition to read-only mode. In that case, please ! 115: let me know. You might have a new dblspace or stacker version that ! 116: should be supported too. ! 117: ! 118: - I cannot write to files, delete files, create directories ... in the ! 119: compressed subdirectories. ! 120: ! 121: Lots of possibilities here -- watch your kernel log for a DMSDOS error ! 122: message that may explain what went wrong... ! 123: * Have you disabled write access at compile time? Then you'll find a ! 124: "write access not compiled in" message. ! 125: * Did you mount read-only (option ro)? ! 126: * Is your compressed partition almost full? The driver refuses to allocate ! 127: new clusters on a partition that is almost full when it thinks further ! 128: write access may be dangerous and might cause data loss. Delete some ! 129: files and retry. ! 130: * The compressed partition may have errors. The driver sets errorneous ! 131: compressed partitions to read-only immediately after mounting them. ! 132: However, you can allow write access again by setting the comp parameter ! 133: via dutil (example: 'dutil /DOS/dblspace.001 setcomp guess'). Of course, ! 134: it is not recommended to write to errorneous partitions..... ! 135: ! 136: - When trying to write to a compressed filesystem I receive I/O errors. ! 137: ! 138: See previous problem. If you think it's another reason, run dutil to check ! 139: whether the filesystem is full or too fragmented. If the compressed ! 140: filesystem is read-only, all write access to the compressed filesystem is ! 141: refused. There is, of course, no real I/O error. The dmsdos driver returns ! 142: the 'permission denied' or 'no space left on device' error code depending ! 143: on the situation, but some applications simply claim 'I/O error' instead. ! 144: ! 145: - When trying to write to the compressed partition, I receive "no space left ! 146: on device" errors though dutil says there's *a lot* of free space (>100KB). ! 147: ! 148: That depends. 100KB is not much. If the filesystem does not allow ! 149: fragmented data dmsdos reserves the space of 10 clusters for the case of ! 150: emergency (just imagine that data that compress well can be replaced by ! 151: data that don't compress at all and need more physical space). For a CVF ! 152: with 8KB cluster size it's 80KB, for a CVF with 32KB cluster size it's ! 153: 320KB. You cannot use this space for regular data. If the filesystem ! 154: supports fragmented data (e.g. drivespace 3, stacker 4) it's enough to ! 155: reserve space for one fragment of maximum size (drivespace 3: 32.5KB, ! 156: stacker 4: fragment support for write access is not yet implemented, ! 157: so size is 10 clusters). ! 158: ! 159: There are some other possibilities. You may have run out of clusters. The ! 160: driver ensures that you don't get more clusters than dos would give to ! 161: you (otherwise dos' scandisk.exe would *destroy* the compressed partition ! 162: the next time it checks it by inventing some strange errors and trying to ! 163: correct them [arghhhh... seems to be a scandisk bug]). This can be fixed ! 164: by booting dos, running dblspace.exe or drvspace.exe, and setting the ! 165: compression ratio to the value the program suggests. (The procedure for ! 166: Stacker should be similar.) Don't be surprised if it suggests high ! 167: compression rates you aren't used to from dos - it's because dmsdos ! 168: compresses a little better than dos itself. (In fact, you needn't ! 169: believe the value dos claims - it's exaggerating sometimes....) ! 170: ! 171: The third possibility is that your compressed partitiion has become too ! 172: fragmented at internal MDFAT level. Dos 6.0-6.22 Doublespace/Drivespace ! 173: and Win95 Doublespace/Drivespace (*not* drivespace 3) and Stacker 3 are ! 174: known to suffer extremely from internal MDFAT level fragmentation. Note ! 175: that this kind of fragmentation is different from usual FAT level ! 176: fragmentation and can not be repaired by those popular FAT defragmentation ! 177: programs. Use the CVF maintainance tools that came with your CVF software ! 178: to defragment the CVF. ! 179: ! 180: - A file I want to read appears to be empty but the directory says it is not ! 181: empty. ! 182: ! 183: There was a problem decompressing the file. See your kernel messages ! 184: (/var/log/messages). The first thing to do is to boot dos and run the dos ! 185: filesystem checker on the compressed partition (do not skip the surface test ! 186: since only this test finds erros in compressed data). After that, reboot ! 187: Linux and retry. If the problem did not disappear this may be a real ! 188: dmsdos bug and should be emailed to the author. ! 189: ! 190: - I mounted a compressed floppy at /mnt as type umsdos and tried to run ! 191: umssync on the disk. It failed with an error message and now some or all ! 192: files are gone (help)! ! 193: ! 194: You cannot umssync a compressed floppy without freeing up some space for ! 195: the umsdos special file --linux-.--- (the real msdos part of a compressed ! 196: floppy is always totally full). ! 197: ! 198: But you have luck, the files are not gone at all. Unmount the floppy and ! 199: mount it as type msdos. Then remove the (empty) file --linux-.--- and the ! 200: 'readme' or 'readthis' or whatoever (it contains a message that this disk ! 201: is compressed and that you must run Micro$ doublespace to read it ... ! 202: very interesting - and not true at all: you can use Linux and dmsdos ! 203: instead :-) ). Now there should be some bytes free for umsdos. Unmount ! 204: the floppy again, mount it as type umsdos and retry. If the problem ! 205: appeared inside the compressed partition, also mount as type msdos, remove ! 206: --linux-.--- where files were gone, free up some space, mount again as type ! 207: umsdos, and retry running umssync. ! 208: ! 209: This problem might be considered a umsdos caveat. ! 210: ! 211: - The utility dutil reports a different compression ratio and different free ! 212: space than dos. ! 213: ! 214: The utility uses another method to calculate the compression ratio and the ! 215: amount of free space. Well, dos displays a dream ratio, dutil exactly ! 216: determines how much the files shrunk on compression. Dos' ratio is higher ! 217: because it compares the space the files *have* allocated with the space ! 218: the files *would have* allocated on an uncompressed partition with an 8 KB ! 219: (32KB under drivespace 3) cluster size. The slack at the end of the files ! 220: causes the difference (especially on small files), but saving wasted space ! 221: is not the same as compression (I think). Since the ratio is used to ! 222: estimate the free space, this value is also different. ! 223: ! 224: - The external utility dutil displays garbage. ! 225: ! 226: You may have an old version of dutil somewhere in ! 227: your path, find and delete it and recompile dutil. If dutil displays just ! 228: zeros, you are definitely running a dutil from an older dmsdos version. ! 229: Remove it and recompile the source. ! 230: ! 231: - The external dmsdos utility displays some "lost clusters", but dos' ! 232: scandisk says everything is okay. ! 233: ! 234: The term "lost clusters" doesn't mean that the clusters are not assigned to ! 235: a file (like in a normal dos fs). Instead, it tells there are clusters that ! 236: have been allocated in the FAT but have a zero MDFAT entry. This is not a ! 237: filesystem error, it only means that the clusters do exist, but they don't ! 238: contain any data and therefore don't use disk space. So they aren't really ! 239: used, but they aren't free either. This is a special situation that can only ! 240: occur in a compressed filesystem. ! 241: ! 242: - I can't see long filenames on my win95 partitions, I only see the short ! 243: ones. ! 244: ! 245: Mount as type vfat instead of msdos. ! 246: ! 247: - I cannot unmount my dmsdos partition. umount complains with "device busy". ! 248: ! 249: Some process is currently using a file or a directory of your partition. ! 250: Find and kill it, then retry. This may be the external dmsdos daemon... ! 251: Hint: 'man fuser'. ! 252: ! 253: - I cannot read some directories in my CVF. They seem to be empty, but they ! 254: aren't empty under dos/win95. ! 255: ! 256: Watch for DMSDOS error messages in the kernel log. ! 257: ! 258: - On mount, I receive some strange error messages saying there were errors ! 259: in cluster xyz, but dos scandisk doesn't find them and even tells that the ! 260: CVF doesn't have such many clusters. ! 261: ! 262: Sorry, there *is* an error in your filesystem. However, it's a kind of ! 263: hidden error, i.e. it doesn't have an immediate effect. It's due to ! 264: garbage in some currently unused parts of the FAT or MDFAT. Most likely ! 265: the slack of the FAT or MDFAT is not zerod out. It should be zerod out ! 266: in order to represent still a valid FAT/MDFAT in case the compressed ! 267: filesystem is enlarged (this may even happen by increasing the compression ! 268: ratio). Dos scandisk & Co. don't check the unused FAT/MDFAT slack for ! 269: errors. I've been reported that these errors can be fixed by setting a ! 270: large compression ratio, running scandisk again (now it should find and ! 271: correct the errors), and then resetting the compression ratio. ! 272: ! 273: - The dmsdos daemon always exits with an error "Can't get permissions...." ! 274: ! 275: You are using the *internal* dmsdos daemon which is automatically started ! 276: when it is needed. In this case there's no need for the external daemon. ! 277: Watch your process list or look for a ! 278: '#define INTERNAL_DAEMON' in dmsdos-config.h. (The internal daemon is a ! 279: kernel process like kflushd or nfsiod.) See file dmsdos.doc for details.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.