aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nilfs2/the_nilfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nilfs2/the_nilfs.c')
-rw-r--r--fs/nilfs2/the_nilfs.c11
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);