diff options
author | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2010-08-25 04:45:44 -0400 |
---|---|---|
committer | Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> | 2010-10-22 20:24:34 -0400 |
commit | 4d8d9293dce503eb0e083e17a02a328d397e7f00 (patch) | |
tree | ffa2dce7f100b1346131adc01cf93e280b225509 /fs/nilfs2/nilfs.h | |
parent | ba65ae4729bf81c58d9fc847f67d57eec525b042 (diff) |
nilfs2: set pointer to root object in inodes
This puts a pointer to nilfs_root object in the private part of
on-memory inode, and makes nilfs_iget function pick up the inode with
the same root object.
Non-root inodes inherit its nilfs_root object from parent inode. That
of the root inode is allocated through nilfs_attach_checkpoint()
function.
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Diffstat (limited to 'fs/nilfs2/nilfs.h')
-rw-r--r-- | fs/nilfs2/nilfs.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h index 797cd437970..21d90c4b4e2 100644 --- a/fs/nilfs2/nilfs.h +++ b/fs/nilfs2/nilfs.h | |||
@@ -59,6 +59,7 @@ struct nilfs_inode_info { | |||
59 | #endif | 59 | #endif |
60 | struct buffer_head *i_bh; /* i_bh contains a new or dirty | 60 | struct buffer_head *i_bh; /* i_bh contains a new or dirty |
61 | disk inode */ | 61 | disk inode */ |
62 | struct nilfs_root *i_root; | ||
62 | struct inode vfs_inode; | 63 | struct inode vfs_inode; |
63 | }; | 64 | }; |
64 | 65 | ||
@@ -247,7 +248,8 @@ extern int nilfs_get_block(struct inode *, sector_t, struct buffer_head *, int); | |||
247 | extern void nilfs_set_inode_flags(struct inode *); | 248 | extern void nilfs_set_inode_flags(struct inode *); |
248 | extern int nilfs_read_inode_common(struct inode *, struct nilfs_inode *); | 249 | extern int nilfs_read_inode_common(struct inode *, struct nilfs_inode *); |
249 | extern void nilfs_write_inode_common(struct inode *, struct nilfs_inode *, int); | 250 | extern void nilfs_write_inode_common(struct inode *, struct nilfs_inode *, int); |
250 | extern struct inode *nilfs_iget(struct super_block *, unsigned long); | 251 | struct inode *nilfs_iget(struct super_block *sb, struct nilfs_root *root, |
252 | unsigned long ino); | ||
251 | extern struct inode *nilfs_iget_for_gc(struct super_block *sb, | 253 | extern struct inode *nilfs_iget_for_gc(struct super_block *sb, |
252 | unsigned long ino, __u64 cno); | 254 | unsigned long ino, __u64 cno); |
253 | extern void nilfs_update_inode(struct inode *, struct buffer_head *); | 255 | extern void nilfs_update_inode(struct inode *, struct buffer_head *); |
@@ -285,7 +287,8 @@ extern struct nilfs_super_block **nilfs_prepare_super(struct nilfs_sb_info *, | |||
285 | int flip); | 287 | int flip); |
286 | extern int nilfs_commit_super(struct nilfs_sb_info *, int); | 288 | extern int nilfs_commit_super(struct nilfs_sb_info *, int); |
287 | extern int nilfs_cleanup_super(struct nilfs_sb_info *); | 289 | extern int nilfs_cleanup_super(struct nilfs_sb_info *); |
288 | extern int nilfs_attach_checkpoint(struct nilfs_sb_info *, __u64); | 290 | int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno, int curr_mnt, |
291 | struct nilfs_root **root); | ||
289 | extern void nilfs_detach_checkpoint(struct nilfs_sb_info *); | 292 | extern void nilfs_detach_checkpoint(struct nilfs_sb_info *); |
290 | 293 | ||
291 | /* gcinode.c */ | 294 | /* gcinode.c */ |