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
This commit is contained in:
John Baldwin 2011-12-23 20:11:37 +00:00
parent 2789ec41bc
commit f0d6c5caf0
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=228849
3 changed files with 22 additions and 0 deletions

View file

@ -4032,6 +4032,15 @@ vop_create_post(void *ap, int rc)
VFS_KNOTE_LOCKED(a->a_dvp, NOTE_WRITE);
}
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)
{
@ -4113,6 +4122,15 @@ vop_setattr_post(void *ap, int rc)
VFS_KNOTE_LOCKED(a->a_vp, NOTE_ATTRIB);
}
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)
{

View file

@ -569,6 +569,7 @@ vop_openextattr {
%% deleteextattr vp E E E
%! deleteextattr post vop_deleteextattr_post
vop_deleteextattr {
IN struct vnode *vp;
@ -580,6 +581,7 @@ vop_deleteextattr {
%% setextattr vp E E E
%! setextattr post vop_setextattr_post
vop_setextattr {
IN struct vnode *vp;

View file

@ -705,6 +705,7 @@ int vop_panic(struct vop_generic_args *ap);
/* These are called from within the actual VOPS. */
void vop_create_post(void *a, int rc);
void vop_deleteextattr_post(void *a, int rc);
void vop_link_post(void *a, int rc);
void vop_lock_pre(void *a);
void vop_lock_post(void *a, int rc);
@ -717,6 +718,7 @@ void vop_rename_post(void *a, int rc);
void vop_rename_pre(void *a);
void vop_rmdir_post(void *a, int rc);
void vop_setattr_post(void *a, int rc);
void vop_setextattr_post(void *a, int rc);
void vop_strategy_pre(void *a);
void vop_symlink_post(void *a, int rc);
void vop_unlock_post(void *a, int rc);