Date: Thu, 31 Jul 2008 11:50:51 +0200 From: "Attilio Rao" <attilio@freebsd.org> To: "Konstantin Belousov" <kib@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/vm vnode_pager.c Message-ID: <3bbf2fe10807310250v22258277g9a66e59c35778b64@mail.gmail.com> In-Reply-To: <200807301819.m6UIJmY4004034@repoman.freebsd.org> References: <200807301819.m6UIJmY4004034@repoman.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
2008/7/30 Konstantin Belousov <kib@freebsd.org>: > kib 2008-07-30 18:16:06 UTC > > FreeBSD src repository > > Modified files: > sys/vm vnode_pager.c > Log: > SVN rev 181004 on 2008-07-30 18:16:06Z by kib > > The behaviour of the lockmgr going back at least to the 4.4BSD-Lite2 was > to downgrade the exclusive lock to shared one when exclusive lock owner > requested shared lock. New lockmgr panics instead. > > The vnode_pager_lock function requests shared lock on the vnode backing > the OBJT_VNODE, and can be called when the current thread already holds > an exlcusive lock on the vnode. For instance, it happens when handling > page fault from the VOP_WRITE() uiomove that writes to the file, with > the faulted in page fetched from the vm object backed by the same file. > We then get the situation described above. > > Verify whether the vnode is already exclusively locked by the curthread > and request recursed exclusive vnode lock instead of shared, if true. Many thanks. Attilio -- Peace can only be achieved by understanding - A. Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3bbf2fe10807310250v22258277g9a66e59c35778b64>