File:  [GPL Stacker compression] / dmsdos / doc / troubleshooting.doc
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:38:37 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, DMSDOS
CVS tags: dmsdos092322, dmsdos092232, dmsdos0922, HEAD
DMSDOS 0.9.2.2

troubleshooting.doc

This file contains solutions to common problems with the dmsdos driver.
It is mostly based on the feedback of dmsdos users that have sent mail to me
for some hints (thanks a lot to all of you!).

------------------------------------------------------------------------------

  If you have problems, you may have found a bug. But check the following
  list before (it is a collection of problems I have been reported and, I
  think, can be solved easily). See also file BUGS for a list of known bugs.

  *** See also your kernel log for 'DMSDOS:...' messages. Each message is
      explained in file messages.doc. There you can find hints how to
      solve the problems, too.

- It does not install/compile!

  Maybe the cvf.diff did not apply correctly. Check for *.rej files in
  your kernel sources (only for the 2.0.xx kernels).
  
  In some 2.1.xx kernels umsdos is broken. Get at least 2.1.94 if you want
  to use umsdos together with dmsdos.

  Depending on the dmsdos configuration the code might fail to compile.
  Critical configuration options are:

     * advanced memory management (switch it off if problems occur)
     * writable mmap (switch it *on* for latest 2.1.xx kernels)

  Please keep in mind that 2.1.xx kernels are still changing quite fast.
  I cannot test every configuration option against each kernel...

- The module doesn't load. It fails with a message about undefined symbols.

  The dmsdos module requires fat filesystem support. If the fat module is
  not loaded and not part of the kernel the dmsdos module refuses to load
  and complains about missing symbols. Since kernel 2.0.34, fat additionally
  depends on nls support. If it is the UMSDOS module that doesn't load, 
  see also the next problem :)

