aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/vfs_vnops.c
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2003-06-22 23:03:07 +0000
committerRobert Watson <rwatson@FreeBSD.org>2003-06-22 23:03:07 +0000
commit6b42f0a2eb16160e2af30741dc609774d0c22726 (patch)
treeaffd6b23d626ba835f70f989f610ee811a3ab062 /sys/kern/vfs_vnops.c
parent77533ed2aa15c0fa493d1b3713e9b8d0d494f196 (diff)
downloadsrc-6b42f0a2eb16160e2af30741dc609774d0c22726.tar.gz
src-6b42f0a2eb16160e2af30741dc609774d0c22726.zip
Prefer the vop_rmextattr() vnode operation for removing extended
attributes from objects over vop_setextattr() with a NULL uio; if the file system doesn't support the vop_rmextattr() method, fall back to the vop_setextattr() method. Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
Notes
Notes: svn path=/head/; revision=116699
Diffstat (limited to 'sys/kern/vfs_vnops.c')
-rw-r--r--sys/kern/vfs_vnops.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 8d8f13d183c0..2b53323efa3e 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1150,7 +1150,10 @@ vn_extattr_rm(struct vnode *vp, int ioflg, int attrnamespace,
}
/* authorize attribute removal as kernel */
- error = VOP_SETEXTATTR(vp, attrnamespace, attrname, NULL, NULL, td);
+ error = VOP_RMEXTATTR(vp, attrnamespace, attrname, NULL, td);
+ if (error == EOPNOTSUPP)
+ error = VOP_SETEXTATTR(vp, attrnamespace, attrname, NULL,
+ NULL, td);
if ((ioflg & IO_NODELOCKED) == 0) {
vn_finished_write(mp);