Date: Sat, 16 May 2026 22:14:37 +0300 From: Konstantin Belousov <kostikbel@gmail.com> To: Dag-Erling =?utf-8?B?U23DuHJncmF2?= <des@freebsd.org> Cc: current@freebsd.org Subject: Re: rms_rlock with non-sleepable locks held Message-ID: <agjCHXALbLf1PoYH@kib.kiev.ua> In-Reply-To: <861pfbe93h.fsf@ltc.des.dev> References: <86lddjelen.fsf@ltc.des.dev> <aghCJ5Ean1zhICbS@kib.kiev.ua> <865x4nea98.fsf@ltc.des.dev> <861pfbe93h.fsf@ltc.des.dev>
index | next in thread | previous in thread | raw e-mail
On Sat, May 16, 2026 at 04:13:06PM +0200, Dag-Erling Smørgrav wrote:
> Dag-Erling Smørgrav <des@FreeBSD.org> writes:
> > Konstantin Belousov <kostikbel@gmail.com> writes:
> > > --- a/sys/kern/vfs_subr.c
> > > +++ b/sys/kern/vfs_subr.c
> > > @@ -6509,7 +6509,7 @@ vop_read_post(void *ap, int rc)
> > > struct vop_read_args *a = ap;
> > >
> > > if (!rc) {
> > > - VFS_KNOTE_LOCKED(a->a_vp, NOTE_READ);
> > > + VN_KNOTE_LOCKED(a->a_vp, NOTE_READ);
> > Did you mean to use VN_KNOTE_UNLOCKED() here...
>
> Probably not, as that resulted in a panic...
Try this instead
commit 4ef4999153389a423954fbf4c3d2e679fb96e110
Author: Konstantin Belousov <kib@FreeBSD.org>
Date: Sat May 16 22:11:43 2026 +0300
sys/mount.h: restore KNF_NOKQLOCK in VFS_KNOTE_{,UN}LOCKED
ZFS needs to take internal sleepable lock in its implementation of
VOP_GETATTR(). Due to this, kq must be unlocked around calls to the vfs
filter methods.
Fixes: 1d5e4020e36e1cc9e906200c9c3c784ef43d977e
diff --git a/sys/sys/mount.h b/sys/sys/mount.h
index d6696bba0a4f..2e880bac9068 100644
--- a/sys/sys/mount.h
+++ b/sys/sys/mount.h
@@ -968,8 +968,8 @@ static inline void
VFS_KNOTE_LOCKED(struct vnode *vp, int hint)
{
if ((vn_irflag_read(vp) & VIRF_KNOTE) != 0) {
- KNOTE_LOCKED(&vp->v_pollinfo->vpi_selinfo.si_note,
- hint);
+ KNOTE(&vp->v_pollinfo->vpi_selinfo.si_note,
+ hint, KNF_LISTLOCKED | KNF_NOKQLOCK);
}
}
@@ -977,8 +977,8 @@ static inline void
VFS_KNOTE_UNLOCKED(struct vnode *vp, int hint)
{
if ((vn_irflag_read(vp) & VIRF_KNOTE) != 0) {
- KNOTE_UNLOCKED(&vp->v_pollinfo->vpi_selinfo.si_note,
- hint);
+ KNOTE(&vp->v_pollinfo->vpi_selinfo.si_note,
+ hint, KNF_NOKQLOCK);
}
}
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?agjCHXALbLf1PoYH>