- The UMSDOS module doesn't load though fat and msdos support is present.
  It complains about missing symbols 'fat_readpage' and 'fat_dir_ioctl'.

  This is a known bug in some older cvf.diffs from alpha test versions.
  I forgot to add some symbols to the export list in older cvf.diffs for
  kernel 2.0.33. This bug also went in 2.1.80 when CVF-FAT was included.
  In order to fix the problem, edit file linux/fs/fat/fatfs_syms.c and
  append the missing symbols 'fat_readpage' and 'fat_dir_ioctl' to the
  export list. Look how the other symbols are listed there and put in the
  missing ones in the same way. Then recompile the fat module (or the
  kernel if your fat support isn't modular).

- It causes a kernel panic with the message "VFS: LRU list corrupted".

  You are very suffering from the vfat brelse bug (this is a serious
  bug in some 2.2.x and maybe late 2.1.x kernels). This bug is triggered
  by dmsdos. Ensure you have applied the vfat-brelse-bugfix.diff.
  See file patches/DIFFS.TXT or INSTALL.TXT for details.
  
  If not, this indicates probably a leak in dmsdos virtual sector code.
  Please send a bug report to the current dmsdos maintainer and be prepared
  to be asked for some tests in order to track down the bug.

- It crashes and writes a register dump to the syslog.

  If you did not load the module with the -m flag this time, you are out 
  of luck here. Please load the module with the -m flag (this prints a 
  symbol table) and redirect the output into a file. This symbol table is 
  required to analyse the crash. The symbol table usually differs from one 
  insmod to another depending on free memory pages, so you cannot just
  use an older one :) Then try to reproduce the problem.

  This smells like a bug - most likely. To be sure that this is really a
  dmsdos related problem please read the README file in the Linux kernel
  sources (/usr/src/linux/README). There's a procedure explained how to
  obtain valuable information from the register dump in the syslog, in
  particular, how to find out in which function the crash occured. Please
  note that the register dump is absolutely system dependent and thus must 
  be analysed and interpreted by *you* (it's really not difficult, but it must
  be done carefully - otherwise it's meaningless). Just use the symbol table
  the insmod -m command created *before* the crash.

  If it turns out to be a dmsdos function, you have discovered a serious bug 
  that should be fixed. Please send a bug report in that case. Please also
  explain how to reproduce the problem with simple commands like 'ls',
  'cat' or 'touch', for example.

- It hangs without any comments.

  Can you switch to another virtual console and enter commands there? What 
  does 'ps' tell about the hanging process? Can you kill it? If the answer
  to all these is no, this may be a bug.

  Can you reproduce the problem with simple commands like 'ls' or 'cat'?

  Please note that write access to a compressed partition may be awfully
  slow. This depends on the compression level and on the fragmentation of
  the compressed filesystem. Such a situation might be interpreted as a hang
  though it isn't really one (especially on a 386SX16 machine...).

  Also reading a large file or a huge directory might cause a system freeze 
  for a short time. This is especially true for the /dev directory (given
  that you copied it to a compressed partition...)

- After mounting the CVF I only see garbage when I do 'ls /_mountpoint_'.

  Are you sure you loaded the dmsdos module? The plain fat driver (without
  the dmsdos module) mounts some compressed volumes without complaining, but
  it really can't deal with them and logs a lot of errors when trying to
  read, for example, a directory on that partition. Since the mount command
  is exactly the same this might indeed happen accidentially.

  Take a look at your system log (usually in /var/log/messages). If you
  don't see DMSDOS messages - unmount the filesystem, load the dmsdos module
  and try again.

  If you are sure you have loaded the module (try 'lsmod') dmsdos auto
  detection may have failed. Try again with the appropriate cvf_format=xxx
  mount option, i.e. cvf_format=dblspace (for M$ doublespace and drivespace)
  or cvf_format=stacker (for Stacker 3 and 4).

  If you do see DMSDOS messages, there are very likely much of them. If
  the dmsdos driver cannot deal correctly with a filesystem it becomes
  very noisy and sets the partition to read-only mode. In that case, please
  let me know. You might have a new dblspace or stacker version that
  should be supported too.

- I cannot write to files, delete files, create directories ... in the
  compressed subdirectories.

  Lots of possibilities here -- watch your kernel log for a DMSDOS error
  message that may explain what went wrong...
  * Have you disabled write access at compile time? Then you'll find a
    "write access not compiled in" message.
  * Did you mount read-only (option ro)?
  * Is your compressed partition almost full? The driver refuses to allocate
    new clusters on a partition that is almost full when it thinks further
    write access may be dangerous and might cause data loss. Delete some
    files and retry.
  * The compressed partition may have errors. The driver sets errorneous
    compressed partitions to read-only immediately after mounting them. 
    However, you can allow write access again by setting the comp parameter
    via dutil (example: 'dutil /DOS/dblspace.001 setcomp guess'). Of course,
    it is not recommended to write to errorneous partitions.....

- When trying to write to a compressed filesystem I receive I/O errors.

  See previous problem. If you think it's another reason, run dutil to check 
  whether the filesystem is full or too fragmented. If the compressed
  filesystem is read-only, all write access to the compressed filesystem is 
  refused. There is, of course, no real I/O error. The dmsdos driver returns 
  the 'permission denied' or 'no space left on device' error code depending 
  on the situation, but some applications simply claim 'I/O error' instead.

- When trying to write to the compressed partition, I receive "no space left
  on device" errors though dutil says there's *a lot* of free space (>100KB).

  That depends. 100KB is not much. If the filesystem does not allow
  fragmented data dmsdos reserves the space of 10 clusters for the case of
  emergency (just imagine that data that compress well can be replaced by 
  data that don't compress at all and need more physical space). For a CVF 
  with 8KB cluster size it's 80KB, for a CVF with 32KB cluster size it's 
  320KB. You cannot use this space for regular data. If the filesystem 
  supports fragmented data (e.g. drivespace 3, stacker 4) it's enough to 
  reserve space for one fragment of maximum size (drivespace 3: 32.5KB, 
  stacker 4: fragment support for write access is not yet implemented, 
  so size is 10 clusters).

  There are some other possibilities. You may have run out of clusters. The
  driver ensures that you don't get more clusters than dos would give to
  you (otherwise dos' scandisk.exe would *destroy* the compressed partition
  the next time it checks it by inventing some strange errors and trying to
  correct them [arghhhh... seems to be a scandisk bug]). This can be fixed
  by booting dos, running dblspace.exe or drvspace.exe, and setting the 
  compression ratio to the value the program suggests. (The procedure for
  Stacker should be similar.) Don't be surprised if it suggests high
  compression rates you aren't used to from dos - it's because dmsdos
  compresses a little better than dos itself. (In fact, you needn't
  believe the value dos claims - it's exaggerating sometimes....)

  The third possibility is that your compressed partitiion has become too
  fragmented at internal MDFAT level. Dos 6.0-6.22 Doublespace/Drivespace
  and Win95 Doublespace/Drivespace (*not* drivespace 3) and Stacker 3 are
  known to suffer extremely from internal MDFAT level fragmentation. Note
  that this kind of fragmentation is different from usual FAT level
  fragmentation and can not be repaired by those popular FAT defragmentation 
  programs. Use the CVF maintainance tools that came with your CVF software
  to defragment the CVF.

- A file I want to read appears to be empty but the directory says it is not
  empty.

  There was a problem decompressing the file. See your kernel messages
  (/var/log/messages). The first thing to do is to boot dos and run the dos
  filesystem checker on the compressed partition (do not skip the surface test
  since only this test finds erros in compressed data). After that, reboot
  Linux and retry. If the problem did not disappear this may be a real
  dmsdos bug and should be emailed to the author.

- I mounted a compressed floppy at /mnt as type umsdos and tried to run 
  umssync on the disk. It failed with an error message and now some or all 
  files are gone (help)!

  You cannot umssync a compressed floppy without freeing up some space for
  the umsdos special file --linux-.--- (the real msdos part of a compressed
  floppy is always totally full).

  But you have luck, the files are not gone at all. Unmount the floppy and 
  mount it as type msdos. Then remove the (empty) file --linux-.--- and the
  'readme' or 'readthis' or whatoever (it contains a message that this disk
  is compressed and that you must run Micro$ doublespace to read it ...
  very interesting - and not true at all: you can use Linux and dmsdos
  instead :-) ). Now there should be some bytes free for umsdos. Unmount
  the floppy again, mount it as type umsdos and retry. If the problem
  appeared inside the compressed partition, also mount as type msdos, remove
  --linux-.--- where files were gone, free up some space, mount again as type 
  umsdos, and retry running umssync.

  This problem might be considered a umsdos caveat.

- The utility dutil reports a different compression ratio and different free
  space than dos.

  The utility uses another method to calculate the compression ratio and the
  amount of free space. Well, dos displays a dream ratio, dutil exactly
  determines how much the files shrunk on compression. Dos' ratio is higher
  because it compares the space the files *have* allocated with the space
  the files *would have* allocated on an uncompressed partition with an 8 KB
  (32KB under drivespace 3) cluster size. The slack at the end of the files
  causes the difference (especially on small files), but saving wasted space
  is not the same as compression (I think). Since the ratio is used to
  estimate the free space, this value is also different.

- The external utility dutil displays garbage.

  You may have an old version of dutil somewhere in
  your path, find and delete it and recompile dutil. If dutil displays just
  zeros, you are definitely running a dutil from an older dmsdos version. 
  Remove it and recompile the source.

- The external dmsdos utility displays some "lost clusters", but dos'
  scandisk says everything is okay.

  The term "lost clusters" doesn't mean that the clusters are not assigned to
  a file (like in a normal dos fs). Instead, it tells there are clusters that
  have been allocated in the FAT but have a zero MDFAT entry. This is not a
  filesystem error, it only means that the clusters do exist, but they don't
  contain any data and therefore don't use disk space. So they aren't really
  used, but they aren't free either. This is a special situation that can only
  occur in a compressed filesystem. 

- I can't see long filenames on my win95 partitions, I only see the short
  ones.

  Mount as type vfat instead of msdos.

- I cannot unmount my dmsdos partition. umount complains with "device busy".

  Some process is currently using a file or a directory of your partition.
  Find and kill it, then retry. This may be the external dmsdos daemon...
  Hint: 'man fuser'.

- I cannot read some directories in my CVF. They seem to be empty, but they
  aren't empty under dos/win95.

  Watch for DMSDOS error messages in the kernel log.

- On mount, I receive some strange error messages saying there were errors
  in cluster xyz, but dos scandisk doesn't find them and even tells that the 
  CVF doesn't have such many clusters.

  Sorry, there *is* an error in your filesystem. However, it's a kind of
  hidden error, i.e. it doesn't have an immediate effect. It's due to
  garbage in some currently unused parts of the FAT or MDFAT. Most likely
  the slack of the FAT or MDFAT is not zerod out. It should be zerod out
  in order to represent still a valid FAT/MDFAT in case the compressed
  filesystem is enlarged (this may even happen by increasing the compression
  ratio). Dos scandisk & Co. don't check the unused FAT/MDFAT slack for 
  errors. I've been reported that these errors can be fixed by setting a
  large compression ratio, running scandisk again (now it should find and
  correct the errors), and then resetting the compression ratio.

- The dmsdos daemon always exits with an error "Can't get permissions...."

  You are using the *internal* dmsdos daemon which is automatically started
  when it is needed. In this case there's no need for the external daemon. 
  Watch your process list or look for a
  '#define INTERNAL_DAEMON' in dmsdos-config.h. (The internal daemon is a
  kernel process like kflushd or nfsiod.) See file dmsdos.doc for details.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.