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:
parent
2789ec41bc
commit
f0d6c5caf0
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user