From ca1e01e564e613cc5833decc1bf6e929ae4d0ad6 Mon Sep 17 00:00:00 2001 From: David Woodhouse Date: Fri, 1 Jun 2007 20:04:43 +0100 Subject: [PATCH] --- yaml --- r: 57352 b: refs/heads/master c: 0477d24e2a87a9077b62298b01b031929f5cf2a2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/jffs2/readinode.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 36c42a9aa6b8..4f0c55564a7b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 718ea8361b15aec5f4cb559d63ba34bc5a58d8f9 +refs/heads/master: 0477d24e2a87a9077b62298b01b031929f5cf2a2 diff --git a/trunk/fs/jffs2/readinode.c b/trunk/fs/jffs2/readinode.c index 5663e8c7a959..12e83f67eee4 100644 --- a/trunk/fs/jffs2/readinode.c +++ b/trunk/fs/jffs2/readinode.c @@ -229,9 +229,16 @@ static int jffs2_add_tn_to_tree(struct jffs2_sb_info *c, check anyway. */ if (!tn->fn->size) { if (rii->mdata_tn) { - /* We had a candidate mdata node already */ - dbg_readinode("kill old mdata with ver %d\n", rii->mdata_tn->version); - jffs2_kill_tn(c, rii->mdata_tn); + if (rii->mdata_tn->version < tn->version) { + /* We had a candidate mdata node already */ + 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; dbg_readinode("keep new mdata with ver %d\n", tn->version);