Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.30-rc6 147 lines 4.5 kB view raw
1/* 2 File: linux/reiserfs_xattr.h 3*/ 4 5#ifndef _LINUX_REISERFS_XATTR_H 6#define _LINUX_REISERFS_XATTR_H 7 8#include <linux/types.h> 9 10/* Magic value in header */ 11#define REISERFS_XATTR_MAGIC 0x52465841 /* "RFXA" */ 12 13struct reiserfs_xattr_header { 14 __le32 h_magic; /* magic number for identification */ 15 __le32 h_hash; /* hash of the value */ 16}; 17 18struct reiserfs_security_handle { 19 char *name; 20 void *value; 21 size_t length; 22}; 23 24#ifdef __KERNEL__ 25 26#include <linux/init.h> 27#include <linux/list.h> 28#include <linux/rwsem.h> 29#include <linux/reiserfs_fs_i.h> 30#include <linux/reiserfs_fs.h> 31 32struct inode; 33struct dentry; 34struct iattr; 35struct super_block; 36struct nameidata; 37 38int reiserfs_xattr_register_handlers(void) __init; 39void reiserfs_xattr_unregister_handlers(void); 40int reiserfs_xattr_init(struct super_block *sb, int mount_flags); 41int reiserfs_lookup_privroot(struct super_block *sb); 42int reiserfs_delete_xattrs(struct inode *inode); 43int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs); 44 45#ifdef CONFIG_REISERFS_FS_XATTR 46#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir) 47ssize_t reiserfs_getxattr(struct dentry *dentry, const char *name, 48 void *buffer, size_t size); 49int reiserfs_setxattr(struct dentry *dentry, const char *name, 50 const void *value, size_t size, int flags); 51ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size); 52int reiserfs_removexattr(struct dentry *dentry, const char *name); 53int reiserfs_permission(struct inode *inode, int mask); 54 55int reiserfs_xattr_get(struct inode *, const char *, void *, size_t); 56int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int); 57int reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *, 58 struct inode *, const char *, const void *, 59 size_t, int); 60 61extern struct xattr_handler reiserfs_xattr_user_handler; 62extern struct xattr_handler reiserfs_xattr_trusted_handler; 63extern struct xattr_handler reiserfs_xattr_security_handler; 64#ifdef CONFIG_REISERFS_FS_SECURITY 65int reiserfs_security_init(struct inode *dir, struct inode *inode, 66 struct reiserfs_security_handle *sec); 67int reiserfs_security_write(struct reiserfs_transaction_handle *th, 68 struct inode *inode, 69 struct reiserfs_security_handle *sec); 70void reiserfs_security_free(struct reiserfs_security_handle *sec); 71#endif 72 73#define xattr_size(size) ((size) + sizeof(struct reiserfs_xattr_header)) 74static inline loff_t reiserfs_xattr_nblocks(struct inode *inode, loff_t size) 75{ 76 loff_t ret = 0; 77 if (reiserfs_file_data_log(inode)) { 78 ret = _ROUND_UP(xattr_size(size), inode->i_sb->s_blocksize); 79 ret >>= inode->i_sb->s_blocksize_bits; 80 } 81 return ret; 82} 83 84/* We may have to create up to 3 objects: xattr root, xattr dir, xattr file. 85 * Let's try to be smart about it. 86 * xattr root: We cache it. If it's not cached, we may need to create it. 87 * xattr dir: If anything has been loaded for this inode, we can set a flag 88 * saying so. 89 * xattr file: Since we don't cache xattrs, we can't tell. We always include 90 * blocks for it. 91 * 92 * However, since root and dir can be created between calls - YOU MUST SAVE 93 * THIS VALUE. 94 */ 95static inline size_t reiserfs_xattr_jcreate_nblocks(struct inode *inode) 96{ 97 size_t nblocks = JOURNAL_BLOCKS_PER_OBJECT(inode->i_sb); 98 99 if ((REISERFS_I(inode)->i_flags & i_has_xattr_dir) == 0) { 100 nblocks += JOURNAL_BLOCKS_PER_OBJECT(inode->i_sb); 101 if (!REISERFS_SB(inode->i_sb)->xattr_root->d_inode) 102 nblocks += JOURNAL_BLOCKS_PER_OBJECT(inode->i_sb); 103 } 104 105 return nblocks; 106} 107 108static inline void reiserfs_init_xattr_rwsem(struct inode *inode) 109{ 110 init_rwsem(&REISERFS_I(inode)->i_xattr_sem); 111} 112 113#else 114 115#define reiserfs_getxattr NULL 116#define reiserfs_setxattr NULL 117#define reiserfs_listxattr NULL 118#define reiserfs_removexattr NULL 119 120#define reiserfs_permission NULL 121 122static inline void reiserfs_init_xattr_rwsem(struct inode *inode) 123{ 124} 125#endif /* CONFIG_REISERFS_FS_XATTR */ 126 127#ifndef CONFIG_REISERFS_FS_SECURITY 128static inline int reiserfs_security_init(struct inode *dir, 129 struct inode *inode, 130 struct reiserfs_security_handle *sec) 131{ 132 return 0; 133} 134static inline int 135reiserfs_security_write(struct reiserfs_transaction_handle *th, 136 struct inode *inode, 137 struct reiserfs_security_handle *sec) 138{ 139 return 0; 140} 141static inline void reiserfs_security_free(struct reiserfs_security_handle *sec) 142{} 143#endif 144 145#endif /* __KERNEL__ */ 146 147#endif /* _LINUX_REISERFS_XATTR_H */