Whamcloud - gitweb
update smfs
[fs/lustre-release.git] / lustre / smfs / inode.c
1 /*
2  *  fs/snap/snap.c
3  *
4  *  A snap shot file system.
5  *
6  */
7
8 #define DEBUG_SUBSYSTEM S_SM
9
10 #include <linux/kmod.h>
11 #include <linux/init.h>
12 #include <linux/fs.h>
13 #include <linux/slab.h>
14 #include <linux/string.h>
15 #include "smfs_internal.h" 
16
17
18 static void smfs_read_inode(struct inode *inode)
19 {
20         struct super_block *cache_sb;
21         struct inode *cache_inode;      
22         ENTRY;
23
24         if (!inode) 
25                 return;
26         
27         CDEBUG(D_INODE, "read_inode ino %lu\n", inode->i_ino);
28         cache_sb = S2CSB(inode->i_sb);
29
30         cache_inode = new_inode(cache_sb);
31         I2CI(inode) = cache_inode;
32         
33         if(cache_sb && cache_sb->s_op->read_inode)
34                 cache_sb->s_op->read_inode(cache_inode);
35
36         CDEBUG(D_INODE, "read_inode ino %lu icount %d \n", 
37                inode->i_ino, atomic_read(&inode->i_count));
38
39         sm_set_inode_ops(cache_inode, inode);
40         
41         CDEBUG(D_INODE, "read_inode ino %lu icount %d \n", 
42                inode->i_ino, atomic_read(&inode->i_count));
43         
44         return; 
45 }
46 /* Although some filesystem(such as ext3) do not have
47  * clear_inode method, but we need it to free the 
48  * cache inode 
49  */
50 static void smfs_clear_inode(struct inode *inode)
51 {
52         struct super_block *cache_sb;
53         struct inode *cache_inode;      
54
55         ENTRY;
56         
57         if (!inode) return;
58         
59         cache_sb = S2CSB(inode->i_sb);
60         cache_inode = I2CI(inode);
61         clear_inode(cache_inode);
62         return; 
63 }
64
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,
69 };
70
71
72
73
74