Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Oct 2005 12:18:56 -0700 (PDT)
From:      Mohan Srinivasan <mohan_srinivasan@yahoo.com>
To:        obrien@freebsd.org, freebsd-current@freebsd.org
Subject:   Re: [PANIC] VOP_STRATEGY failed
Message-ID:  <20051027191856.78942.qmail@web31803.mail.mud.yahoo.com>
In-Reply-To: <20051027171650.GA38016@dragon.NUXI.org>

next in thread | previous in thread | raw e-mail | index | archive | help
When the write (or read) fails, the NFS client (nfs_doio) seems to set 
b_error (and BIO_ERROR in b_ioflags) correctly, but it propagates
the error back up to VOP_STRATEGY(). I think the fix is to have 
nfs_strategy() ignore the error returned by nfs_doio() and always
return back success, but I need to look at this closely one more 
time and test a bit before I commit that change. I'll do that shortly.

mohan

--- David O'Brien <obrien@freebsd.org> wrote:

> FreeBSD 7.0-CURRENT #196: Wed Oct 26 23:19:58 PDT 2005 amd64
> 
> GNU gdb 6.1.1 [FreeBSD]
> 
> Unread portion of the kernel message buffer:
> panic: VOP_STRATEGY failed bp=0xffffffff9a12f1c8 vp=0xffffff012fa6d5d0
> cpuid = 3
> KDB: stack backtrace:
> panic() at panic+0x253
> bufstrategy() at bufstrategy+0x6d
> nfs_writebp() at nfs_writebp+0xf0
> nfs_write() at nfs_write+0x698
> VOP_WRITE_APV() at VOP_WRITE_APV+0xa4
> vn_write() at vn_write+0x1c3
> dofilewrite() at dofilewrite+0x87
> kern_writev() at kern_writev+0x51
> write() at write+0x4a
> syscall() at syscall+0x4e7
> Xfast_syscall() at Xfast_syscall+0xa8
> --- syscall (4, FreeBSD ELF64, write), rip = 0x47a43c, rsp = 0x7fffffffe338, rbp = 0x680 ---
> Uptime: 1h32m49s
> 
> (kgdb) where
> #0  doadump () at pcpu.h:172
> #1  0xffffffff803c6c6c in boot (howto=260) at ../../../kern/kern_shutdown.c:399
> #2  0xffffffff803c670b in panic (
>     fmt=0xffffffff80647608 "VOP_STRATEGY failed bp=%p vp=%p")
>     at ../../../kern/kern_shutdown.c:555
> #3  0xffffffff8041ebad in bufstrategy (bo=0x0, bp=0xffffffff9a12f1c8)
>     at ../../../kern/vfs_bio.c:3690
> #4  0xffffffff804cd240 in nfs_writebp (bp=0xffffffff9a12f1c8, force=0, td=0x0)
>     at buf.h:415
> #5  0xffffffff804be458 in nfs_write (ap=0x0) at buf.h:401
> #6  0xffffffff805de9e4 in VOP_WRITE_APV (vop=0xffffffff807e58a0, 
>     a=0xffffffffb83a49e0) at vnode_if.c:698
> #7  0xffffffff804390b3 in vn_write (fp=0xffffff00a9aea5a0, 
>     uio=0xffffffffb83a4b20, active_cred=0x0, flags=0, td=0xffffff009fbd3500)
>     at vnode_if.h:372
> #8  0xffffffff803f1487 in dofilewrite (td=0xffffff009fbd3500, fd=3, 
>     fp=0xffffff00a9aea5a0, auio=0xffffffffb83a4b20, offset=0, flags=0)
>     at file.h:246
> #9  0xffffffff803f1751 in kern_writev (td=0xffffff009fbd3500, fd=3, 
>     auio=0xffffffffb83a4b20) at ../../../kern/sys_generic.c:402
> #10 0xffffffff803f184a in write (td=0x0, uap=0x0)
>     at ../../../kern/sys_generic.c:326
> #11 0xffffffff8058d6d7 in syscall (frame=
>       {tf_rdi = 3, tf_rsi = 6615040, tf_rdx = 1664, tf_rcx = 7, tf_r8 = 32752, tf_r9 =
> 140737488347528, tf_rax = 4, tf_rbx = 6039296, tf_rbp = 1664, tf_r10 = -1096800402576, tf_r11 =
> 6041920, tf_r12 = 6615040, tf_r13 = 0, tf_r14 = 0, tf_r15 = 0, tf_trapno = 12, tf_addr =
> 6615040, tf_flags = 139, tf_err = 2, tf_rip = 4695100, tf_cs = 43, tf_rflags = 514, tf_rsp =
> 140737488347960, tf_ss = 35})
>     at ../../../amd64/amd64/trap.c:814
> #12 0xffffffff8057a518 in Xfast_syscall ()
>     at ../../../amd64/amd64/exception.S:270
> #13 0x000000000047a43c in ?? ()
> Previous frame inner to this frame (corrupt stack?)
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051027191856.78942.qmail>