Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 31 Jan 2013 15:37:36 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        Sergey Kandaurov <pluknet@gmail.com>
Cc:        FreeBSD Current <freebsd-current@FreeBSD.org>
Subject:   Re: panic: LK_RETRY set with incompatible flags
Message-ID:  <510A73A0.9000607@FreeBSD.org>
In-Reply-To: <CAE-mSOJ4ZVR9R_Oej1y8VdiF-KJJdxaXzaoASRXrpQtVRN0BYQ@mail.gmail.com>
References:  <CAE-mSOJ4ZVR9R_Oej1y8VdiF-KJJdxaXzaoASRXrpQtVRN0BYQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
on 31/01/2013 15:29 Sergey Kandaurov said the following:
> Hi.
> 
> Got this assertion on idle NFS server while `ls -la /.zfs/shares/'
> issued on NFS client.
> kern/vfs_vnops.c:_vn_lock()
>                 KASSERT((flags & LK_RETRY) == 0 || error == 0,
>                     ("LK_RETRY set with incompatible flags (0x%x) or
> an error occured (%d)",
> 
> panic: LK_RETRY set with incompatible flags (0x200400) or an error occured (11)
> 
> What does that mean and how is it possible? As you can see, both parts
> of assertion failed.
> 11 is EDEADLK
> 0x200400: LK_RETRY & LK_UPGRADE

LK_SHARED, not LK_UPGRADE.
Apparently the thread already holds an exlusive lock on the vnode, which you
confirm below.


> Tracing pid 2943 tid 101532 td 0xfffffe004f5b7000
> kdb_enter() at kdb_enter+0x3e/frame 0xffffff848e45ef50
> vpanic() at vpanic+0x147/frame 0xffffff848e45ef90
> kassert_panic() at kassert_panic+0x136/frame 0xffffff848e45f000
> _vn_lock() at _vn_lock+0x70/frame 0xffffff848e45f070
> zfs_lookup() at zfs_lookup+0x392/frame 0xffffff848e45f100
> zfs_freebsd_lookup() at zfs_freebsd_lookup+0x6d/frame 0xffffff848e45f240
> VOP_CACHEDLOOKUP_APV() at VOP_CACHEDLOOKUP_APV+0xc2/frame 0xffffff848e45f260
> vfs_cache_lookup() at vfs_cache_lookup+0xcf/frame 0xffffff848e45f2b0
> VOP_LOOKUP_APV() at VOP_LOOKUP_APV+0xc2/frame 0xffffff848e45f2d0
> lookup() at lookup+0x548/frame 0xffffff848e45f350
> nfsvno_namei() at nfsvno_namei+0x1a5/frame 0xffffff848e45f400
> nfsrvd_lookup() at nfsrvd_lookup+0x13a/frame 0xffffff848e45f6b0
> nfsrvd_dorpc() at nfsrvd_dorpc+0xca5/frame 0xffffff848e45f8a0
> nfssvc_program() at nfssvc_program+0x482/frame 0xffffff848e45fa00
> svc_run_internal() at svc_run_internal+0x1e9/frame 0xffffff848e45fba0
> svc_thread_start() at svc_thread_start+0xb/frame 0xffffff848e45fbb0
> fork_exit() at fork_exit+0x84/frame 0xffffff848e45fbf0
> fork_trampoline() at fork_trampoline+0xe/frame 0xffffff848e45fbf0
> --- trap 0xc, rip = 0x800883e9a, rsp = 0x7fffffffd488, rbp = 0x7fffffffd730 ---
> 
> db> show lockedvnods
> Locked vnodes
> 
> 0xfffffe02e21b11d8: tag zfs, type VDIR
>     usecount 4, writecount 0, refcount 4 mountedhere 0
>     flags (VI_ACTIVE)
>     v_object 0xfffffe02d9f2eb40 ref 0 pages 0
>     lock type zfs: EXCL by thread 0xfffffe004f5b7000 (pid 2943, nfsd,
> tid 101532)
> 
> 
> 


-- 
Andriy Gapon



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