Skip to content

Commit

Permalink
nilfs2: clean up nilfs_write_super
Browse files Browse the repository at this point in the history
Separate conditions that check if syncing super block and alternative
super block are required as inline functions to reuse the conditions.

Signed-off-by: Jiro SEKIBA <jir@unicus.jp>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
  • Loading branch information
Jiro SEKIBA authored and Ryusuke Konishi committed Sep 14, 2009
1 parent 6233caa commit 79efdd9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
11 changes: 3 additions & 8 deletions fs/nilfs2/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -367,17 +367,12 @@ static void nilfs_write_super(struct super_block *sb)

down_write(&nilfs->ns_sem);
if (!(sb->s_flags & MS_RDONLY)) {
struct nilfs_super_block **sbp = nilfs->ns_sbp;
u64 t = get_seconds();
int dupsb;

if (!nilfs_discontinued(nilfs) && t >= nilfs->ns_sbwtime[0] &&
t < nilfs->ns_sbwtime[0] + NILFS_SB_FREQ) {
if (!nilfs_discontinued(nilfs) &&
!nilfs_sb_need_update(nilfs)) {
up_write(&nilfs->ns_sem);
return;
}
dupsb = sbp[1] && t > nilfs->ns_sbwtime[1] + NILFS_ALTSB_FREQ;
nilfs_commit_super(sbi, dupsb);
nilfs_commit_super(sbi, nilfs_altsb_need_update(nilfs));
}
sb->s_dirt = 0;
up_write(&nilfs->ns_sem);
Expand Down
14 changes: 14 additions & 0 deletions fs/nilfs2/the_nilfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,20 @@ THE_NILFS_FNS(DISCONTINUED, discontinued)
#define NILFS_SB_FREQ 10
#define NILFS_ALTSB_FREQ 60 /* spare superblock */

static inline int nilfs_sb_need_update(struct the_nilfs *nilfs)
{
u64 t = get_seconds();
return t < nilfs->ns_sbwtime[0] ||
t > nilfs->ns_sbwtime[0] + NILFS_SB_FREQ;
}

static inline int nilfs_altsb_need_update(struct the_nilfs *nilfs)
{
u64 t = get_seconds();
struct nilfs_super_block **sbp = nilfs->ns_sbp;
return sbp[1] && t > nilfs->ns_sbwtime[1] + NILFS_ALTSB_FREQ;
}

void nilfs_set_last_segment(struct the_nilfs *, sector_t, u64, __u64);
struct the_nilfs *find_or_create_nilfs(struct block_device *);
void put_nilfs(struct the_nilfs *);
Expand Down

0 comments on commit 79efdd9

Please sign in to comment.