diff options
| author | John-Mark Gurney <jmg@FreeBSD.org> | 2004-08-15 06:24:42 +0000 |
|---|---|---|
| committer | John-Mark Gurney <jmg@FreeBSD.org> | 2004-08-15 06:24:42 +0000 |
| commit | ad3b9257c2f09a6f1c0e56c1100aa4e43fb95e24 (patch) | |
| tree | 1172b68a7c9e7fa73090ae134eb98825bdab8ad6 /sys/gnu | |
| parent | 93ab8d76ea3d4ccf038a7358dd72270f7f9485d8 (diff) | |
Notes
Diffstat (limited to 'sys/gnu')
| -rw-r--r-- | sys/gnu/ext2fs/ext2_vnops.c | 13 | ||||
| -rw-r--r-- | sys/gnu/fs/ext2fs/ext2_vnops.c | 13 |
2 files changed, 10 insertions, 16 deletions
diff --git a/sys/gnu/ext2fs/ext2_vnops.c b/sys/gnu/ext2fs/ext2_vnops.c index 396463219437..cf04778ad9f8 100644 --- a/sys/gnu/ext2fs/ext2_vnops.c +++ b/sys/gnu/ext2fs/ext2_vnops.c @@ -570,7 +570,7 @@ ext2_setattr(ap) return (EROFS); error = ext2_chmod(vp, (int)vap->va_mode, cred, td); } - VN_KNOTE(vp, NOTE_ATTRIB); + VN_KNOTE_UNLOCKED(vp, NOTE_ATTRIB); return (error); } @@ -1894,9 +1894,9 @@ ext2_kqfilter(ap) if (vp->v_pollinfo == NULL) v_addpollinfo(vp); - mtx_lock(&vp->v_pollinfo->vpi_lock); - SLIST_INSERT_HEAD(&vp->v_pollinfo->vpi_selinfo.si_note, kn, kn_selnext); - mtx_unlock(&vp->v_pollinfo->vpi_lock); + if (vp->v_pollinfo == NULL) + return ENOMEM; + knlist_add(&vp->v_pollinfo->vpi_selinfo.si_note, kn, 0); return (0); } @@ -1907,10 +1907,7 @@ filt_ext2detach(struct knote *kn) struct vnode *vp = (struct vnode *)kn->kn_hook; KASSERT(vp->v_pollinfo != NULL, ("Mising v_pollinfo")); - mtx_lock(&vp->v_pollinfo->vpi_lock); - SLIST_REMOVE(&vp->v_pollinfo->vpi_selinfo.si_note, - kn, knote, kn_selnext); - mtx_unlock(&vp->v_pollinfo->vpi_lock); + knlist_remove(&vp->v_pollinfo->vpi_selinfo.si_note, kn, 0); } /*ARGSUSED*/ diff --git a/sys/gnu/fs/ext2fs/ext2_vnops.c b/sys/gnu/fs/ext2fs/ext2_vnops.c index 396463219437..cf04778ad9f8 100644 --- a/sys/gnu/fs/ext2fs/ext2_vnops.c +++ b/sys/gnu/fs/ext2fs/ext2_vnops.c @@ -570,7 +570,7 @@ ext2_setattr(ap) return (EROFS); error = ext2_chmod(vp, (int)vap->va_mode, cred, td); } - VN_KNOTE(vp, NOTE_ATTRIB); + VN_KNOTE_UNLOCKED(vp, NOTE_ATTRIB); return (error); } @@ -1894,9 +1894,9 @@ ext2_kqfilter(ap) if (vp->v_pollinfo == NULL) v_addpollinfo(vp); - mtx_lock(&vp->v_pollinfo->vpi_lock); - SLIST_INSERT_HEAD(&vp->v_pollinfo->vpi_selinfo.si_note, kn, kn_selnext); - mtx_unlock(&vp->v_pollinfo->vpi_lock); + if (vp->v_pollinfo == NULL) + return ENOMEM; + knlist_add(&vp->v_pollinfo->vpi_selinfo.si_note, kn, 0); return (0); } @@ -1907,10 +1907,7 @@ filt_ext2detach(struct knote *kn) struct vnode *vp = (struct vnode *)kn->kn_hook; KASSERT(vp->v_pollinfo != NULL, ("Mising v_pollinfo")); - mtx_lock(&vp->v_pollinfo->vpi_lock); - SLIST_REMOVE(&vp->v_pollinfo->vpi_selinfo.si_note, - kn, knote, kn_selnext); - mtx_unlock(&vp->v_pollinfo->vpi_lock); + knlist_remove(&vp->v_pollinfo->vpi_selinfo.si_note, kn, 0); } /*ARGSUSED*/ |
