4 struct smfs_inode_info {
5 struct inode *smi_inode;
8 struct smfs_super_info {
9 struct super_block *smsi_sb;
10 struct vfsmount *smsi_mnt; /* mount the cache kere with kern_do_mount (like MDS) */
14 #define I2SMI(inode) ((struct smfs_inode_info *) (&(inode->u.generic_ip)))
15 #define S2SMI(sb) ((struct smfs_super_info *) (&(sb->u.generic_sbp)))
16 #define S2CSB(sb) (((struct smfs_super_info *) (&(sb->u.generic_sbp)))->smsi_sb)
17 #define I2CI(inode) (((struct smfs_inode_info*) (&(inode->u.generic_ip)))->smi_inode)
19 #define SB_OPS_CHECK 0x1
20 #define INODE_OPS_CHECK 0x2
21 #define FILE_OPS_CHECK 0x4
22 #define DENTRY_OPS_CHECK 0x8
23 #define DEV_OPS_CHECK 0x10
24 #define SYMLINK_OPS_CHECK 0x20
25 #define DIR_OPS_CHECK 0x40
27 #include "smfs_support.h"
29 /* operations on the file store */
30 struct super_operations sm_sb_ops;
32 struct inode_operations sm_dir_iops;
33 struct inode_operations sm_file_iops;
34 struct inode_operations sm_sym_iops;
36 struct file_operations sm_dir_fops;
37 struct file_operations sm_file_fops;
38 struct file_operations sm_sym_fops;
40 struct dentry_operations sm_dentry_ops;
46 struct list_head list;
49 extern int init_smfs_proc_sys(void);
51 extern int get_opt(struct option **option, char **pos);
52 extern void cleanup_option(void);
53 extern int init_option(char *data);
55 void sm_set_inode_ops(struct inode *cache_inode, struct inode *inode);
56 void sm_set_sb_ops(struct super_block *cache_sb, struct super_block *sb);
57 void init_smfs_cache(void);
58 void cleanup_smfs_cache(void);
60 extern int init_smfs(void);
61 extern int cleanup_smfs(void);
62 extern void smfs_put_super(struct super_block *sb);
63 extern void duplicate_sb(struct super_block *csb, struct super_block *sb);
65 extern int sm_debug_level;
67 extern long sm_kmemory;
70 extern struct inode_operations smfs_dir_iops;
71 extern struct file_operations smfs_dir_fops;
73 extern void d_unalloc(struct dentry *dentry);
75 extern void duplicate_inode(struct inode *cache_inode, struct inode *inode);
77 extern void smfs_prepare_cachefile(struct inode *inode,
79 struct inode *cache_inode,
80 struct file *cache_file,
81 struct dentry *cache_dentry);
82 extern int smfs_ioctl(struct inode * inode, struct file * filp, unsigned int cmd,
84 extern int smfs_fsync(struct file * file, struct dentry *dentry, int datasync);
85 extern int smfs_setattr(struct dentry *dentry, struct iattr *attr);
86 extern int smfs_setxattr(struct dentry *dentry, const char *name,
87 const void *value, size_t size, int flags);
88 extern int smfs_getxattr(struct dentry *dentry, const char *name,
89 void *buffer, size_t size);
90 extern ssize_t smfs_listxattr(struct dentry *dentry, char *buffer, size_t size);
91 extern int smfs_removexattr(struct dentry *dentry, const char *name);
92 extern void smfs_update_file(struct file *file, struct file *cache_file);
93 #endif /* __LINUX_SMFS_H */