Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.13 137 lines 4.1 kB view raw
1/* 2 File: linux/reiserfs_xattr.h 3*/ 4 5#include <linux/config.h> 6#include <linux/init.h> 7#include <linux/xattr.h> 8 9/* Magic value in header */ 10#define REISERFS_XATTR_MAGIC 0x52465841 /* "RFXA" */ 11 12struct reiserfs_xattr_header { 13 __le32 h_magic; /* magic number for identification */ 14 __le32 h_hash; /* hash of the value */ 15}; 16 17#ifdef __KERNEL__ 18 19struct reiserfs_xattr_handler { 20 char *prefix; 21 int (*init) (void); 22 void (*exit) (void); 23 int (*get) (struct inode * inode, const char *name, void *buffer, 24 size_t size); 25 int (*set) (struct inode * inode, const char *name, const void *buffer, 26 size_t size, int flags); 27 int (*del) (struct inode * inode, const char *name); 28 int (*list) (struct inode * inode, const char *name, int namelen, 29 char *out); 30 struct list_head handlers; 31}; 32 33#ifdef CONFIG_REISERFS_FS_XATTR 34#define is_reiserfs_priv_object(inode) IS_PRIVATE(inode) 35#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) 36ssize_t reiserfs_getxattr(struct dentry *dentry, const char *name, 37 void *buffer, size_t size); 38int reiserfs_setxattr(struct dentry *dentry, const char *name, 39 const void *value, size_t size, int flags); 40ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size); 41int reiserfs_removexattr(struct dentry *dentry, const char *name); 42int reiserfs_delete_xattrs(struct inode *inode); 43int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); 44int reiserfs_xattr_init(struct super_block *sb, int mount_flags); 45int reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd); 46int reiserfs_permission_locked(struct inode *inode, int mask, 47 struct nameidata *nd); 48 49int reiserfs_xattr_del(struct inode *, const char *); 50int reiserfs_xattr_get(const struct inode *, const char *, void *, size_t); 51int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int); 52 53extern struct reiserfs_xattr_handler user_handler; 54extern struct reiserfs_xattr_handler trusted_handler; 55#ifdef CONFIG_REISERFS_FS_SECURITY 56extern struct reiserfs_xattr_handler security_handler; 57#endif 58 59int reiserfs_xattr_register_handlers(void) __init; 60void reiserfs_xattr_unregister_handlers(void); 61 62static inline void reiserfs_write_lock_xattrs(struct super_block *sb) 63{ 64 down_write(&REISERFS_XATTR_DIR_SEM(sb)); 65} 66static inline void reiserfs_write_unlock_xattrs(struct super_block *sb) 67{ 68 up_write(&REISERFS_XATTR_DIR_SEM(sb)); 69} 70static inline void reiserfs_read_lock_xattrs(struct super_block *sb) 71{ 72 down_read(&REISERFS_XATTR_DIR_SEM(sb)); 73} 74 75static inline void reiserfs_read_unlock_xattrs(struct super_block *sb) 76{ 77 up_read(&REISERFS_XATTR_DIR_SEM(sb)); 78} 79 80static inline void reiserfs_write_lock_xattr_i(struct inode *inode) 81{ 82 down_write(&REISERFS_I(inode)->xattr_sem); 83} 84static inline void reiserfs_write_unlock_xattr_i(struct inode *inode) 85{ 86 up_write(&REISERFS_I(inode)->xattr_sem); 87} 88static inline void reiserfs_read_lock_xattr_i(struct inode *inode) 89{ 90 down_read(&REISERFS_I(inode)->xattr_sem); 91} 92 93static inline void reiserfs_read_unlock_xattr_i(struct inode *inode) 94{ 95 up_read(&REISERFS_I(inode)->xattr_sem); 96} 97 98static inline void reiserfs_mark_inode_private(struct inode *inode) 99{ 100 inode->i_flags |= S_PRIVATE; 101} 102 103#else 104 105#define is_reiserfs_priv_object(inode) 0 106#define reiserfs_mark_inode_private(inode) 107#define reiserfs_getxattr NULL 108#define reiserfs_setxattr NULL 109#define reiserfs_listxattr NULL 110#define reiserfs_removexattr NULL 111#define reiserfs_write_lock_xattrs(sb) 112#define reiserfs_write_unlock_xattrs(sb) 113#define reiserfs_read_lock_xattrs(sb) 114#define reiserfs_read_unlock_xattrs(sb) 115 116#define reiserfs_permission NULL 117 118#define reiserfs_xattr_register_handlers() 0 119#define reiserfs_xattr_unregister_handlers() 120 121static inline int reiserfs_delete_xattrs(struct inode *inode) 122{ 123 return 0; 124}; 125static inline int reiserfs_chown_xattrs(struct inode *inode, 126 struct iattr *attrs) 127{ 128 return 0; 129}; 130static inline int reiserfs_xattr_init(struct super_block *sb, int mount_flags) 131{ 132 sb->s_flags = (sb->s_flags & ~MS_POSIXACL); /* to be sure */ 133 return 0; 134}; 135#endif 136 137#endif /* __KERNEL__ */