Blame view
fs/f2fs/xattr.h
4.65 KB
0a8165d7c f2fs: adjust kern... |
1 |
/* |
af48b85b8 f2fs: add xattr a... |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
* fs/f2fs/xattr.h * * Copyright (c) 2012 Samsung Electronics Co., Ltd. * http://www.samsung.com/ * * Portions of this code from linux/fs/ext2/xattr.h * * On-disk format of extended attributes for the ext2 filesystem. * * (C) 2001 Andreas Gruenbacher, <a.gruenbacher@computer.org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __F2FS_XATTR_H__ #define __F2FS_XATTR_H__ #include <linux/init.h> #include <linux/xattr.h> /* Magic value in attribute blocks */ #define F2FS_XATTR_MAGIC 0xF2F52011 /* Maximum number of references to one attribute block */ #define F2FS_XATTR_REFCOUNT_MAX 1024 /* Name indexes */ |
98e9cb571 vfs: Distinguish ... |
30 |
#define F2FS_SYSTEM_ADVISE_NAME "system.advise" |
af48b85b8 f2fs: add xattr a... |
31 32 33 34 35 36 37 |
#define F2FS_XATTR_INDEX_USER 1 #define F2FS_XATTR_INDEX_POSIX_ACL_ACCESS 2 #define F2FS_XATTR_INDEX_POSIX_ACL_DEFAULT 3 #define F2FS_XATTR_INDEX_TRUSTED 4 #define F2FS_XATTR_INDEX_LUSTRE 5 #define F2FS_XATTR_INDEX_SECURITY 6 #define F2FS_XATTR_INDEX_ADVISE 7 |
b93531dd7 f2fs crypto: add ... |
38 39 40 41 |
/* Should be same as EXT4_XATTR_INDEX_ENCRYPTION */ #define F2FS_XATTR_INDEX_ENCRYPTION 9 #define F2FS_XATTR_NAME_ENCRYPTION_CONTEXT "c" |
af48b85b8 f2fs: add xattr a... |
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
struct f2fs_xattr_header { __le32 h_magic; /* magic number for identification */ __le32 h_refcount; /* reference count */ __u32 h_reserved[4]; /* zero right now */ }; struct f2fs_xattr_entry { __u8 e_name_index; __u8 e_name_len; __le16 e_value_size; /* size of attribute value */ char e_name[0]; /* attribute name */ }; #define XATTR_HDR(ptr) ((struct f2fs_xattr_header *)(ptr)) #define XATTR_ENTRY(ptr) ((struct f2fs_xattr_entry *)(ptr)) |
dd9cfe236 f2fs: introduce _... |
58 |
#define XATTR_FIRST_ENTRY(ptr) (XATTR_ENTRY(XATTR_HDR(ptr) + 1)) |
af48b85b8 f2fs: add xattr a... |
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#define XATTR_ROUND (3) #define XATTR_ALIGN(size) ((size + XATTR_ROUND) & ~XATTR_ROUND) #define ENTRY_SIZE(entry) (XATTR_ALIGN(sizeof(struct f2fs_xattr_entry) + \ entry->e_name_len + le16_to_cpu(entry->e_value_size))) #define XATTR_NEXT_ENTRY(entry) ((struct f2fs_xattr_entry *)((char *)(entry) +\ ENTRY_SIZE(entry))) #define IS_XATTR_LAST_ENTRY(entry) (*(__u32 *)(entry) == 0) #define list_for_each_xattr(entry, addr) \ for (entry = XATTR_FIRST_ENTRY(addr);\ !IS_XATTR_LAST_ENTRY(entry);\ entry = XATTR_NEXT_ENTRY(entry)) |
65985d935 f2fs: support the... |
75 76 |
#define MIN_OFFSET(i) XATTR_ALIGN(inline_xattr_size(i) + PAGE_SIZE - \ sizeof(struct node_footer) - sizeof(__u32)) |
af48b85b8 f2fs: add xattr a... |
77 |
|
65985d935 f2fs: support the... |
78 79 80 |
#define MAX_VALUE_LEN(i) (MIN_OFFSET(i) - \ sizeof(struct f2fs_xattr_header) - \ sizeof(struct f2fs_xattr_entry)) |
af48b85b8 f2fs: add xattr a... |
81 |
|
0a8165d7c f2fs: adjust kern... |
82 |
/* |
af48b85b8 f2fs: add xattr a... |
83 |
* On-disk structure of f2fs_xattr |
65985d935 f2fs: support the... |
84 |
* We use inline xattrs space + 1 block for xattr. |
af48b85b8 f2fs: add xattr a... |
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
* * +--------------------+ * | f2fs_xattr_header | * | | * +--------------------+ * | f2fs_xattr_entry | * | .e_name_index = 1 | * | .e_name_len = 3 | * | .e_value_size = 14 | * | .e_name = "foo" | * | "value_of_xattr" |<- value_offs = e_name + e_name_len * +--------------------+ * | f2fs_xattr_entry | * | .e_name_index = 4 | * | .e_name = "bar" | * +--------------------+ * | | * | Free | * | | * +--------------------+<- MIN_OFFSET * | node_footer | * | (nid, ino, offset) | * +--------------------+ * **/ #ifdef CONFIG_F2FS_FS_XATTR extern const struct xattr_handler f2fs_xattr_user_handler; extern const struct xattr_handler f2fs_xattr_trusted_handler; |
af48b85b8 f2fs: add xattr a... |
114 |
extern const struct xattr_handler f2fs_xattr_advise_handler; |
8ae8f1627 f2fs: support xat... |
115 |
extern const struct xattr_handler f2fs_xattr_security_handler; |
af48b85b8 f2fs: add xattr a... |
116 117 |
extern const struct xattr_handler *f2fs_xattr_handlers[]; |
8ae8f1627 f2fs: support xat... |
118 |
extern int f2fs_setxattr(struct inode *, int, const char *, |
c02745ef6 f2fs: pass flags ... |
119 |
const void *, size_t, struct page *, int); |
bce8d1120 f2fs: avoid deadl... |
120 121 |
extern int f2fs_getxattr(struct inode *, int, const char *, void *, size_t, struct page *); |
8ae8f1627 f2fs: support xat... |
122 |
extern ssize_t f2fs_listxattr(struct dentry *, char *, size_t); |
af48b85b8 f2fs: add xattr a... |
123 124 125 |
#else #define f2fs_xattr_handlers NULL |
e11232680 f2fs: clean up lo... |
126 |
static inline int f2fs_setxattr(struct inode *inode, int index, |
fff4c55d3 f2fs: add missing... |
127 128 |
const char *name, const void *value, size_t size, struct page *page, int flags) |
af48b85b8 f2fs: add xattr a... |
129 130 131 |
{ return -EOPNOTSUPP; } |
e11232680 f2fs: clean up lo... |
132 |
static inline int f2fs_getxattr(struct inode *inode, int index, |
bce8d1120 f2fs: avoid deadl... |
133 134 |
const char *name, void *buffer, size_t buffer_size, struct page *dpage) |
af48b85b8 f2fs: add xattr a... |
135 136 137 138 139 140 141 142 143 |
{ return -EOPNOTSUPP; } static inline ssize_t f2fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) { return -EOPNOTSUPP; } #endif |
8ae8f1627 f2fs: support xat... |
144 145 146 147 148 149 150 151 152 153 |
#ifdef CONFIG_F2FS_FS_SECURITY extern int f2fs_init_security(struct inode *, struct inode *, const struct qstr *, struct page *); #else static inline int f2fs_init_security(struct inode *inode, struct inode *dir, const struct qstr *qstr, struct page *ipage) { return 0; } #endif |
af48b85b8 f2fs: add xattr a... |
154 |
#endif /* __F2FS_XATTR_H__ */ |