X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=fs%2Fext4%2Fxattr.h;h=d7f5d6a126511e7f65c63793512732d6e31813bb;hb=46015977e70f672ae6b20a1b5fb1e361208365ba;hp=6b1ae1c6182c04bf43173a941b422b9f93d29335;hpb=ac27a0ec112a089f1a5102bc8dffc79c8c815571;p=linux-2.6 diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h index 6b1ae1c618..d7f5d6a126 100644 --- a/fs/ext4/xattr.h +++ b/fs/ext4/xattr.h @@ -1,7 +1,7 @@ /* - File: fs/ext3/xattr.h + File: fs/ext4/xattr.h - On-disk format of extended attributes for the ext3 filesystem. + On-disk format of extended attributes for the ext4 filesystem. (C) 2001 Andreas Gruenbacher, */ @@ -9,20 +9,20 @@ #include /* Magic value in attribute blocks */ -#define EXT3_XATTR_MAGIC 0xEA020000 +#define EXT4_XATTR_MAGIC 0xEA020000 /* Maximum number of references to one attribute block */ -#define EXT3_XATTR_REFCOUNT_MAX 1024 +#define EXT4_XATTR_REFCOUNT_MAX 1024 /* Name indexes */ -#define EXT3_XATTR_INDEX_USER 1 -#define EXT3_XATTR_INDEX_POSIX_ACL_ACCESS 2 -#define EXT3_XATTR_INDEX_POSIX_ACL_DEFAULT 3 -#define EXT3_XATTR_INDEX_TRUSTED 4 -#define EXT3_XATTR_INDEX_LUSTRE 5 -#define EXT3_XATTR_INDEX_SECURITY 6 - -struct ext3_xattr_header { +#define EXT4_XATTR_INDEX_USER 1 +#define EXT4_XATTR_INDEX_POSIX_ACL_ACCESS 2 +#define EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT 3 +#define EXT4_XATTR_INDEX_TRUSTED 4 +#define EXT4_XATTR_INDEX_LUSTRE 5 +#define EXT4_XATTR_INDEX_SECURITY 6 + +struct ext4_xattr_header { __le32 h_magic; /* magic number for identification */ __le32 h_refcount; /* reference count */ __le32 h_blocks; /* number of disk blocks used */ @@ -30,11 +30,11 @@ struct ext3_xattr_header { __u32 h_reserved[4]; /* zero right now */ }; -struct ext3_xattr_ibody_header { +struct ext4_xattr_ibody_header { __le32 h_magic; /* magic number for identification */ }; -struct ext3_xattr_entry { +struct ext4_xattr_entry { __u8 e_name_len; /* length of name */ __u8 e_name_index; /* attribute name index */ __le16 e_value_offs; /* offset in disk block of value */ @@ -44,100 +44,117 @@ struct ext3_xattr_entry { char e_name[0]; /* attribute name */ }; -#define EXT3_XATTR_PAD_BITS 2 -#define EXT3_XATTR_PAD (1<e_name_len)) ) -#define EXT3_XATTR_SIZE(size) \ - (((size) + EXT3_XATTR_ROUND) & ~EXT3_XATTR_ROUND) +#define EXT4_XATTR_PAD_BITS 2 +#define EXT4_XATTR_PAD (1<e_name_len)) ) +#define EXT4_XATTR_SIZE(size) \ + (((size) + EXT4_XATTR_ROUND) & ~EXT4_XATTR_ROUND) -# ifdef CONFIG_EXT3_FS_XATTR +#define IHDR(inode, raw_inode) \ + ((struct ext4_xattr_ibody_header *) \ + ((void *)raw_inode + \ + EXT4_GOOD_OLD_INODE_SIZE + \ + EXT4_I(inode)->i_extra_isize)) +#define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1)) -extern struct xattr_handler ext3_xattr_user_handler; -extern struct xattr_handler ext3_xattr_trusted_handler; -extern struct xattr_handler ext3_xattr_acl_access_handler; -extern struct xattr_handler ext3_xattr_acl_default_handler; -extern struct xattr_handler ext3_xattr_security_handler; +# ifdef CONFIG_EXT4DEV_FS_XATTR -extern ssize_t ext3_listxattr(struct dentry *, char *, size_t); +extern struct xattr_handler ext4_xattr_user_handler; +extern struct xattr_handler ext4_xattr_trusted_handler; +extern struct xattr_handler ext4_xattr_acl_access_handler; +extern struct xattr_handler ext4_xattr_acl_default_handler; +extern struct xattr_handler ext4_xattr_security_handler; -extern int ext3_xattr_get(struct inode *, int, const char *, void *, size_t); -extern int ext3_xattr_list(struct inode *, char *, size_t); -extern int ext3_xattr_set(struct inode *, int, const char *, const void *, size_t, int); -extern int ext3_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int); +extern ssize_t ext4_listxattr(struct dentry *, char *, size_t); -extern void ext3_xattr_delete_inode(handle_t *, struct inode *); -extern void ext3_xattr_put_super(struct super_block *); +extern int ext4_xattr_get(struct inode *, int, const char *, void *, size_t); +extern int ext4_xattr_list(struct inode *, char *, size_t); +extern int ext4_xattr_set(struct inode *, int, const char *, const void *, size_t, int); +extern int ext4_xattr_set_handle(handle_t *, struct inode *, int, const char *, const void *, size_t, int); -extern int init_ext3_xattr(void); -extern void exit_ext3_xattr(void); +extern void ext4_xattr_delete_inode(handle_t *, struct inode *); +extern void ext4_xattr_put_super(struct super_block *); -extern struct xattr_handler *ext3_xattr_handlers[]; +extern int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, + struct ext4_inode *raw_inode, handle_t *handle); -# else /* CONFIG_EXT3_FS_XATTR */ +extern int init_ext4_xattr(void); +extern void exit_ext4_xattr(void); + +extern struct xattr_handler *ext4_xattr_handlers[]; + +# else /* CONFIG_EXT4DEV_FS_XATTR */ static inline int -ext3_xattr_get(struct inode *inode, int name_index, const char *name, +ext4_xattr_get(struct inode *inode, int name_index, const char *name, void *buffer, size_t size, int flags) { return -EOPNOTSUPP; } static inline int -ext3_xattr_list(struct inode *inode, void *buffer, size_t size) +ext4_xattr_list(struct inode *inode, void *buffer, size_t size) { return -EOPNOTSUPP; } static inline int -ext3_xattr_set(struct inode *inode, int name_index, const char *name, +ext4_xattr_set(struct inode *inode, int name_index, const char *name, const void *value, size_t size, int flags) { return -EOPNOTSUPP; } static inline int -ext3_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, +ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, const char *name, const void *value, size_t size, int flags) { return -EOPNOTSUPP; } static inline void -ext3_xattr_delete_inode(handle_t *handle, struct inode *inode) +ext4_xattr_delete_inode(handle_t *handle, struct inode *inode) { } static inline void -ext3_xattr_put_super(struct super_block *sb) +ext4_xattr_put_super(struct super_block *sb) { } static inline int -init_ext3_xattr(void) +init_ext4_xattr(void) { return 0; } static inline void -exit_ext3_xattr(void) +exit_ext4_xattr(void) { } -#define ext3_xattr_handlers NULL +static inline int +ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize, + struct ext4_inode *raw_inode, handle_t *handle) +{ + return -EOPNOTSUPP; +} + +#define ext4_xattr_handlers NULL -# endif /* CONFIG_EXT3_FS_XATTR */ +# endif /* CONFIG_EXT4DEV_FS_XATTR */ -#ifdef CONFIG_EXT3_FS_SECURITY -extern int ext3_init_security(handle_t *handle, struct inode *inode, +#ifdef CONFIG_EXT4DEV_FS_SECURITY +extern int ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir); #else -static inline int ext3_init_security(handle_t *handle, struct inode *inode, +static inline int ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir) { return 0;