diff options
| -rw-r--r-- | fs/nilfs2/recovery.c | 2 | ||||
| -rw-r--r-- | fs/nilfs2/segbuf.c | 4 | ||||
| -rw-r--r-- | fs/nilfs2/segbuf.h | 4 | ||||
| -rw-r--r-- | fs/nilfs2/segment.c | 3 | ||||
| -rw-r--r-- | include/linux/nilfs2_fs.h | 2 |
5 files changed, 12 insertions, 3 deletions
diff --git a/fs/nilfs2/recovery.c b/fs/nilfs2/recovery.c index ba43146f3c30..bae2a516b4ee 100644 --- a/fs/nilfs2/recovery.c +++ b/fs/nilfs2/recovery.c | |||
| @@ -105,6 +105,8 @@ static void store_segsum_info(struct nilfs_segsum_info *ssi, | |||
| 105 | 105 | ||
| 106 | ssi->nsumblk = DIV_ROUND_UP(ssi->sumbytes, blocksize); | 106 | ssi->nsumblk = DIV_ROUND_UP(ssi->sumbytes, blocksize); |
| 107 | ssi->nfileblk = ssi->nblocks - ssi->nsumblk - !!NILFS_SEG_HAS_SR(ssi); | 107 | ssi->nfileblk = ssi->nblocks - ssi->nsumblk - !!NILFS_SEG_HAS_SR(ssi); |
| 108 | |||
| 109 | /* need to verify ->ss_bytes field if read ->ss_cno */ | ||
| 108 | } | 110 | } |
| 109 | 111 | ||
| 110 | /** | 112 | /** |
diff --git a/fs/nilfs2/segbuf.c b/fs/nilfs2/segbuf.c index 9f83bc02593c..2e6a2723b8fa 100644 --- a/fs/nilfs2/segbuf.c +++ b/fs/nilfs2/segbuf.c | |||
| @@ -134,7 +134,7 @@ int nilfs_segbuf_extend_payload(struct nilfs_segment_buffer *segbuf, | |||
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | int nilfs_segbuf_reset(struct nilfs_segment_buffer *segbuf, unsigned flags, | 136 | int nilfs_segbuf_reset(struct nilfs_segment_buffer *segbuf, unsigned flags, |
| 137 | time_t ctime) | 137 | time_t ctime, __u64 cno) |
| 138 | { | 138 | { |
| 139 | int err; | 139 | int err; |
| 140 | 140 | ||
| @@ -147,6 +147,7 @@ int nilfs_segbuf_reset(struct nilfs_segment_buffer *segbuf, unsigned flags, | |||
| 147 | segbuf->sb_sum.sumbytes = sizeof(struct nilfs_segment_summary); | 147 | segbuf->sb_sum.sumbytes = sizeof(struct nilfs_segment_summary); |
| 148 | segbuf->sb_sum.nfinfo = segbuf->sb_sum.nfileblk = 0; | 148 | segbuf->sb_sum.nfinfo = segbuf->sb_sum.nfileblk = 0; |
| 149 | segbuf->sb_sum.ctime = ctime; | 149 | segbuf->sb_sum.ctime = ctime; |
| 150 | segbuf->sb_sum.cno = cno; | ||
| 150 | return 0; | 151 | return 0; |
| 151 | } | 152 | } |
| 152 | 153 | ||
| @@ -172,6 +173,7 @@ void nilfs_segbuf_fill_in_segsum(struct nilfs_segment_buffer *segbuf) | |||
| 172 | raw_sum->ss_nfinfo = cpu_to_le32(segbuf->sb_sum.nfinfo); | 173 | raw_sum->ss_nfinfo = cpu_to_le32(segbuf->sb_sum.nfinfo); |
| 173 | raw_sum->ss_sumbytes = cpu_to_le32(segbuf->sb_sum.sumbytes); | 174 | raw_sum->ss_sumbytes = cpu_to_le32(segbuf->sb_sum.sumbytes); |
| 174 | raw_sum->ss_pad = 0; | 175 | raw_sum->ss_pad = 0; |
| 176 | raw_sum->ss_cno = cpu_to_le64(segbuf->sb_sum.cno); | ||
| 175 | } | 177 | } |
| 176 | 178 | ||
| 177 | /* | 179 | /* |
diff --git a/fs/nilfs2/segbuf.h b/fs/nilfs2/segbuf.h index e21497f61b0c..fdf1c3b6d673 100644 --- a/fs/nilfs2/segbuf.h +++ b/fs/nilfs2/segbuf.h | |||
| @@ -37,6 +37,7 @@ | |||
| 37 | * @sumbytes: Byte count of segment summary | 37 | * @sumbytes: Byte count of segment summary |
| 38 | * @nfileblk: Total number of file blocks | 38 | * @nfileblk: Total number of file blocks |
| 39 | * @seg_seq: Segment sequence number | 39 | * @seg_seq: Segment sequence number |
| 40 | * @cno: Checkpoint number | ||
| 40 | * @ctime: Creation time | 41 | * @ctime: Creation time |
| 41 | * @next: Block number of the next full segment | 42 | * @next: Block number of the next full segment |
| 42 | */ | 43 | */ |
| @@ -48,6 +49,7 @@ struct nilfs_segsum_info { | |||
| 48 | unsigned long sumbytes; | 49 | unsigned long sumbytes; |
| 49 | unsigned long nfileblk; | 50 | unsigned long nfileblk; |
| 50 | u64 seg_seq; | 51 | u64 seg_seq; |
| 52 | __u64 cno; | ||
| 51 | time_t ctime; | 53 | time_t ctime; |
| 52 | sector_t next; | 54 | sector_t next; |
| 53 | }; | 55 | }; |
| @@ -135,7 +137,7 @@ void nilfs_segbuf_map_cont(struct nilfs_segment_buffer *segbuf, | |||
| 135 | struct nilfs_segment_buffer *prev); | 137 | struct nilfs_segment_buffer *prev); |
| 136 | void nilfs_segbuf_set_next_segnum(struct nilfs_segment_buffer *, __u64, | 138 | void nilfs_segbuf_set_next_segnum(struct nilfs_segment_buffer *, __u64, |
| 137 | struct the_nilfs *); | 139 | struct the_nilfs *); |
| 138 | int nilfs_segbuf_reset(struct nilfs_segment_buffer *, unsigned, time_t); | 140 | int nilfs_segbuf_reset(struct nilfs_segment_buffer *, unsigned, time_t, __u64); |
| 139 | int nilfs_segbuf_extend_segsum(struct nilfs_segment_buffer *); | 141 | int nilfs_segbuf_extend_segsum(struct nilfs_segment_buffer *); |
| 140 | int nilfs_segbuf_extend_payload(struct nilfs_segment_buffer *, | 142 | int nilfs_segbuf_extend_payload(struct nilfs_segment_buffer *, |
| 141 | struct buffer_head **); | 143 | struct buffer_head **); |
diff --git a/fs/nilfs2/segment.c b/fs/nilfs2/segment.c index a17bfa193e3f..9f50fde0cd06 100644 --- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c | |||
| @@ -366,7 +366,8 @@ static int nilfs_segctor_reset_segment_buffer(struct nilfs_sc_info *sci) | |||
| 366 | 366 | ||
| 367 | if (nilfs_doing_gc()) | 367 | if (nilfs_doing_gc()) |
| 368 | flags = NILFS_SS_GC; | 368 | flags = NILFS_SS_GC; |
| 369 | err = nilfs_segbuf_reset(segbuf, flags, sci->sc_seg_ctime); | 369 | err = nilfs_segbuf_reset(segbuf, flags, sci->sc_seg_ctime, |
| 370 | sci->sc_sbi->s_nilfs->ns_cno); | ||
| 370 | if (unlikely(err)) | 371 | if (unlikely(err)) |
| 371 | return err; | 372 | return err; |
| 372 | 373 | ||
diff --git a/include/linux/nilfs2_fs.h b/include/linux/nilfs2_fs.h index f960e1d264e8..6505c00f1fc1 100644 --- a/include/linux/nilfs2_fs.h +++ b/include/linux/nilfs2_fs.h | |||
| @@ -377,6 +377,7 @@ union nilfs_binfo { | |||
| 377 | * @ss_nfinfo: number of finfo structures | 377 | * @ss_nfinfo: number of finfo structures |
| 378 | * @ss_sumbytes: total size of segment summary in bytes | 378 | * @ss_sumbytes: total size of segment summary in bytes |
| 379 | * @ss_pad: padding | 379 | * @ss_pad: padding |
| 380 | * @ss_cno: checkpoint number | ||
| 380 | */ | 381 | */ |
| 381 | struct nilfs_segment_summary { | 382 | struct nilfs_segment_summary { |
| 382 | __le32 ss_datasum; | 383 | __le32 ss_datasum; |
| @@ -391,6 +392,7 @@ struct nilfs_segment_summary { | |||
| 391 | __le32 ss_nfinfo; | 392 | __le32 ss_nfinfo; |
| 392 | __le32 ss_sumbytes; | 393 | __le32 ss_sumbytes; |
| 393 | __le32 ss_pad; | 394 | __le32 ss_pad; |
| 395 | __le64 ss_cno; | ||
| 394 | /* array of finfo structures */ | 396 | /* array of finfo structures */ |
| 395 | }; | 397 | }; |
| 396 | 398 | ||
