nilfs2: get rid of s_dirt flag use
This replaces s_dirt flag use in nilfs with a new flag added on the nilfs object. The s_dirt flag was used to indicate if sop->write_super() should be called, however the current version of nilfs does not use the callback. Thus, it can be replaced with the own flag. Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp> Cc: Jiro SEKIBA <jir@unicus.jp>
This commit is contained in:
parent
dcd7618695
commit
e605f0a724
|
@ -1937,8 +1937,7 @@ static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci)
|
||||||
{
|
{
|
||||||
struct nilfs_segment_buffer *segbuf;
|
struct nilfs_segment_buffer *segbuf;
|
||||||
struct page *bd_page = NULL, *fs_page = NULL;
|
struct page *bd_page = NULL, *fs_page = NULL;
|
||||||
struct nilfs_sb_info *sbi = sci->sc_sbi;
|
struct the_nilfs *nilfs = sci->sc_sbi->s_nilfs;
|
||||||
struct the_nilfs *nilfs = sbi->s_nilfs;
|
|
||||||
int update_sr = (sci->sc_super_root != NULL);
|
int update_sr = (sci->sc_super_root != NULL);
|
||||||
|
|
||||||
list_for_each_entry(segbuf, &sci->sc_write_logs, sb_list) {
|
list_for_each_entry(segbuf, &sci->sc_write_logs, sb_list) {
|
||||||
|
@ -2020,7 +2019,7 @@ static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci)
|
||||||
if (update_sr) {
|
if (update_sr) {
|
||||||
nilfs_set_last_segment(nilfs, segbuf->sb_pseg_start,
|
nilfs_set_last_segment(nilfs, segbuf->sb_pseg_start,
|
||||||
segbuf->sb_sum.seg_seq, nilfs->ns_cno++);
|
segbuf->sb_sum.seg_seq, nilfs->ns_cno++);
|
||||||
sbi->s_super->s_dirt = 1;
|
set_nilfs_sb_dirty(nilfs);
|
||||||
|
|
||||||
clear_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags);
|
clear_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags);
|
||||||
clear_bit(NILFS_SC_DIRTY, &sci->sc_flags);
|
clear_bit(NILFS_SC_DIRTY, &sci->sc_flags);
|
||||||
|
@ -2645,6 +2644,7 @@ static int nilfs_segctor_flush_mode(struct nilfs_sc_info *sci)
|
||||||
static int nilfs_segctor_thread(void *arg)
|
static int nilfs_segctor_thread(void *arg)
|
||||||
{
|
{
|
||||||
struct nilfs_sc_info *sci = (struct nilfs_sc_info *)arg;
|
struct nilfs_sc_info *sci = (struct nilfs_sc_info *)arg;
|
||||||
|
struct the_nilfs *nilfs = sci->sc_sbi->s_nilfs;
|
||||||
struct timer_list timer;
|
struct timer_list timer;
|
||||||
int timeout = 0;
|
int timeout = 0;
|
||||||
|
|
||||||
|
@ -2690,7 +2690,6 @@ static int nilfs_segctor_thread(void *arg)
|
||||||
} else {
|
} else {
|
||||||
DEFINE_WAIT(wait);
|
DEFINE_WAIT(wait);
|
||||||
int should_sleep = 1;
|
int should_sleep = 1;
|
||||||
struct the_nilfs *nilfs;
|
|
||||||
|
|
||||||
prepare_to_wait(&sci->sc_wait_daemon, &wait,
|
prepare_to_wait(&sci->sc_wait_daemon, &wait,
|
||||||
TASK_INTERRUPTIBLE);
|
TASK_INTERRUPTIBLE);
|
||||||
|
@ -2711,8 +2710,8 @@ static int nilfs_segctor_thread(void *arg)
|
||||||
finish_wait(&sci->sc_wait_daemon, &wait);
|
finish_wait(&sci->sc_wait_daemon, &wait);
|
||||||
timeout = ((sci->sc_state & NILFS_SEGCTOR_COMMIT) &&
|
timeout = ((sci->sc_state & NILFS_SEGCTOR_COMMIT) &&
|
||||||
time_after_eq(jiffies, sci->sc_timer->expires));
|
time_after_eq(jiffies, sci->sc_timer->expires));
|
||||||
nilfs = sci->sc_sbi->s_nilfs;
|
|
||||||
if (sci->sc_super->s_dirt && nilfs_sb_need_update(nilfs))
|
if (nilfs_sb_dirty(nilfs) && nilfs_sb_need_update(nilfs))
|
||||||
set_nilfs_discontinued(nilfs);
|
set_nilfs_discontinued(nilfs);
|
||||||
}
|
}
|
||||||
goto loop;
|
goto loop;
|
||||||
|
|
|
@ -298,7 +298,7 @@ int nilfs_commit_super(struct nilfs_sb_info *sbi, int dupsb)
|
||||||
memcpy(sbp[1], sbp[0], nilfs->ns_sbsize);
|
memcpy(sbp[1], sbp[0], nilfs->ns_sbsize);
|
||||||
nilfs->ns_sbwtime[1] = t;
|
nilfs->ns_sbwtime[1] = t;
|
||||||
}
|
}
|
||||||
sbi->s_super->s_dirt = 0;
|
clear_nilfs_sb_dirty(nilfs);
|
||||||
return nilfs_sync_super(sbi, dupsb);
|
return nilfs_sync_super(sbi, dupsb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -342,7 +342,7 @@ static int nilfs_sync_fs(struct super_block *sb, int wait)
|
||||||
err = nilfs_construct_segment(sb);
|
err = nilfs_construct_segment(sb);
|
||||||
|
|
||||||
down_write(&nilfs->ns_sem);
|
down_write(&nilfs->ns_sem);
|
||||||
if (sb->s_dirt)
|
if (nilfs_sb_dirty(nilfs))
|
||||||
nilfs_commit_super(sbi, 1);
|
nilfs_commit_super(sbi, 1);
|
||||||
up_write(&nilfs->ns_sem);
|
up_write(&nilfs->ns_sem);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ enum {
|
||||||
the latest checkpoint was loaded */
|
the latest checkpoint was loaded */
|
||||||
THE_NILFS_DISCONTINUED, /* 'next' pointer chain has broken */
|
THE_NILFS_DISCONTINUED, /* 'next' pointer chain has broken */
|
||||||
THE_NILFS_GC_RUNNING, /* gc process is running */
|
THE_NILFS_GC_RUNNING, /* gc process is running */
|
||||||
|
THE_NILFS_SB_DIRTY, /* super block is dirty */
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -197,6 +198,7 @@ THE_NILFS_FNS(INIT, init)
|
||||||
THE_NILFS_FNS(LOADED, loaded)
|
THE_NILFS_FNS(LOADED, loaded)
|
||||||
THE_NILFS_FNS(DISCONTINUED, discontinued)
|
THE_NILFS_FNS(DISCONTINUED, discontinued)
|
||||||
THE_NILFS_FNS(GC_RUNNING, gc_running)
|
THE_NILFS_FNS(GC_RUNNING, gc_running)
|
||||||
|
THE_NILFS_FNS(SB_DIRTY, sb_dirty)
|
||||||
|
|
||||||
/* Minimum interval of periodical update of superblocks (in seconds) */
|
/* Minimum interval of periodical update of superblocks (in seconds) */
|
||||||
#define NILFS_SB_FREQ 10
|
#define NILFS_SB_FREQ 10
|
||||||
|
|
Loading…
Reference in a new issue