linux/include/linux/reiserfs_xattr.h
<<
>>
Prefs
   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
  18#ifdef __KERNEL__
  19
  20#include <linux/init.h>
  21#include <linux/list.h>
  22#include <linux/rwsem.h>
  23#include <linux/reiserfs_fs_i.h>
  24#include <linux/reiserfs_fs.h>
  25
  26struct inode;
  27struct dentry;
  28struct iattr;
  29struct super_block;
  30struct nameidata;
  31
  32struct reiserfs_xattr_handler {
  33        char *prefix;
  34        int (*init) (void);
  35        void (*exit) (void);
  36        int (*get) (struct inode * inode, const char *name, void *buffer,
  37                    size_t size);
  38        int (*set) (struct inode * inode, const char *name, const void *buffer,
  39                    size_t size, int flags);
  40        int (*del) (struct inode * inode, const char *name);
  41        int (*list) (struct inode * inode, const char *name, int namelen,
  42                     char *out);
  43        struct list_head handlers;
  44};
  45
  46#ifdef CONFIG_REISERFS_FS_XATTR
  47#define is_reiserfs_priv_object(inode) IS_PRIVATE(inode)
  48#define has_xattr_dir(inode) (REISERFS_I(inode)->i_flags & i_has_xattr_dir)
  49ssize_t reiserfs_getxattr(struct dentry *dentry, const char *name,
  50                          void *buffer, size_t size);
  51int reiserfs_setxattr(struct dentry *dentry, const char *name,
  52                      const void *value, size_t size, int flags);
  53ssize_t reiserfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
  54int reiserfs_removexattr(struct dentry *dentry, const char *name);
  55int reiserfs_delete_xattrs(struct inode *inode);
  56int reiserfs_chown_xattrs(struct inode *inode, struct iattr *attrs);
  57int reiserfs_xattr_init(struct super_block *sb, int mount_flags);
  58int reiserfs_permission(struct inode *inode, int mask, struct nameidata *nd);
  59
  60int reiserfs_xattr_del(struct inode *, const char *);
  61int reiserfs_xattr_get(const struct inode *, const char *, void *, size_t);
  62int reiserfs_xattr_set(struct inode *, const char *, const void *, size_t, int);
  63
  64extern struct reiserfs_xattr_handler user_handler;
  65extern struct reiserfs_xattr_handler trusted_handler;
  66extern struct reiserfs_xattr_handler security_handler;
  67
  68int reiserfs_xattr_register_handlers(void) __init;
  69void reiserfs_xattr_unregister_handlers(void);
  70
  71static inline void reiserfs_write_lock_xattrs(struct super_block *sb)
  72{
  73        down_write(&REISERFS_XATTR_DIR_SEM(sb));
  74}
  75static inline void reiserfs_write_unlock_xattrs(struct super_block *sb)
  76{
  77        up_write(&REISERFS_XATTR_DIR_SEM(sb));
  78}
  79static inline void reiserfs_read_lock_xattrs(struct super_block *sb)
  80{
  81        down_read(&REISERFS_XATTR_DIR_SEM(sb));
  82}
  83
  84static inline void reiserfs_read_unlock_xattrs(struct super_block *sb)
  85{
  86        up_read(&REISERFS_XATTR_DIR_SEM(sb));
  87}
  88
  89static inline void reiserfs_write_lock_xattr_i(struct inode *inode)
  90{
  91        down_write(&REISERFS_I(inode)->xattr_sem);
  92}
  93static inline void reiserfs_write_unlock_xattr_i(struct inode *inode)
  94{
  95        up_write(&REISERFS_I(inode)->xattr_sem);
  96}
  97static inline void reiserfs_read_lock_xattr_i(struct inode *inode)
  98{
  99        down_read(&REISERFS_I(inode)->xattr_sem);
 100}
 101
 102static inline void reiserfs_read_unlock_xattr_i(struct inode *inode)
 103{
 104        up_read(&REISERFS_I(inode)->xattr_sem);
 105}
 106
 107static inline void reiserfs_mark_inode_private(struct inode *inode)
 108{
 109        inode->i_flags |= S_PRIVATE;
 110}
 111
 112static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
 113{
 114        init_rwsem(&REISERFS_I(inode)->xattr_sem);
 115}
 116
 117#else
 118
 119#define is_reiserfs_priv_object(inode) 0
 120#define reiserfs_mark_inode_private(inode) do {;} while(0)
 121#define reiserfs_getxattr NULL
 122#define reiserfs_setxattr NULL
 123#define reiserfs_listxattr NULL
 124#define reiserfs_removexattr NULL
 125#define reiserfs_write_lock_xattrs(sb) do {;} while(0)
 126#define reiserfs_write_unlock_xattrs(sb) do {;} while(0)
 127#define reiserfs_read_lock_xattrs(sb)
 128#define reiserfs_read_unlock_xattrs(sb)
 129
 130#define reiserfs_permission NULL
 131
 132#define reiserfs_xattr_register_handlers() 0
 133#define reiserfs_xattr_unregister_handlers()
 134
 135static inline int reiserfs_delete_xattrs(struct inode *inode)
 136{
 137        return 0;
 138};
 139static inline int reiserfs_chown_xattrs(struct inode *inode,
 140                                        struct iattr *attrs)
 141{
 142        return 0;
 143};
 144static inline int reiserfs_xattr_init(struct super_block *sb, int mount_flags)
 145{
 146        sb->s_flags = (sb->s_flags & ~MS_POSIXACL);     /* to be sure */
 147        return 0;
 148};
 149static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
 150{
 151}
 152#endif  /*  CONFIG_REISERFS_FS_XATTR  */
 153
 154#endif  /*  __KERNEL__  */
 155
 156#endif  /*  _LINUX_REISERFS_XATTR_H  */
 157
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.