-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
- * This file is part of Lustre, http://www.lustre.org
- *
- * MDS data structures.
- * See also lustre_idl.h for wire formats of requests.
- */
-
-#ifndef _LUSTRE_EACL_H
-#define _LUSTRE_EACL_H
-
-#ifdef CONFIG_FS_POSIX_ACL
-
-# ifdef HAVE_XATTR_ACL
-# include <linux/xattr_acl.h>
-# endif /* HAVE_XATTR_ACL */
-# ifdef HAVE_LINUX_POSIX_ACL_XATTR_H
-# include <linux/posix_acl_xattr.h>
-# endif /* HAVE_LINUX_POSIX_ACL_XATTR_H */
-
-#include <lustre_idmap.h>
-#include <md_object.h>
-#include <lu_object.h>
-
-typedef struct {
- __u16 e_tag;
- __u16 e_perm;
- __u32 e_id;
- __u32 e_stat;
-} ext_acl_xattr_entry;
-
-typedef struct {
- __u32 a_count;
- ext_acl_xattr_entry a_entries[0];
-} ext_acl_xattr_header;
-
-#define CFS_ACL_XATTR_SIZE(count, prefix) \
- (sizeof(prefix ## _header) + (count) * sizeof(prefix ## _entry))
-
-#define CFS_ACL_XATTR_COUNT(size, prefix) \
- (((size) - sizeof(prefix ## _header)) / sizeof(prefix ## _entry))
-
-extern int lustre_posix_acl_permission(struct md_ucred *mu, struct lu_attr *la,
- int want, posix_acl_xattr_entry *entry,
- int count);
-extern int lustre_posix_acl_chmod_masq(posix_acl_xattr_entry *entry,
- __u32 mode, int count);
-extern int lustre_posix_acl_create_masq(posix_acl_xattr_entry *entry,
- __u32 *pmode, int count);
-
-extern ext_acl_xattr_header *
-lustre_posix_acl_xattr_2ext(posix_acl_xattr_header *header, int size);
-extern int
-lustre_posix_acl_xattr_filter(posix_acl_xattr_header *header, int size,
- posix_acl_xattr_header **out);
-extern int
-lustre_posix_acl_xattr_id2client(struct md_ucred *mu,
- struct lustre_idmap_table *t,
- posix_acl_xattr_header *header,
- int size, int flags);
-extern void
-lustre_posix_acl_xattr_free(posix_acl_xattr_header *header, int size);
-extern int
-lustre_ext_acl_xattr_id2server(struct md_ucred *mu,
- struct lustre_idmap_table *t,
- ext_acl_xattr_header *header);
-extern void
-lustre_ext_acl_xattr_free(ext_acl_xattr_header *header);
-extern int
-lustre_acl_xattr_merge2posix(posix_acl_xattr_header *posix_header, int size,
- ext_acl_xattr_header *ext_header,
- posix_acl_xattr_header **out);
-extern ext_acl_xattr_header *
-lustre_acl_xattr_merge2ext(posix_acl_xattr_header *posix_header, int size,
- ext_acl_xattr_header *ext_header);
-
-#endif /* CONFIG_FS_POSIX_ACL */
-
-#endif