Commit 8707df38478c8e0958b706f0ea1cdf99d00a9469

Authored by Ryusuke Konishi
1 parent 79739565e1

nilfs2: separate read method of meta data files on super root block

Will displace nilfs_mdt_read_inode_direct function with an individual
read method: nilfs_dat_read, nilfs_sufile_read, nilfs_cpfile_read.

This provides the opportunity to initialize local variables of each
metadata file after reading the inode.

Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>

Showing 7 changed files with 39 additions and 6 deletions Side-by-side Diff

... ... @@ -928,6 +928,16 @@
928 928 }
929 929  
930 930 /**
  931 + * nilfs_cpfile_read - read cpfile inode
  932 + * @cpfile: cpfile inode
  933 + * @raw_inode: on-disk cpfile inode
  934 + */
  935 +int nilfs_cpfile_read(struct inode *cpfile, struct nilfs_inode *raw_inode)
  936 +{
  937 + return nilfs_read_inode_common(cpfile, raw_inode);
  938 +}
  939 +
  940 +/**
931 941 * nilfs_cpfile_new - create cpfile
932 942 * @nilfs: nilfs object
933 943 * @cpsize: size of a checkpoint entry
... ... @@ -40,6 +40,7 @@
40 40 ssize_t nilfs_cpfile_get_cpinfo(struct inode *, __u64 *, int, void *, unsigned,
41 41 size_t);
42 42  
  43 +int nilfs_cpfile_read(struct inode *cpfile, struct nilfs_inode *raw_inode);
43 44 struct inode *nilfs_cpfile_new(struct the_nilfs *nilfs, size_t cpsize);
44 45  
45 46 #endif /* _NILFS_CPFILE_H */
... ... @@ -427,6 +427,16 @@
427 427 }
428 428  
429 429 /**
  430 + * nilfs_dat_read - read dat inode
  431 + * @dat: dat inode
  432 + * @raw_inode: on-disk dat inode
  433 + */
  434 +int nilfs_dat_read(struct inode *dat, struct nilfs_inode *raw_inode)
  435 +{
  436 + return nilfs_read_inode_common(dat, raw_inode);
  437 +}
  438 +
  439 +/**
430 440 * nilfs_dat_new - create dat file
431 441 * @nilfs: nilfs object
432 442 * @entry_size: size of a dat entry
... ... @@ -53,6 +53,7 @@
53 53 int nilfs_dat_move(struct inode *, __u64, sector_t);
54 54 ssize_t nilfs_dat_get_vinfo(struct inode *, void *, unsigned, size_t);
55 55  
  56 +int nilfs_dat_read(struct inode *dat, struct nilfs_inode *raw_inode);
56 57 struct inode *nilfs_dat_new(struct the_nilfs *nilfs, size_t entry_size);
57 58  
58 59 #endif /* _NILFS_DAT_H */
... ... @@ -659,6 +659,16 @@
659 659 }
660 660  
661 661 /**
  662 + * nilfs_sufile_read - read sufile inode
  663 + * @sufile: sufile inode
  664 + * @raw_inode: on-disk sufile inode
  665 + */
  666 +int nilfs_sufile_read(struct inode *sufile, struct nilfs_inode *raw_inode)
  667 +{
  668 + return nilfs_read_inode_common(sufile, raw_inode);
  669 +}
  670 +
  671 +/**
662 672 * nilfs_sufile_new - create sufile
663 673 * @nilfs: nilfs object
664 674 * @susize: size of a segment usage entry
... ... @@ -62,6 +62,7 @@
62 62 void nilfs_sufile_do_set_error(struct inode *, __u64, struct buffer_head *,
63 63 struct buffer_head *);
64 64  
  65 +int nilfs_sufile_read(struct inode *sufile, struct nilfs_inode *raw_inode);
65 66 struct inode *nilfs_sufile_new(struct the_nilfs *nilfs, size_t susize);
66 67  
67 68 /**
fs/nilfs2/the_nilfs.c
... ... @@ -204,18 +204,18 @@
204 204  
205 205 nilfs_mdt_set_shadow(nilfs->ns_dat, nilfs->ns_gc_dat);
206 206  
207   - err = nilfs_mdt_read_inode_direct(
208   - nilfs->ns_dat, bh_sr, NILFS_SR_DAT_OFFSET(inode_size));
  207 + err = nilfs_dat_read(nilfs->ns_dat, (void *)bh_sr->b_data +
  208 + NILFS_SR_DAT_OFFSET(inode_size));
209 209 if (unlikely(err))
210 210 goto failed_sufile;
211 211  
212   - err = nilfs_mdt_read_inode_direct(
213   - nilfs->ns_cpfile, bh_sr, NILFS_SR_CPFILE_OFFSET(inode_size));
  212 + err = nilfs_cpfile_read(nilfs->ns_cpfile, (void *)bh_sr->b_data +
  213 + NILFS_SR_CPFILE_OFFSET(inode_size));
214 214 if (unlikely(err))
215 215 goto failed_sufile;
216 216  
217   - err = nilfs_mdt_read_inode_direct(
218   - nilfs->ns_sufile, bh_sr, NILFS_SR_SUFILE_OFFSET(inode_size));
  217 + err = nilfs_sufile_read(nilfs->ns_sufile, (void *)bh_sr->b_data +
  218 + NILFS_SR_SUFILE_OFFSET(inode_size));
219 219 if (unlikely(err))
220 220 goto failed_sufile;
221 221