1 /* SMFS plugin stuff */
2 #define SMFS_PLG_KML 0x0001L
3 #define SMFS_PLG_LRU 0x0004L
4 #define SMFS_PLG_COW 0x0020L
5 #define SMFS_PLG_UNDO 0x0100L
6 #define SMFS_PLG_DUMMY 0x1000L
7 #define SMFS_PLG_ALL (~0L)
9 #define SMFS_SET(flags, mask) (flags |= mask)
10 #define SMFS_IS(flags, mask) (flags & mask)
11 #define SMFS_CLEAR(flags, mask) (flags &= ~mask)
13 typedef int (*smfs_plg_hook)(int hook_code, struct inode *,
14 void *arg, int rc, void * priv);
15 typedef int (*smfs_plg_func)(int help_code, struct super_block *,
16 void *arg, void * priv);
19 struct list_head plg_list;
22 smfs_plg_hook plg_pre_op;
23 smfs_plg_hook plg_post_op;
24 smfs_plg_func plg_helper;
28 #define KML_LOG_NAME "smfs_kml"
31 /* llog pack function */
32 int (* pack_fn)(int, char *, struct dentry*,
33 struct inode *, void *, void *);
36 #define UNDO_LOG_NAME "smfs_undo"
38 struct llog_ctxt *undo_ctxt;
45 #define HOOK_SYMLINK 5
50 #define HOOK_SETATTR 10
52 #define HOOK_READDIR 12
53 #define HOOK_F_SETATTR 13
54 #define HOOK_SETXATTR 14
55 #define HOOK_F_SETXATTR 15
59 struct dentry * dentry;
63 struct hook_link_msg {
64 struct dentry * dentry;
65 struct dentry * new_dentry;
67 struct hook_unlink_msg {
68 struct dentry * dentry;
72 struct hook_symlink_msg {
73 struct dentry * dentry;
78 struct hook_rename_msg {
79 struct dentry * dentry;
80 struct inode * new_dir;
81 struct dentry * new_dentry;
84 struct hook_readdir_msg {
85 struct dentry * dentry;
91 struct hook_write_msg {
92 struct dentry * dentry;
97 struct hook_setattr_msg {
98 struct dentry * dentry;
102 struct hook_setxattr_msg {
103 struct inode * inode;
109 void smfs_pre_hook (struct inode*, int, void*);
110 void smfs_post_hook(struct inode*,int, void*, int);
112 #define SMFS_PRE_HOOK(inode, op, msg) smfs_pre_hook (inode, op, msg)
113 #define SMFS_POST_HOOK(inode, op, msg, rc) smfs_post_hook(inode, op, msg, rc)
116 #define PLG_TRANS_SIZE 1
117 #define PLG_TEST_INODE 2
118 #define PLG_SET_INODE 3
121 #define PLG_HELPER_MAX 6
128 int smfs_helper (struct super_block *, int, void *);
129 #define SMFS_PLG_HELP(sb, op, data) smfs_helper(sb, op, data)
131 int smfs_register_plugin(struct super_block *, struct smfs_plugin *);
132 struct smfs_plugin * smfs_deregister_plugin(struct super_block *, int);
134 int smfs_init_dummy(struct super_block *);
135 int smfs_init_kml(struct super_block *);
136 int smfs_init_lru(struct super_block *);
137 int smfs_init_cow(struct super_block *);