Commit 879b3825 authored by Tao Ma's avatar Tao Ma Committed by Theodore Ts'o

ext4: export inline xattr functions

The inline data feature will need some inline xattr functions, so
export them from fs/ext4/xattr.c so that inline.c can use them.
Signed-off-by: default avatarTao Ma <boyu.mt@taobao.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 152a7b0a
...@@ -61,11 +61,6 @@ ...@@ -61,11 +61,6 @@
#include "xattr.h" #include "xattr.h"
#include "acl.h" #include "acl.h"
#define BHDR(bh) ((struct ext4_xattr_header *)((bh)->b_data))
#define ENTRY(ptr) ((struct ext4_xattr_entry *)(ptr))
#define BFIRST(bh) ENTRY(BHDR(bh)+1)
#define IS_LAST_ENTRY(entry) (*(__u32 *)(entry) == 0)
#ifdef EXT4_XATTR_DEBUG #ifdef EXT4_XATTR_DEBUG
# define ea_idebug(inode, f...) do { \ # define ea_idebug(inode, f...) do { \
printk(KERN_DEBUG "inode %s:%lu: ", \ printk(KERN_DEBUG "inode %s:%lu: ", \
...@@ -312,7 +307,7 @@ ext4_xattr_block_get(struct inode *inode, int name_index, const char *name, ...@@ -312,7 +307,7 @@ ext4_xattr_block_get(struct inode *inode, int name_index, const char *name,
return error; return error;
} }
static int int
ext4_xattr_ibody_get(struct inode *inode, int name_index, const char *name, ext4_xattr_ibody_get(struct inode *inode, int name_index, const char *name,
void *buffer, size_t buffer_size) void *buffer, size_t buffer_size)
{ {
...@@ -581,21 +576,6 @@ static size_t ext4_xattr_free_space(struct ext4_xattr_entry *last, ...@@ -581,21 +576,6 @@ static size_t ext4_xattr_free_space(struct ext4_xattr_entry *last,
return (*min_offs - ((void *)last - base) - sizeof(__u32)); return (*min_offs - ((void *)last - base) - sizeof(__u32));
} }
struct ext4_xattr_info {
int name_index;
const char *name;
const void *value;
size_t value_len;
};
struct ext4_xattr_search {
struct ext4_xattr_entry *first;
void *base;
void *end;
struct ext4_xattr_entry *here;
int not_found;
};
static int static int
ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s) ext4_xattr_set_entry(struct ext4_xattr_info *i, struct ext4_xattr_search *s)
{ {
...@@ -949,14 +929,8 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode, ...@@ -949,14 +929,8 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode,
#undef header #undef header
} }
struct ext4_xattr_ibody_find { int ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
struct ext4_xattr_search s; struct ext4_xattr_ibody_find *is)
struct ext4_iloc iloc;
};
static int
ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is)
{ {
struct ext4_xattr_ibody_header *header; struct ext4_xattr_ibody_header *header;
struct ext4_inode *raw_inode; struct ext4_inode *raw_inode;
...@@ -984,10 +958,9 @@ ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i, ...@@ -984,10 +958,9 @@ ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
return 0; return 0;
} }
static int int ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
ext4_xattr_ibody_set(handle_t *handle, struct inode *inode, struct ext4_xattr_info *i,
struct ext4_xattr_info *i, struct ext4_xattr_ibody_find *is)
struct ext4_xattr_ibody_find *is)
{ {
struct ext4_xattr_ibody_header *header; struct ext4_xattr_ibody_header *header;
struct ext4_xattr_search *s = &is->s; struct ext4_xattr_search *s = &is->s;
......
...@@ -65,6 +65,32 @@ struct ext4_xattr_entry { ...@@ -65,6 +65,32 @@ struct ext4_xattr_entry {
EXT4_I(inode)->i_extra_isize)) EXT4_I(inode)->i_extra_isize))
#define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1)) #define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1))
#define BHDR(bh) ((struct ext4_xattr_header *)((bh)->b_data))
#define ENTRY(ptr) ((struct ext4_xattr_entry *)(ptr))
#define BFIRST(bh) ENTRY(BHDR(bh)+1)
#define IS_LAST_ENTRY(entry) (*(__u32 *)(entry) == 0)
struct ext4_xattr_info {
int name_index;
const char *name;
const void *value;
size_t value_len;
};
struct ext4_xattr_search {
struct ext4_xattr_entry *first;
void *base;
void *end;
struct ext4_xattr_entry *here;
int not_found;
};
struct ext4_xattr_ibody_find {
struct ext4_xattr_search s;
struct ext4_iloc iloc;
};
# ifdef CONFIG_EXT4_FS_XATTR # ifdef CONFIG_EXT4_FS_XATTR
extern const struct xattr_handler ext4_xattr_user_handler; extern const struct xattr_handler ext4_xattr_user_handler;
...@@ -90,6 +116,15 @@ extern void ext4_exit_xattr(void); ...@@ -90,6 +116,15 @@ extern void ext4_exit_xattr(void);
extern const struct xattr_handler *ext4_xattr_handlers[]; extern const struct xattr_handler *ext4_xattr_handlers[];
extern int ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is);
extern int ext4_xattr_ibody_get(struct inode *inode, int name_index,
const char *name,
void *buffer, size_t buffer_size);
extern int ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is);
# else /* CONFIG_EXT4_FS_XATTR */ # else /* CONFIG_EXT4_FS_XATTR */
static inline int static inline int
...@@ -143,6 +178,29 @@ ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, ...@@ -143,6 +178,29 @@ ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
#define ext4_xattr_handlers NULL #define ext4_xattr_handlers NULL
static inline int
ext4_xattr_ibody_find(struct inode *inode, struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is)
{
return -EOPNOTSUPP;
}
static inline int
ext4_xattr_ibody_set(handle_t *handle, struct inode *inode,
struct ext4_xattr_info *i,
struct ext4_xattr_ibody_find *is)
{
return -EOPNOTSUPP;
}
static inline int
ext4_xattr_ibody_get(struct inode *inode, int name_index,
const char *name,
void *buffer, size_t buffer_size)
{
return -EOPNOTSUPP;
}
# endif /* CONFIG_EXT4_FS_XATTR */ # endif /* CONFIG_EXT4_FS_XATTR */
#ifdef CONFIG_EXT4_FS_SECURITY #ifdef CONFIG_EXT4_FS_SECURITY
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment