Exemplo n.º 1
0
/*
 * Vnode operation to set a named attribute.
 */
int
ufs_setextattr(struct vop_setextattr_args *ap)
/*
vop_setextattr {
	IN struct vnode *a_vp;
	IN int a_attrnamespace;
	IN const char *a_name;
	INOUT struct uio *a_uio;
	IN struct ucred *a_cred;
	IN struct thread *a_td;
};
*/
{
	struct mount *mp = ap->a_vp->v_mount;
	struct ufsmount *ump = VFSTOUFS(mp); 
	int error;

	/*
	 * XXX: No longer a supported way to delete extended attributes.
	 */
	if (ap->a_uio == NULL)
		return (EINVAL);

	ufs_extattr_uepm_lock(ump);

	error = ufs_extattr_set(ap->a_vp, ap->a_attrnamespace, ap->a_name,
	    ap->a_uio, ap->a_cred, ap->a_td);

	ufs_extattr_uepm_unlock(ump);

	return (error);
}
Exemplo n.º 2
0
/*
 * Vnode operation to set a named attribute.
 */
int
ufs_vop_setextattr(void *v)
{
	struct vop_setextattr_args /* {
		IN struct vnode *a_vp;
		IN int a_attrnamespace;
		IN const char *a_name;
		INOUT struct uio *a_uio;
		IN struct ucred *a_cred;
		IN struct proc *a_p;
	} */ *ap = v;
	struct mount	*mp = ap->a_vp->v_mount;
	struct ufsmount	*ump = VFSTOUFS(mp); 

	int	error;

	ufs_extattr_uepm_lock(ump, ap->a_p);

	if (ap->a_uio != NULL)
		error = ufs_extattr_set(ap->a_vp, ap->a_attrnamespace,
		    ap->a_name, ap->a_uio, ap->a_cred, ap->a_p);
	else
		error = ufs_extattr_rm(ap->a_vp, ap->a_attrnamespace,
		    ap->a_name, ap->a_cred, ap->a_p);

	ufs_extattr_uepm_unlock(ump, ap->a_p);

	return (error);
}