extern int cleanup_smfs(void);
extern void smfs_put_super(struct super_block *sb);
extern struct super_block *smfs_get_sb_by_path(char *path, int len);
-extern struct vfsmount* get_vfsmount(struct super_block *sb);
/*sysctl.c*/
extern int sm_debug_level;
extern int sm_inodes;
extern void smfs_cleanup_psdev(void);
/*smfs_cow.c */
-extern int smfs_cow_init(struct super_block *sb);
/* cache_space.c */
extern int do_cache_manage;
struct cache_purge_queue {
#define CACHE_HOOK_MAX 9
-#define SMFS_CACHE_HOOK_PRE(op, handle, dir) \
-{ \
- if (smfs_cache_hook(dir)) { \
- LASSERT(handle != NULL); \
- CDEBUG(D_INODE, "cache hook pre: op %d, dir %lu\n", \
- op, dir->i_ino); \
- cache_space_pre(dir, op); \
- } \
+#define SMFS_CACHE_HOOK_PRE(op, handle, dir, rc) \
+{ \
+ while (smfs_cache_hook(dir)) { \
+ if (!handle) { \
+ handle = smfs_trans_start(dir, KML_CACHE_NOOP, NULL); \
+ if (IS_ERR(handle)) { \
+ rc = -ENOSPC; \
+ break; \
+ } \
+ } \
+ CDEBUG(D_INODE, "cache hook pre: op %d, dir %lu\n", \
+ op, dir->i_ino); \
+ cache_space_pre(dir, op); \
+ break; \
+ } \
}
#define SMFS_CACHE_HOOK_POST(op, handle, old_dir, old_dentry, \
GOTO(label, rc); \
} \
}
-#if CONFIG_SNAP
+#if CONFIG_SNAPFS
/*snap macros*/
-#define SMFS_PRE_COW(dir, dentry, op, name, rc, label) \
-do { \
- if (smfs_do_cow(dir) && !rc) { \
- CDEBUG(D_INODE, "Do %s snap post for dir %lu \n", \
- name, dir->i_ino); \
- rc = smfs_cow(dir, dentry, op); \
- if (rc) \
- GOTO(label, rc); \
- } \
+#define SMFS_PRE_COW(dir, dentry, new_dir, new_dentry, op, name, rc, label) \
+do { \
+ if (smfs_do_cow(dir) && !rc) { \
+ CDEBUG(D_INODE, "Do %s snap post for dir %lu \n", \
+ name, dir->i_ino); \
+ rc = smfs_cow(dir, dentry, new_dir, new_dentry, op); \
+ if (rc) \
+ GOTO(label, rc); \
+ } \
} while(0)
+
+extern int smfs_cow_init(struct super_block *sb);
+extern int smfs_cow_cleanup(struct super_block *sb);
+extern int smfs_init_snap_inode_info(struct inode *inode, int flags);
#else
-#define SMFS_PRE_COW(dir, dentry, op, name, rc, label)
+#define SMFS_PRE_COW(dir, dentry, new_dir, new_dentry, op, name, rc, label)
#endif
#endif /*__KERNEL*/