mirror of https://gitee.com/openkylin/linux.git
[JFFS2] Fix obsoletion of metadata nodes in jffs2_add_tn_to_tree()
We should keep the mdata node with higher version number, not just the one we happen to find latest. Doh. Signed-off-by: David Woodhouse <dwmw2@infradead.org>
This commit is contained in:
parent
718ea8361b
commit
0477d24e2a
|
@ -229,9 +229,16 @@ static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c,
|
||||||
check anyway. */
|
check anyway. */
|
||||||
if (!tn->fn->size) {
|
if (!tn->fn->size) {
|
||||||
if (rii->mdata_tn) {
|
if (rii->mdata_tn) {
|
||||||
/* We had a candidate mdata node already */
|
if (rii->mdata_tn->version < tn->version) {
|
||||||
dbg_readinode("kill old mdata with ver %d\n", rii->mdata_tn->version);
|
/* We had a candidate mdata node already */
|
||||||
jffs2_kill_tn(c, rii->mdata_tn);
|
dbg_readinode("kill old mdata with ver %d\n", rii->mdata_tn->version);
|
||||||
|
jffs2_kill_tn(c, rii->mdata_tn);
|
||||||
|
} else {
|
||||||
|
dbg_readinode("kill new mdata with ver %d (older than existing %d\n",
|
||||||
|
tn->version, rii->mdata_tn->version);
|
||||||
|
jffs2_kill_tn(c, tn);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
rii->mdata_tn = tn;
|
rii->mdata_tn = tn;
|
||||||
dbg_readinode("keep new mdata with ver %d\n", tn->version);
|
dbg_readinode("keep new mdata with ver %d\n", tn->version);
|
||||||
|
|
Loading…
Reference in New Issue