RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
cpukit
libfs
src
jffs2
src
xattr.h
1
/*
2
* JFFS2 -- Journalling Flash File System, Version 2.
3
*
4
* Copyright © 2006 NEC Corporation
5
*
6
* Created by KaiGai Kohei <kaigai@ak.jp.nec.com>
7
*
8
* For licensing information, see the file 'LICENCE' in this directory.
9
*
10
*/
11
12
#ifndef _JFFS2_FS_XATTR_H_
13
#define _JFFS2_FS_XATTR_H_
14
15
#include <linux/xattr.h>
16
#include <linux/list.h>
17
18
#define JFFS2_XFLAGS_HOT (0x01)
/* This datum is HOT */
19
#define JFFS2_XFLAGS_BIND (0x02)
/* This datum is not reclaimed */
20
#define JFFS2_XFLAGS_DEAD (0x40)
/* This datum is already dead */
21
#define JFFS2_XFLAGS_INVALID (0x80)
/* This datum contains crc error */
22
23
struct
jffs2_xattr_datum
24
{
25
void
*always_null;
26
struct
jffs2_raw_node_ref
*node;
27
uint8_t
class
;
28
uint8_t flags;
29
uint16_t xprefix;
/* see JFFS2_XATTR_PREFIX_* */
30
31
struct
list_head
xindex;
/* chained from c->xattrindex[n] */
32
atomic_t refcnt;
/* # of xattr_ref refers this */
33
uint32_t xid;
34
uint32_t version;
35
36
uint32_t data_crc;
37
uint32_t hashkey;
38
char
*xname;
/* XATTR name without prefix */
39
uint32_t name_len;
/* length of xname */
40
char
*xvalue;
/* XATTR value */
41
uint32_t value_len;
/* length of xvalue */
42
};
43
44
struct
jffs2_inode_cache
;
45
struct
jffs2_xattr_ref
46
{
47
void
*always_null;
48
struct
jffs2_raw_node_ref
*node;
49
uint8_t
class
;
50
uint8_t flags;
/* Currently unused */
51
u16 unused;
52
53
uint32_t xseqno;
54
union
{
55
struct
jffs2_inode_cache
*ic;
/* reference to jffs2_inode_cache */
56
uint32_t ino;
/* only used in scanning/building */
57
};
58
union
{
59
struct
jffs2_xattr_datum
*xd;
/* reference to jffs2_xattr_datum */
60
uint32_t xid;
/* only used in sccanning/building */
61
};
62
struct
jffs2_xattr_ref
*next;
/* chained from ic->xref_list */
63
};
64
65
#define XREF_DELETE_MARKER (0x00000001)
66
static
inline
int
is_xattr_ref_dead(
struct
jffs2_xattr_ref
*ref)
67
{
68
return
((ref->xseqno & XREF_DELETE_MARKER) != 0);
69
}
70
71
#ifdef CONFIG_JFFS2_FS_XATTR
72
73
extern
void
jffs2_init_xattr_subsystem(
struct
jffs2_sb_info
*c);
74
extern
void
jffs2_build_xattr_subsystem(
struct
jffs2_sb_info
*c);
75
extern
void
jffs2_clear_xattr_subsystem(
struct
jffs2_sb_info
*c);
76
77
extern
struct
jffs2_xattr_datum
*jffs2_setup_xattr_datum(
struct
jffs2_sb_info
*c,
78
uint32_t xid, uint32_t version);
79
80
extern
void
jffs2_xattr_do_crccheck_inode(
struct
jffs2_sb_info
*c,
struct
jffs2_inode_cache
*ic);
81
extern
void
jffs2_xattr_delete_inode(
struct
jffs2_sb_info
*c,
struct
jffs2_inode_cache
*ic);
82
extern
void
jffs2_xattr_free_inode(
struct
jffs2_sb_info
*c,
struct
jffs2_inode_cache
*ic);
83
84
extern
int
jffs2_garbage_collect_xattr_datum(
struct
jffs2_sb_info
*c,
struct
jffs2_xattr_datum
*xd,
85
struct
jffs2_raw_node_ref
*raw);
86
extern
int
jffs2_garbage_collect_xattr_ref(
struct
jffs2_sb_info
*c,
struct
jffs2_xattr_ref
*ref,
87
struct
jffs2_raw_node_ref
*raw);
88
extern
int
jffs2_verify_xattr(
struct
jffs2_sb_info
*c);
89
extern
void
jffs2_release_xattr_datum(
struct
jffs2_sb_info
*c,
struct
jffs2_xattr_datum
*xd);
90
extern
void
jffs2_release_xattr_ref(
struct
jffs2_sb_info
*c,
struct
jffs2_xattr_ref
*ref);
91
92
extern
int
do_jffs2_getxattr(
struct
inode *inode,
int
xprefix,
const
char
*xname,
93
char
*buffer,
size_t
size);
94
extern
int
do_jffs2_setxattr(
struct
inode *inode,
int
xprefix,
const
char
*xname,
95
const
char
*buffer,
size_t
size,
int
flags);
96
97
extern
const
struct
xattr_handler *jffs2_xattr_handlers[];
98
extern
const
struct
xattr_handler jffs2_user_xattr_handler;
99
extern
const
struct
xattr_handler jffs2_trusted_xattr_handler;
100
101
extern
ssize_t jffs2_listxattr(
struct
dentry *,
char
*,
size_t
);
102
103
#else
104
105
#define jffs2_init_xattr_subsystem(c)
106
#define jffs2_build_xattr_subsystem(c)
107
#define jffs2_clear_xattr_subsystem(c)
108
109
#define jffs2_xattr_do_crccheck_inode(c, ic)
110
#define jffs2_xattr_delete_inode(c, ic)
111
#define jffs2_xattr_free_inode(c, ic)
112
#define jffs2_verify_xattr(c) (1)
113
114
#define jffs2_xattr_handlers NULL
115
#define jffs2_listxattr NULL
116
117
#endif
/* CONFIG_JFFS2_FS_XATTR */
118
119
#ifdef CONFIG_JFFS2_FS_SECURITY
120
extern
int
jffs2_init_security(
struct
inode *inode,
struct
inode *dir,
121
const
struct
qstr
*
qstr
);
122
extern
const
struct
xattr_handler jffs2_security_xattr_handler;
123
#else
124
#define jffs2_init_security(inode,dir,qstr) (0)
125
#endif
/* CONFIG_JFFS2_FS_SECURITY */
126
127
#endif
/* _JFFS2_FS_XATTR_H_ */
jffs2_inode_cache
Definition
nodelist.h:158
jffs2_raw_node_ref
Definition
nodelist.h:83
jffs2_sb_info
Definition
jffs2_fs_sb.h:51
jffs2_xattr_datum
Definition
xattr.h:24
jffs2_xattr_ref
Definition
xattr.h:46
list_head
Definition
list.h:57
qstr
Definition
types.h:23
Generated by
1.18.0