^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * fs/f2fs/acl.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (c) 2012 Samsung Electronics Co., Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * http://www.samsung.com/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Portions of this code from linux/fs/ext2/acl.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Copyright (C) 2001-2003 Andreas Gruenbacher, <agruen@suse.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #ifndef __F2FS_ACL_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define __F2FS_ACL_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/posix_acl_xattr.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define F2FS_ACL_VERSION 0x0001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) struct f2fs_acl_entry {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) __le16 e_tag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) __le16 e_perm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) __le32 e_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) struct f2fs_acl_entry_short {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) __le16 e_tag;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) __le16 e_perm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) struct f2fs_acl_header {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) __le32 a_version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #ifdef CONFIG_F2FS_FS_POSIX_ACL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) extern struct posix_acl *f2fs_get_acl(struct inode *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) extern int f2fs_set_acl(struct inode *, struct posix_acl *, int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) extern int f2fs_init_acl(struct inode *, struct inode *, struct page *,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct page *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define f2fs_get_acl NULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define f2fs_set_acl NULL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) static inline int f2fs_init_acl(struct inode *inode, struct inode *dir,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct page *ipage, struct page *dpage)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #endif /* __F2FS_ACL_H__ */