diff options
author | jhb <jhb@FreeBSD.org> | 2011-12-23 20:11:37 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2011-12-23 20:11:37 +0000 |
commit | 33f06e36cf482807ff85997787e2b99952b68c4c (patch) | |
tree | 29c40988b2d39e863f8a5217d7937b10f86b0a34 /sys/kern/vfs_subr.c | |
parent | b63346bb14e9639acc776319af569d6550cfe069 (diff) | |
download | FreeBSD-src-33f06e36cf482807ff85997787e2b99952b68c4c.zip FreeBSD-src-33f06e36cf482807ff85997787e2b99952b68c4c.tar.gz |
Add post-VOP hooks for VOP_DELETEEXTATTR() and VOP_SETEXTATTR() and use
these to trigger a NOTE_ATTRIB EVFILT_VNODE kevent when the extended
attributes of a vnode are changed.
Note that OS X already implements this behavior.
Reviewed by: rwatson
MFC after: 2 weeks
Diffstat (limited to 'sys/kern/vfs_subr.c')
-rw-r--r-- | sys/kern/vfs_subr.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 2872f77..544b1cc 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -4033,6 +4033,15 @@ vop_create_post(void *ap, int rc) } void +vop_deleteextattr_post(void *ap, int rc) +{ + struct vop_setattr_args *a = ap; + + if (!rc) + VFS_KNOTE_LOCKED(a->a_vp, NOTE_ATTRIB); +} + +void vop_link_post(void *ap, int rc) { struct vop_link_args *a = ap; @@ -4114,6 +4123,15 @@ vop_setattr_post(void *ap, int rc) } void +vop_setextattr_post(void *ap, int rc) +{ + struct vop_setattr_args *a = ap; + + if (!rc) + VFS_KNOTE_LOCKED(a->a_vp, NOTE_ATTRIB); +} + +void vop_symlink_post(void *ap, int rc) { struct vop_symlink_args *a = ap; |