Odd problem, maybe iso9660, maybe disk cache

From: Ingles, Raymond (Ray.Ingles@fanucrobotics.com)
Date: Mon Mar 06 2000 - 10:12:13 EST


 I've been tiptoeing my way into CD burning, and I recently ran off a
copy of a CD (updated drivers for my motherboard) using cdrecord to read
directly from my IDE CD drive and writing to my SCSI CDRW. I then mounted
both of them and ran a recursive diff. I got the following output:

Only in /scsicd/ASUSLM: ST5UNST.EX_
Only in /scsicd/ASUSLM: StdOle2.tl_
Only in /scsicd/ASUSLM: UNINSTAL.EX_
Only in /scsicd/ASUSLM: VB5StKit.dl_

 Now, this is weird, because /scsicd is the CDRW, and I couldn't figure
out how it could have *added* files during the burning process. An ls on
the directories in question showed no difference. A second diff -r now
showed no differecences.

 Eeek, intermittent problem! I set up a script and ran it for a while -
the problem shows up ~1/20 times, in spurts - on any given run of 10
diffs, it'll show up 3 or 4 times, or not at all. And sometimes it says
the files are only on the IDE CD, and sometimes only on the SCSI CDRW,
but it's *always* those four files.

 Current config:

 Kernel 2.2.11, unpatched except for some joystick modules. (I'm hoping
    to upgrade to 2.2.14 in the next few days) The special ALi V IDE
    patches are *not* applied. (No point since the IDE CD is the only
    IDE device in the system.)
 ASUS P5A motherboard, K6-II/400MHz (not overclocked), 2x64MB DIMMS
    (i.e. 128MB)
 Ancient Creative 4x ATAPI IDE CD, /dev/hdc, no SCSI emulation
 NCR53c825 SCSI controller, ncr53cxx driver (sym53cxx needs 825a)
 Yamaha CDRW6416SZ, has worked fine up to now

 I ran a script that just did:

  for i in 1 2 3 4 5 6 7 8 9 10
  do
    mount /idecd; mount /scsicd;
    strace diff -r /idecd /scsicd 2> /tmp/pass$i;
    umount/idecd; umount/scsicd;
  done

 The key difference between a successful and unsuccessful run:

2133,2136c2133
< getdents(3, /* 39 entries */, 984) = 896
< lseek(3, 2230, SEEK_SET) = 2230
< lseek(3, 0, SEEK_CUR) = 2230
< getdents(3, /* 1 entries */, 984) = 24

---
> getdents(3, /* 35 entries */, 984)      = 800

And I saved a run with no problems, one with "Only in /idecd", and one with "Only in /scicd". Of course, these files are 29MB uncompressed, 5MB gzipped, so I haven't included them, but I'll find a way to send them to anyone who asks, or just the differences between them.

Any ideas, on how to fix it or what to look for to further localize it?

Sincerely,

Ray Ingles (248) 377-7735 ray.ingles@fanucrobotics.com

"I may submit to the unknown, but never to the unknowable." - Roger Zelazny

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Mar 07 2000 - 21:00:20 EST