From: Eric Sandeen Date: Tue, 7 Apr 2015 00:04:11 +0000 (+1000) Subject: xfs_repair: set *parent if process_dir2_data() fixes root inode X-Git-Tag: v3.2.3-rc1~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aedcecb505e99674f2168676e5f2942284085641;p=thirdparty%2Fxfsprogs-dev.git xfs_repair: set *parent if process_dir2_data() fixes root inode process_dir2_data() may fix the root dir's parent inode: "bad .. entry in root directory inode 6912, was 7159: correcting" But we don't update the *parent passed in in that case; this then leads to an assert later in process_dir2: xfs_repair: dir2.c:2039: process_dir2: Assertion `(ino != mp->m_sb.sb_rootino && ino != *parent) || (ino == mp->m_sb.sb_rootino && (ino == *parent || need_root_dotdot == 1))' failed. Updating the value of *parent when we fix the parent value resolves this problem. Signed-off-by: Eric Sandeen Reviewed-by: Carlos Maiolino Signed-off-by: Dave Chinner --- diff --git a/repair/dir2.c b/repair/dir2.c index b1816f4a0..9e6c67d1f 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -1407,6 +1407,7 @@ _("bad .. entry in root directory inode %" PRIu64 ", was %" PRIu64 ": "), } else { do_warn(_("would correct\n")); } + *parent = ino; } } /*