[6.1-PRERELEASE/amd64] Kernel panic during heavy UFS traffic
Jason Harmening
jason.harmening at gmail.com
Sat Apr 1 21:49:16 UTC 2006
On Saturday 18 March 2006 19:39, you wrote:
> On Sat, Mar 18, 2006 at 07:29:25PM -0600, Jason Harmening wrote:
> > I finally managed to reproduce the mount panic on the console:
> >
> > CORONA% mount /dev/acd0 /home/jason/dvdram
> > g_vfs_done():acd0[READ(offset=114688, length=16384)]error = 5
> > panic: mount: lost mount
> > cpuid = 0
> > KDB: stack backtrace:
> > kdb_backtrace() at kdb_backtrace+0x37
> > panic() at panic+0x1d1
> > vfs_domount() at vfs_domount+0x9ae
> > vfs_donmount() at vfs_donmount+0x400
> > kernel_mount() at kernel_mount+0x40
> > ffs_cmount() at ffs_cmount+0x7c
> > mount() at mount+0x1e3
> > syscall() at syscall+0x3a4
> > Xfast_syscall() at Xfast_syscall+0xa8
> > --- syscall (21, FreeBSD ELF64, mount), rip = 0x80067e0dc, rsp =
> > 0x7fffffffdc88, rbp = 0x7
> > fffffffe748 ---
> > Uptime: 1m34s
> > Dumping 1023 MB (2 chunks)
> >
> > I'm starting to worry this may be a hardware issue...
>
> Yes, it could well be (or bad media) - the drive returned an I/O error
> (error 5 = EIO) when you tried to mount the media.
>
> > If it is, would there be
> > a more elegant way for the OS to handle a failed removable drive mount
> > besides panicking?
>
> In principle, yes. I don't know if there's any hope of getting it
> fixed in time for 6.1, but please file a PR with this trace.
I filed PR 94669 for this issue and finally took some time to do some further
investigation on my own. I've found the following:
1. I can invariably mount the DVD-RAM successfully if I first do some
operation on the disk that doesn't require it to be mounted (namely, an
fsck), or if I've previously mounted successfully and haven't since ejected
the media. I will only see the panic if I try to mount immediately after
inserting the media, and then not 100% of the time. This leads me to believe
there may be some confusion between the drive, the ATAPI CD/DVD driver, and
the VFS subsystem as to when, exactly, the drive is ready for mounting.
2. I looked at the VFS sources for RELENG_6 and found the point at which the
panic seems to be occurring--lines 891-892 of vfs_mount.c:
if (VFS_ROOT(mp, LK_EXCLUSIVE, &newdp, td))
panic("mount: lost mount");
So essentially the invocation of mp->mount_op->vfs_root (In this case, I'm
guessing whatever the vfs_root function for UFS is) returns an error. Would
it be safe to handle this error by returning an error code instead of
panicking? Or would this have undesirable ramifications for auto-mounted
filesystems on fixed disks, or could the failed vfs_root possibly induce
side-effects that would leave the kernel in an unstable state?
I don't know much about the FreeBSD VFS, but I'm willing to take a crack at
fixing/testing this.
Thanks,
Jason
>
> Kris
More information about the freebsd-stable
mailing list