4 * A snap shot file system.
8 #define DEBUG_SUBSYSTEM S_SM
10 #include <linux/kmod.h>
11 #include <linux/init.h>
13 #include <linux/slab.h>
14 #include <linux/string.h>
15 #include "smfs_internal.h"
18 static void smfs_read_inode(struct inode *inode)
20 struct super_block *cache_sb;
21 struct inode *cache_inode;
27 CDEBUG(D_INODE, "read_inode ino %lu\n", inode->i_ino);
28 cache_sb = S2CSB(inode->i_sb);
30 cache_inode = new_inode(cache_sb);
31 I2CI(inode) = cache_inode;
33 if(cache_sb && cache_sb->s_op->read_inode)
34 cache_sb->s_op->read_inode(cache_inode);
36 CDEBUG(D_INODE, "read_inode ino %lu icount %d \n",
37 inode->i_ino, atomic_read(&inode->i_count));
39 sm_set_inode_ops(cache_inode, inode);
41 CDEBUG(D_INODE, "read_inode ino %lu icount %d \n",
42 inode->i_ino, atomic_read(&inode->i_count));
46 /* Although some filesystem(such as ext3) do not have
47 * clear_inode method, but we need it to free the
50 static void smfs_clear_inode(struct inode *inode)
52 struct super_block *cache_sb;
53 struct inode *cache_inode;
59 cache_sb = S2CSB(inode->i_sb);
60 cache_inode = I2CI(inode);
61 clear_inode(cache_inode);
65 struct super_operations smfs_super_ops = {
66 read_inode: smfs_read_inode,
67 clear_inode: smfs_clear_inode,
68 put_super: smfs_put_super,