Whamcloud - gitweb
- tagging RC_CURRENT
[fs/lustre-release.git] / lustre / smfs / kml.c
1 /*
2  *  smfs/kml.c
3  *
4  */
5
6 #define DEBUG_SUBSYSTEM S_SM
7
8 #include <linux/kmod.h>
9 #include <linux/init.h>
10 #include <linux/fs.h>
11 #include <linux/slab.h>
12 #include <linux/lustre_idl.h>
13 #include "smfs_internal.h" 
14 #include "kml_idl.h"
15
16 /*FIXME there should be more conditions in this check*/
17 int smfs_do_kml(struct inode *dir)
18 {
19         struct smfs_super_info  *smfs_info = S2SMI(dir->i_sb);  
20                 
21         if (smfs_info->flags & SM_DO_KML) {
22                 return 1;
23         }
24         return 0;
25 }
26 void smfs_getversion(struct smfs_version * smfs_version,
27                            struct inode * inode) 
28 {
29         smfs_version->sm_mtime = (__u64)inode->i_mtime;
30         smfs_version->sm_ctime = (__u64)inode->i_ctime;
31         smfs_version->sm_size  = (__u64)inode->i_size;
32 }
33
34 int smfs_kml_init(struct super_block *sb)
35 {
36         struct smfs_super_info  *smfs_info = S2SMI(sb); 
37         int    rc = 0;
38         smfs_info->flags |= SM_DO_KML;
39
40         rc = smfs_llog_setup(&smfs_info->kml_llog);                     
41
42         RETURN(rc);
43 }
44
45 int post_kml_mkdir(struct inode *dir, struct dentry *dentry)
46 {
47         struct smfs_version tgt_dir_ver, new_dir_ver;
48         int    error;
49
50         smfs_getversion(&tgt_dir_ver, dir);     
51
52         smfs_getversion(&new_dir_ver, dentry->d_inode);         
53         
54         error = smfs_journal_mkdir(dentry, &tgt_dir_ver,
55                                    &new_dir_ver,
56                                    dentry->d_inode->i_mode);
57         return error;                                                                                                                                                                                                        
58 }
59