NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/42205: kernel panic at activated userquota



On Fri, Oct 30, 2009 at 07:35:02AM +0000, 
6bone%6bone.informatik.uni-leipzig.de@localhost wrote:
>  Hello
>  
>  now a dump from the last panic:
>  
>  uvm_fault(0xffffffff80c7a620, 0x0, 1) -> e
>  fatal page fault in supervisor mode
>  trap type 6 code 0 rip ffffffff803e4863 cs 8 rflags 10246 cr2  70 cpl 0 
>  rsp fff0
>  kernel: page fault trap, code=0
>  Stopped in pid 0.61 (system) at netbsd:qsync+0x103:     movq 
>  0x70(%rdx,%rax,8
>  ),%r14
>  db{2}> trace
>  qsync() at netbsd:qsync+0x103
>  ffs_sync() at netbsd:ffs_sync+0x2eb
>  VFS_SYNC() at netbsd:VFS_SYNC+0x33
>  sync_fsync() at netbsd:sync_fsync+0x85
>  VOP_FSYNC() at netbsd:VOP_FSYNC+0x71
>  sched_sync() at netbsd:sched_sync+0x15d

So it's still VOTI(vp) being NULL.
Can you install the attached patch ? When it runs on a null inode here
it will print the associated vnode (and hopefully avoid the panic :)
Please monitor console output or dmesg and when the vprint fires,
report it there.

-- 
Manuel Bouyer, LIP6, Universite Paris VI.           
Manuel.Bouyer%lip6.fr@localhost
     NetBSD: 26 ans d'experience feront toujours la difference
--
Index: ufs/ufs/ufs_quota.c
===================================================================
RCS file: /cvsroot/src/sys/ufs/ufs/ufs_quota.c,v
retrieving revision 1.60.10.3
diff -u -p -u -r1.60.10.3 ufs_quota.c
--- ufs/ufs/ufs_quota.c 7 Aug 2009 05:59:44 -0000       1.60.10.3
+++ ufs/ufs/ufs_quota.c 30 Oct 2009 15:27:13 -0000
@@ -743,6 +743,14 @@ qsync(struct mount *mp)
                        }
                        continue;
                }
+               if (VTOI(vp) == NULL) {
+                       vprint("qsync vp wihout ip", vp);
+                       mutex_enter(&mntvnode_lock);
+                       vunmark(mvp);
+                       vlockmgr(vp->v_vnlock, LK_RELEASE);
+                       vrele(vp);
+                       goto again;
+               }
                for (i = 0; i < MAXQUOTAS; i++) {
                        dq = VTOI(vp)->i_dquot[i];
                        if (dq == NODQUOT)


Home | Main Index | Thread Index | Old Index