mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Add support for FreeBSD's Solaris style extended attribute interface
FreeBSD commit 2ec2ba7e232d added the Solaris style syscall interface for extended attributes. This patch wires this interface into the FreeBSD ZFS port, since this style of extended attributes is supported by OpenZFS internally when the "xattr" property is set to "dir". Some specific changes: LOOKUP_NAMED_ATTR is defined to indicate the need to set V_NAMEDATTR for calls to zfs_zaccess(). V_NAMEDATTR indicates that the access checking does need to be done for FreeBSD. The access checking code for extended attributes was copy/pasted from the Linux port into zfs_zaccess() in the FreeBSD port. Most of the changes are in zfs_freebsd_lookup() and zfs_freebsd_create(). The semantics of these functions should remain unchanged unless named attributes are being manipulated. All the code changes are enabled for __FreeBSD_version 1500040 and newer. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com> Signed-off-by: Rick Macklem <rmacklem@uoguelph.ca> Closes #17540
This commit is contained in:
@@ -227,6 +227,7 @@ struct taskq;
|
||||
#define LOOKUP_XATTR 0x02 /* lookup up extended attr dir */
|
||||
#define CREATE_XATTR_DIR 0x04 /* Create extended attr dir */
|
||||
#define LOOKUP_HAVE_SYSATTR_DIR 0x08 /* Already created virtual GFS dir */
|
||||
#define LOOKUP_NAMED_ATTR 0x10 /* Lookup a named attribute */
|
||||
|
||||
/*
|
||||
* Public vnode manipulation functions.
|
||||
|
||||
@@ -311,6 +311,7 @@ xva_getxoptattr(xvattr_t *xvap)
|
||||
*/
|
||||
#define V_ACE_MASK 0x1 /* mask represents NFSv4 ACE permissions */
|
||||
#define V_APPEND 0x2 /* want to do append only check */
|
||||
#define V_NAMEDATTR 0x4 /* is a named attribute check */
|
||||
|
||||
/*
|
||||
* Structure used on VOP_GETSECATTR and VOP_SETSECATTR operations
|
||||
|
||||
Reference in New Issue
Block a user