Commit 37662447 authored by Artem Bityutskiy's avatar Artem Bityutskiy Committed by Artem Bityutskiy

UBIFS: use correct flags in lprops

The UBIFS lpt tree is in many aspects similar to the TNC tree, and we have
similar flags for these trees. And by mistake we use the COW_ZNODE flag for
LPT in some places, instead of the right flag COW_CNODE. And this works
only because these two constants have the same value.

This patch makes all the LPT code to use COW_CNODE and also changes COW_CNODE
constant value to make sure we do not misuse the flags any more.
Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
parent f42eed7c
...@@ -504,7 +504,7 @@ static int is_lprops_dirty(struct ubifs_info *c, struct ubifs_lprops *lprops) ...@@ -504,7 +504,7 @@ static int is_lprops_dirty(struct ubifs_info *c, struct ubifs_lprops *lprops)
pnode = (struct ubifs_pnode *)container_of(lprops - pos, pnode = (struct ubifs_pnode *)container_of(lprops - pos,
struct ubifs_pnode, struct ubifs_pnode,
lprops[0]); lprops[0]);
return !test_bit(COW_ZNODE, &pnode->flags) && return !test_bit(COW_CNODE, &pnode->flags) &&
test_bit(DIRTY_CNODE, &pnode->flags); test_bit(DIRTY_CNODE, &pnode->flags);
} }
......
...@@ -116,8 +116,8 @@ static int get_cnodes_to_commit(struct ubifs_info *c) ...@@ -116,8 +116,8 @@ static int get_cnodes_to_commit(struct ubifs_info *c)
return 0; return 0;
cnt += 1; cnt += 1;
while (1) { while (1) {
ubifs_assert(!test_bit(COW_ZNODE, &cnode->flags)); ubifs_assert(!test_bit(COW_CNODE, &cnode->flags));
__set_bit(COW_ZNODE, &cnode->flags); __set_bit(COW_CNODE, &cnode->flags);
cnext = next_dirty_cnode(cnode); cnext = next_dirty_cnode(cnode);
if (!cnext) { if (!cnext) {
cnode->cnext = c->lpt_cnext; cnode->cnext = c->lpt_cnext;
...@@ -465,7 +465,7 @@ static int write_cnodes(struct ubifs_info *c) ...@@ -465,7 +465,7 @@ static int write_cnodes(struct ubifs_info *c)
*/ */
clear_bit(DIRTY_CNODE, &cnode->flags); clear_bit(DIRTY_CNODE, &cnode->flags);
smp_mb__before_clear_bit(); smp_mb__before_clear_bit();
clear_bit(COW_ZNODE, &cnode->flags); clear_bit(COW_CNODE, &cnode->flags);
smp_mb__after_clear_bit(); smp_mb__after_clear_bit();
offs += len; offs += len;
dbg_chk_lpt_sz(c, 1, len); dbg_chk_lpt_sz(c, 1, len);
......
...@@ -230,14 +230,14 @@ enum { ...@@ -230,14 +230,14 @@ enum {
* LPT cnode flag bits. * LPT cnode flag bits.
* *
* DIRTY_CNODE: cnode is dirty * DIRTY_CNODE: cnode is dirty
* COW_CNODE: cnode is being committed and must be copied before writing
* OBSOLETE_CNODE: cnode is being committed and has been copied (or deleted), * OBSOLETE_CNODE: cnode is being committed and has been copied (or deleted),
* so it can (and must) be freed when the commit is finished * so it can (and must) be freed when the commit is finished
* COW_CNODE: cnode is being committed and must be copied before writing
*/ */
enum { enum {
DIRTY_CNODE = 0, DIRTY_CNODE = 0,
COW_CNODE = 1, OBSOLETE_CNODE = 1,
OBSOLETE_CNODE = 2, COW_CNODE = 2,
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment