This reverts commit 67a79e2cc9320aaf269cd00e9c8d16892931886d. A root LEAFN block can exist in a directory. When we convert from leaf format (LEAF1 - internal free list) to node format (LEAFN - external free list) the only change to the single root leaf block is that it's magic number is changed from LEAF1 to LEAFN. We don't actually end up with DA nodes in the tree until the LEAFN node is split, and that requires a couple more dirents to be added to the directory to fill the LEAFN block up completely. Then it will split and create a DA node root block pointing to multiple LEAFN leaf blocks. Hence restore the old behaviour where we skip the DA node tree rebuild if there is a LEAFN root block found as there is no tree to rebuild. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> --- repair/dir2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/repair/dir2.c b/repair/dir2.c index 3374ae722bf9..ba5763ed3d26 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -1242,11 +1242,11 @@ process_node_dir2( return 1; /* - * Directories with a root marked XFS_DIR2_LEAFN_MAGIC are corrupt + * Skip directories with a root marked XFS_DIR2_LEAFN_MAGIC */ if (bno == 0) { - err_release_da_cursor(mp, &da_cursor, 0); - return 1; + release_da_cursor(mp, &da_cursor, 0); + return 0; } else { /* * Now pass cursor and bno into leaf-block processing routine. -- 2.19.1