Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 04 Jan 2018 12:52:22 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 224892] ufs: lock order reversal
Message-ID:  <bug-224892-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D224892

            Bug ID: 224892
           Summary: ufs: lock order reversal
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: breno.leitao@gmail.com

I am running current freebsd (Jan 4st - git commit
6fceb757ffd5b050eca4c75ecbd350710b11db5e) on a powerpc64 machine and I am
facing a file system lock order reversal.

lock order reversal:
 1st 0xc0000000008ac748 bufwait (bufwait) @
/root/kernel/freebsd/sys/kern/vfs_bio.c:3564
 2nd 0x4985200 dirhash (dirhash) @
/root/kernel/freebsd/sys/ufs/ufs/ufs_dirhash.c:289
stack backtrace:
#0 0x5ec138 at ??+0
#1 0x5ee360 at ??+0
#2 0x576c2c at ??+0
#3 0x870e50 at ??+0
#4 0x871314 at ??+0
#5 0x875008 at ??+0
#6 0x87f6b4 at ??+0
#7 0x923d0c at ??+0
#8 0x66ede4 at ??+0
#9 0x66ef2c at ??+0
#10 0x908890 at ??+0
#11 0x8fd938 at ??+0


$ awk 'NR >=3D 3560 && NR <=3D 3570' /root/kernel/freebsd/sys/kern/vfs_bio.=
c=20=20=20=20
                if (flags & GB_LOCK_NOWAIT)
                        lockflags |=3D LK_NOWAIT;

                error =3D BUF_TIMELOCK(bp, lockflags,
                    BO_LOCKPTR(bo), "getblk", slpflag, slptimeo);

                /*
                 * If we slept and got the lock we have to restart in case
                 * the buffer changed identities.
                 */
                if (error =3D=3D ENOLCK)


$ awk 'NR >=3D 285 && NR <=3D 295' /root/kernel/freebsd/sys/ufs/ufs/ufs_dir=
hash.c

        dh =3D ip->i_dirhash;
        if (dh =3D=3D NULL)
                return (NULL);
        sx_xlock(&dh->dh_lock);
        if (dh->dh_hash !=3D NULL)
                return (dh);
        ufsdirhash_free_locked(ip);
        return (NULL);
}

--=20
You are receiving this mail because:
You are the assignee for the bug.=



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