mirror of
https://github.com/versity/scoutfs.git
synced 2026-08-01 21:06:29 +00:00
Scoutfs has supported posix ACLs through the xattr handler table, which allowed NFS to fetch them through this sideband, which worked for older kernels. With recent changes we've pulled in .get_acl because the mainline kernel is changing how ACL ops are called. But we still left .set_acl unreachable. This meant that on el9.7 nfs clients could now reach .get_acl, but still not set them. With this change, we're finally exposing .set_acl consistently across all el releases and allowing nfs clients to both get and set posix ACLs. Signed-off-by: Auke Kok <auke.kok@versity.com>
40 lines
1.6 KiB
C
40 lines
1.6 KiB
C
#ifndef _SCOUTFS_ACL_H_
|
|
#define _SCOUTFS_ACL_H_
|
|
|
|
#ifdef KC_SET_ACL_DENTRY
|
|
int scoutfs_set_acl(KC_VFS_NS_DEF
|
|
struct dentry *dentry, struct posix_acl *acl, int type);
|
|
#else
|
|
int scoutfs_set_acl(KC_VFS_NS_DEF
|
|
struct inode *inode, struct posix_acl *acl, int type);
|
|
#endif
|
|
#ifdef KC_GET_INODE_ACL
|
|
struct posix_acl *scoutfs_get_acl(struct inode *inode, int type, bool rcu);
|
|
#else
|
|
struct posix_acl *scoutfs_get_acl(struct inode *inode, int type);
|
|
#endif
|
|
struct posix_acl *scoutfs_get_acl_locked(struct inode *inode, int type, struct scoutfs_lock *lock);
|
|
int scoutfs_set_acl_locked(struct inode *inode, struct posix_acl *acl, int type,
|
|
struct scoutfs_lock *lock, struct list_head *ind_locks);
|
|
#ifdef KC_XATTR_STRUCT_XATTR_HANDLER
|
|
int scoutfs_acl_get_xattr(const struct xattr_handler *, struct dentry *dentry,
|
|
struct inode *inode, const char *name, void *value,
|
|
size_t size);
|
|
int scoutfs_acl_set_xattr(const struct xattr_handler *,
|
|
KC_VFS_NS_DEF
|
|
struct dentry *dentry,
|
|
struct inode *inode, const char *name, const void *value,
|
|
size_t size, int flags);
|
|
#else
|
|
int scoutfs_acl_get_xattr(struct dentry *dentry, const char *name, void *value, size_t size,
|
|
int type);
|
|
int scoutfs_acl_set_xattr(struct dentry *dentry, const char *name, const void *value, size_t size,
|
|
int flags, int type);
|
|
#endif
|
|
int scoutfs_acl_chmod_locked(struct inode *inode, struct iattr *attr,
|
|
struct scoutfs_lock *lock, struct list_head *ind_locks);
|
|
int scoutfs_init_acl_locked(struct inode *inode, struct inode *dir,
|
|
struct scoutfs_lock *lock, struct scoutfs_lock *dir_lock,
|
|
struct list_head *ind_locks);
|
|
#endif
|