diff options
Diffstat (limited to 'fs/nilfs2/the_nilfs.c')
-rw-r--r-- | fs/nilfs2/the_nilfs.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/nilfs2/the_nilfs.c b/fs/nilfs2/the_nilfs.c index 88c8976c55a9..f2efc8c5be7f 100644 --- a/fs/nilfs2/the_nilfs.c +++ b/fs/nilfs2/the_nilfs.c | |||
@@ -47,6 +47,16 @@ void nilfs_set_last_segment(struct the_nilfs *nilfs, | |||
47 | nilfs->ns_last_pseg = start_blocknr; | 47 | nilfs->ns_last_pseg = start_blocknr; |
48 | nilfs->ns_last_seq = seq; | 48 | nilfs->ns_last_seq = seq; |
49 | nilfs->ns_last_cno = cno; | 49 | nilfs->ns_last_cno = cno; |
50 | |||
51 | if (!nilfs_sb_dirty(nilfs)) { | ||
52 | if (nilfs->ns_prev_seq == nilfs->ns_last_seq) | ||
53 | goto stay_cursor; | ||
54 | |||
55 | set_nilfs_sb_dirty(nilfs); | ||
56 | } | ||
57 | nilfs->ns_prev_seq = nilfs->ns_last_seq; | ||
58 | |||
59 | stay_cursor: | ||
50 | spin_unlock(&nilfs->ns_last_segment_lock); | 60 | spin_unlock(&nilfs->ns_last_segment_lock); |
51 | } | 61 | } |
52 | 62 | ||
@@ -267,6 +277,7 @@ static int nilfs_store_log_cursor(struct the_nilfs *nilfs, | |||
267 | nilfs->ns_last_cno = le64_to_cpu(sbp->s_last_cno); | 277 | nilfs->ns_last_cno = le64_to_cpu(sbp->s_last_cno); |
268 | nilfs->ns_last_seq = le64_to_cpu(sbp->s_last_seq); | 278 | nilfs->ns_last_seq = le64_to_cpu(sbp->s_last_seq); |
269 | 279 | ||
280 | nilfs->ns_prev_seq = nilfs->ns_last_seq; | ||
270 | nilfs->ns_seg_seq = nilfs->ns_last_seq; | 281 | nilfs->ns_seg_seq = nilfs->ns_last_seq; |
271 | nilfs->ns_segnum = | 282 | nilfs->ns_segnum = |
272 | nilfs_get_segnum_of_block(nilfs, nilfs->ns_last_pseg); | 283 | nilfs_get_segnum_of_block(nilfs, nilfs->ns_last_pseg); |