mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
UBIFS: increment commit number earlier
Increment the commit number at the beginnig of the commit, instead of doing this after the commit. This is needed for further optimizations. Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
This commit is contained in:
parent
fd6c6b51e3
commit
014eb04b03
4 changed files with 7 additions and 5 deletions
|
@ -74,6 +74,7 @@ static int do_commit(struct ubifs_info *c)
|
||||||
goto out_up;
|
goto out_up;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c->cmt_no += 1;
|
||||||
err = ubifs_gc_start_commit(c);
|
err = ubifs_gc_start_commit(c);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_up;
|
goto out_up;
|
||||||
|
@ -115,7 +116,7 @@ static int do_commit(struct ubifs_info *c)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
mutex_lock(&c->mst_mutex);
|
mutex_lock(&c->mst_mutex);
|
||||||
c->mst_node->cmt_no = cpu_to_le64(++c->cmt_no);
|
c->mst_node->cmt_no = cpu_to_le64(c->cmt_no);
|
||||||
c->mst_node->log_lnum = cpu_to_le32(new_ltail_lnum);
|
c->mst_node->log_lnum = cpu_to_le32(new_ltail_lnum);
|
||||||
c->mst_node->root_lnum = cpu_to_le32(zroot.lnum);
|
c->mst_node->root_lnum = cpu_to_le32(zroot.lnum);
|
||||||
c->mst_node->root_offs = cpu_to_le32(zroot.offs);
|
c->mst_node->root_offs = cpu_to_le32(zroot.offs);
|
||||||
|
|
|
@ -412,7 +412,7 @@ int ubifs_log_start_commit(struct ubifs_info *c, int *ltail_lnum)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
cs->ch.node_type = UBIFS_CS_NODE;
|
cs->ch.node_type = UBIFS_CS_NODE;
|
||||||
cs->cmt_no = cpu_to_le64(c->cmt_no + 1);
|
cs->cmt_no = cpu_to_le64(c->cmt_no);
|
||||||
ubifs_prepare_node(c, cs, UBIFS_CS_NODE_SZ, 0);
|
ubifs_prepare_node(c, cs, UBIFS_CS_NODE_SZ, 0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -310,10 +310,10 @@ static int write_orph_node(struct ubifs_info *c, int atomic)
|
||||||
c->cmt_orphans -= cnt;
|
c->cmt_orphans -= cnt;
|
||||||
spin_unlock(&c->orphan_lock);
|
spin_unlock(&c->orphan_lock);
|
||||||
if (c->cmt_orphans)
|
if (c->cmt_orphans)
|
||||||
orph->cmt_no = cpu_to_le64(c->cmt_no + 1);
|
orph->cmt_no = cpu_to_le64(c->cmt_no);
|
||||||
else
|
else
|
||||||
/* Mark the last node of the commit */
|
/* Mark the last node of the commit */
|
||||||
orph->cmt_no = cpu_to_le64((c->cmt_no + 1) | (1ULL << 63));
|
orph->cmt_no = cpu_to_le64((c->cmt_no) | (1ULL << 63));
|
||||||
ubifs_assert(c->ohead_offs + len <= c->leb_size);
|
ubifs_assert(c->ohead_offs + len <= c->leb_size);
|
||||||
ubifs_assert(c->ohead_lnum >= c->orph_first);
|
ubifs_assert(c->ohead_lnum >= c->orph_first);
|
||||||
ubifs_assert(c->ohead_lnum <= c->orph_last);
|
ubifs_assert(c->ohead_lnum <= c->orph_last);
|
||||||
|
|
|
@ -865,7 +865,8 @@ struct ubifs_mount_opts {
|
||||||
* @highest_inum: highest used inode number
|
* @highest_inum: highest used inode number
|
||||||
* @vfs_gen: VFS inode generation counter
|
* @vfs_gen: VFS inode generation counter
|
||||||
* @max_sqnum: current global sequence number
|
* @max_sqnum: current global sequence number
|
||||||
* @cmt_no: commit number (last successfully completed commit)
|
* @cmt_no: commit number of the last successfully completed commit, protected
|
||||||
|
* by @commit_sem
|
||||||
* @cnt_lock: protects @highest_inum, @vfs_gen, and @max_sqnum counters
|
* @cnt_lock: protects @highest_inum, @vfs_gen, and @max_sqnum counters
|
||||||
* @fmt_version: UBIFS on-flash format version
|
* @fmt_version: UBIFS on-flash format version
|
||||||
* @uuid: UUID from super block
|
* @uuid: UUID from super block
|
||||||
|
|
Loading…
Reference in a new issue