Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 014eb04b authored by Artem Bityutskiy's avatar Artem Bityutskiy
Browse files

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: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
parent fd6c6b51
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ static int do_commit(struct ubifs_info *c)
			goto out_up;
	}

	c->cmt_no += 1;
	err = ubifs_gc_start_commit(c);
	if (err)
		goto out_up;
@@ -115,7 +116,7 @@ static int do_commit(struct ubifs_info *c)
		goto out;

	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->root_lnum   = cpu_to_le32(zroot.lnum);
	c->mst_node->root_offs   = cpu_to_le32(zroot.offs);
+1 −1
Original line number Diff line number Diff line
@@ -412,7 +412,7 @@ int ubifs_log_start_commit(struct ubifs_info *c, int *ltail_lnum)
		return -ENOMEM;

	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);

	/*
+2 −2
Original line number Diff line number Diff line
@@ -310,10 +310,10 @@ static int write_orph_node(struct ubifs_info *c, int atomic)
	c->cmt_orphans -= cnt;
	spin_unlock(&c->orphan_lock);
	if (c->cmt_orphans)
		orph->cmt_no = cpu_to_le64(c->cmt_no + 1);
		orph->cmt_no = cpu_to_le64(c->cmt_no);
	else
		/* 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_lnum >= c->orph_first);
	ubifs_assert(c->ohead_lnum <= c->orph_last);
+2 −1
Original line number Diff line number Diff line
@@ -865,7 +865,8 @@ struct ubifs_mount_opts {
 * @highest_inum: highest used inode number
 * @vfs_gen: VFS inode generation counter
 * @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
 * @fmt_version: UBIFS on-flash format version
 * @uuid: UUID from super block