MS_DOS file system problem

Richard B. Johnson (root@analogic.com)
Thu, 26 Dec 1996 13:46:10 -0500 (EST)


I am using an ADA-2940. Everything works fine with an ext2 filesystem.
However any attempt to execute 'ls' upon a mounted MS-DOS file-system
results in a panic. The panic messages include attempts to kill interrupt
handlers, kfree of non-kmallocked memory, etc. Of course I can't get
any such errors saved to the file system.

In an attempt to find the trouble, I hacked scsi.c to prevent reentry of
internal_cmd() and scsi_done() which were blowing up due to multiple
reentry from lower-level code. The idea was to prevent a complete crash.
This was not intended to be any sort of a fix.

The result was that I was finally able to get some error messages that made
some sense.........
filesystem panic(dev 80:01)
FAT error
Directory 4374 : bad FAT
Filesystem panic(dev 80:01, mounted on 08:11:191994)
Fat_free: deleting beyond EOF.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This actually WROTE to the disk, destroying
an entire directory tree!

It looks as though the Disk is being asked to read data beyond the end
of the physical media and that the file-system thinks that the FAT
is bad. However, MS-DOS's 'chkdsk' and 'scandisk' do not think anything
is wrong with the file system.

Volume DRIVE_C created 09-10-1996 3:22p
Volume Serial Number is 2139-10D8

567,345,152 bytes total disk space
98,304 bytes in 2 hidden files
1,703,936 bytes in 103 directories
94,044,160 bytes in 2,751 user files
471,498,752 bytes available on disk

16,384 bytes in each allocation unit
34,628 total allocation units on disk
28,778 available allocation units on disk

655,360 total bytes memory
626,704 bytes free

Instead of using CHKDSK, try using SCANDISK. SCANDISK can .......

Note that this is a LARGE MS-DOS file-system. Maybe there is some problem
after 536,870,912 bytes?? (1/2 megabyte * 1024)

Another strange symptom is that if I use 'echo *' instead of 'ls', I can
read every directory entry on the disk. I temporarily removed my color ls
so I could use bash's built-in ls. I still get the crash. I think that
'echo *' doesn't stat() the file and the other stuff does so the thing
that percipitates the crash is the stat() call to get the directory info.

This is the error-free startup.

