Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Dec 2012 12:30:40 GMT
From:      Petr Lampa <lampa@fit.vutbr.cz>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   kern/174324: syncer quota panic
Message-ID:  <201212101230.qBACUe0u081279@red.freebsd.org>
Resent-Message-ID: <201212101240.qBACe07q070893@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         174324
>Category:       kern
>Synopsis:       syncer quota panic
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Dec 10 12:40:00 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Petr Lampa
>Release:        9.1-PRERELEASE
>Organization:
BUT FIT
>Environment:
FreeBSD xxx 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #7: Mon Dec 10 10:55:10 CET 2012     root@xxxxxx:/usr/src/sys/i386/compile/GATE  i386

>Description:
Kernel panic with quota enabled in qsync():

Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x0

Stopped at    __mnt_vnode_markerfree_all+0x78:   movl  %eax,0(%edx)

where
#12 0xc06f3bc8 in __mnt_vnode_markerfree_all (mvp=0xec05bb70, mp=0xc60c0ce4)
    at /usr/src/sys/kern/vfs_subr.c:4723
#13 0xc07e39ae in qsync (mp=0xc60c0ce4)
    at /usr/src/sys/ufs/ufs/ufs_quota.c:1055
#14 0xc07d3a2f in ffs_sync (mp=0xc60c0ce4, waitfor=3)
    at /usr/src/sys/ufs/ffs/ffs_vfsops.c:1469
#15 0xc06fc6d2 in sync_fsync (ap=0xec05bc4c)
    at /usr/src/sys/kern/vfs_subr.c:3692
#16 0xc087d7d2 in VOP_FSYNC_APV (vop=0xc0928820, a=0xec05bc4c)
    at vnode_if.c:1267
#17 0xc06fa3ce in sync_vnode (slp=Variable "slp" is not available.
) at vnode_if.h:549
#18 0xc06fa7c2 in sched_sync () at /usr/src/sys/kern/vfs_subr.c:1914
#19 0xc062f166 in fork_exit (callout=0xc06fa500 <sched_sync>, arg=0x0,
    frame=0xec05bd08) at /usr/src/sys/kern/kern_fork.c:992
#20 0xc0845454 in fork_trampoline () at /usr/src/sys/i386/i386/exception.s:276

(kgdb) p **mvp
$2 = {v_type = VMARKER, v_tag = 0x0, v_op = 0x0, v_data = 0x0,
  v_mount = 0xc60c0ce4, v_nmntvnodes = {tqe_next = 0x0, tqe_prev = 0x0},
  v_un = {vu_mount = 0x0, vu_socket = 0x0, vu_cdev = 0x0, vu_fifoinfo = 0x0},
  v_hashlist = {le_next = 0x0, le_prev = 0x0}, v_hash = 0, v_cache_src = {
    lh_first = 0x0}, v_cache_dst = {tqh_first = 0x0, tqh_last = 0x0},
  v_cache_dd = 0x0, v_cstart = 0, v_lasta = 0, v_lastw = 0, v_clen = 0,
  v_lock = {lock_object = {lo_name = 0x0, lo_flags = 0, lo_data = 0,
      lo_witness = 0x0}, lk_lock = 0, lk_exslpfail = 0, lk_timo = 0,
    lk_pri = 0}, v_interlock = {lock_object = {lo_name = 0x0, lo_flags = 0,
      lo_data = 0, lo_witness = 0x0}, mtx_lock = 0}, v_vnlock = 0x0,
  v_holdcnt = 0, v_usecount = 0, v_iflag = 0, v_vflag = 0, v_writecount = 0,
  v_actfreelist = {tqe_next = 0xc76407c4, tqe_prev = 0xc7643f10}, v_bufobj = {
    bo_mtx = {lock_object = {lo_name = 0x0, lo_flags = 0, lo_data = 0,
        lo_witness = 0x0}, mtx_lock = 0}, bo_clean = {bv_hd = {
        tqh_first = 0x0, tqh_last = 0x0}, bv_root = 0x0, bv_cnt = 0},
    bo_dirty = {bv_hd = {tqh_first = 0x0, tqh_last = 0x0}, bv_root = 0x0,
      bv_cnt = 0}, bo_numoutput = 0, bo_flag = 0, bo_ops = 0x0, bo_bsize = 0,
    bo_object = 0x0, bo_synclist = {le_next = 0x0, le_prev = 0x0},
    bo_private = 0x0, __bo_vnode = 0x0}, v_pollinfo = 0x0, v_label = 0x0,
  v_lockf = 0x0, v_rl = {rl_waiters = {tqh_first = 0x0, tqh_last = 0x0},
    rl_currdep = 0x0}}


It looks that qsync() in ufs_quota.c tries to free VNODE_MARKER for active list using MNT_VNODE_FOREACH_ALL_ABORT() which frees VNODE_MARKER for inactive list!


>How-To-Repeat:

>Fix:
Change MNT_VNODE_FOREACH_ALL_ABORT() to MNT_VNODE_FOREACH_ACTIVE_ABORT()?

>Release-Note:
>Audit-Trail:
>Unformatted:



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