Dec 26 12:09:41 chaos kernel: Console: 16 point font, 400 scans
Dec 26 12:09:41 chaos kernel: Console: colour VGA+ 80x25, 1 virtual console (max 63)
Dec 26 12:09:41 chaos kernel: pcibios_init : BIOS32 Service Directory structure at 0xc00fcb80
Dec 26 12:09:41 chaos kernel: pcibios_init : BIOS32 Service Directory entry at 0xf7972
Dec 26 12:09:41 chaos kernel: pcibios_init : PCI BIOS revision 2.10 entry at 0xf7b5a
Dec 26 12:09:41 chaos kernel: Probing PCI hardware.
Dec 26 12:09:41 chaos kernel: Calibrating delay loop.. ok - 66.15 BogoMIPS
Dec 26 12:09:41 chaos kernel: Memory: 14608k/16384k available (864k kernel code, 384k reserved, 528k data)
Dec 26 12:09:41 chaos kernel: Swansea University Computer Society TCP/IP for NET3.037
Dec 26 12:09:41 chaos kernel: IP Protocols: IGMP, ICMP, UDP, TCP, IPIP
Dec 26 12:09:41 chaos kernel: Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Dec 26 12:09:41 chaos kernel: Checking 'hlt' instruction... Ok.
Dec 26 12:09:41 chaos kernel: Linux version 2.1.16 (root@chaos) (gcc version 2.7.2) #7 Thu Dec 26 11:55:05 EST 1996
Dec 26 12:09:41 chaos kernel: POSIX conformance testing by UNIFIX
Dec 26 12:09:41 chaos kernel: Real Time Clock Driver v1.07
Dec 26 12:09:41 chaos kernel: Started kswapd v 1.4.2.2
Dec 26 12:09:41 chaos kernel: AHA-2940 (PCI-bus), I/O 0xf800, Mem 0xfbfff000:
Dec 26 12:09:41 chaos kernel: irq 9
Dec 26 12:09:41 chaos kernel: bus release time 40 bclks
Dec 26 12:09:41 chaos kernel: data fifo threshold 100
Dec 26 12:09:41 chaos kernel: SCSI CHANNEL A:
Dec 26 12:09:41 chaos kernel: scsi id 7
Dec 26 12:09:41 chaos kernel: scsi selection timeout 256 ms
Dec 26 12:09:41 chaos kernel: scsi bus reset at power-on enabled
Dec 26 12:09:41 chaos kernel: scsi bus parity enabled
Dec 26 12:09:41 chaos kernel: scsi bus termination (low byte) disabled
Dec 26 12:09:41 chaos kernel: aic7xxx: Resetting the SCSI bus...done.
Dec 26 12:09:41 chaos kernel: scsi0 : Adaptec AHA274x/284x/294x (EISA/VLB/PCI-Fast SCSI) 4.0/3.2/4.0
Dec 26 12:09:41 chaos kernel: scsi : 1 host.
Dec 26 12:09:41 chaos kernel: scsi0: Target 0, channel A, now synchronous at 10.0MHz, offset 15.
Dec 26 12:09:41 chaos kernel: Vendor: Quantum Model: XP32150W Rev: L912
Dec 26 12:09:41 chaos kernel: Type: Direct-Access ANSI SCSI revision: 02
Dec 26 12:09:41 chaos kernel: Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
Dec 26 12:09:41 chaos kernel: scsi0: Target 1, channel A, now synchronous at 10.0MHz, offset 15.
Dec 26 12:09:41 chaos kernel: Vendor: Quantum Model: XP32150W Rev: L912
Dec 26 12:09:41 chaos kernel: Type: Direct-Access ANSI SCSI revision: 02
Dec 26 12:09:41 chaos kernel: Detected scsi disk sdb at scsi0, channel 0, id 1, lun 0
Dec 26 12:09:41 chaos kernel: scsi0: Target 4, channel A, now synchronous at 4.0MHz, offset 15.
Dec 26 12:09:41 chaos kernel: Vendor: TOSHIBA Model: CD-ROM XM-3601TA Rev: 1885
Dec 26 12:09:41 chaos kernel: Type: CD-ROM ANSI SCSI revision: 02
Dec 26 12:09:41 chaos kernel: Detected scsi CD-ROM sr0 at scsi0, channel 0, id 4, lun 0
Dec 26 12:09:41 chaos kernel: scsi0: Target 6, channel A, now synchronous at 10.0MHz, offset 15.
Dec 26 12:09:41 chaos kernel: Vendor: QUANTUM Model: FIREBALL_TM1280S Rev: 300N
Dec 26 12:09:41 chaos kernel: Type: Direct-Access ANSI SCSI revision: 02
Dec 26 12:09:41 chaos kernel: Detected scsi disk sdc at scsi0, channel 0, id 6, lun 0
Dec 26 12:09:41 chaos kernel: scsi : detected 1 SCSI cdrom 3 SCSI disks total.
Dec 26 12:09:41 chaos kernel: SCSI device sda: hdwr sector= 512 bytes. Sectors= 4406960 [2151 MB] [2.2 GB]
Dec 26 12:09:41 chaos kernel: SCSI device sdb: hdwr sector= 512 bytes. Sectors= 4406960 [2151 MB] [2.2 GB]
Dec 26 12:09:41 chaos kernel: SCSI device sdc: hdwr sector= 512 bytes. Sectors= 2503872 [1222 MB] [1.2 GB]
Dec 26 12:09:41 chaos kernel: ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
Dec 26 12:09:41 chaos kernel: NE*000 ethercard probe at 0x300: 08 00 00 12 35 99
Dec 26 12:09:41 chaos kernel: eth0: NE2000 found at 0x300, using IRQ 5.
Dec 26 12:09:41 chaos kernel: Partition check:
Dec 26 12:09:41 chaos kernel: sda: sda1 sda2 < sda5 sda6 sda7 sda8 >
Dec 26 12:09:41 chaos kernel: sdb: sdb1 sdb2 sdb3
Dec 26 12:09:41 chaos kernel: sdc: sdc1 sdc2 sdc3
Dec 26 12:09:41 chaos kernel: VFS: Mounted root (ext2 filesystem) readonly.
Dec 26 12:09:41 chaos kernel: Adding Swap: 130748k swap-space (priority -1)
Dec 26 12:09:53 chaos login: ROOT LOGIN ON tty1

Cheers,
Dick Johnson
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Richard B. Johnson
Project Engineer
Analogic Corporation
Voice : (508) 977-3000 ext. 3754
Fax : (508) 532-6097
Modem : (508) 977-6870
Ftp : ftp@boneserver.analogic.com
Email : rjohnson@analogic.com, johnson@analogic.com
Penguin : Linux version 2.1.16 on an i586 machine (66.15 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-