On 3/19/15 11:47 AM, Brian Foster wrote: > On Tue, Mar 17, 2015 at 03:33:14PM -0500, Eric Sandeen wrote: >> process_dir2_data() has special . and .. processing; it is able >> to correct these inodes, so there is no reason to clear them. >> >> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> >> --- >> repair/dir2.c | 12 ++++++++++++ >> 1 files changed, 12 insertions(+), 0 deletions(-) >> >> diff --git a/repair/dir2.c b/repair/dir2.c >> index 9e6c67d..3acf71c 100644 >> --- a/repair/dir2.c >> +++ b/repair/dir2.c >> @@ -1331,6 +1331,18 @@ _("entry at block %u offset %" PRIdPTR " in directory inode %" PRIu64 >> dep->namelen = 1; >> clearino = 1; >> } >> + >> + /* >> + * We have a special dot & dotdot fixer-upper below which can >> + * sort out the proper inode number, so don't clear it. >> + */ >> + if ((dep->namelen == 1 && dep->name[0] == '.') || >> + (dep->namelen == 2 && >> + dep->name[0] == '.' && dep->name[1] == '.')) { >> + clearino = 0; >> + clearreason = NULL; >> + } >> + > > Whitespace damage on the blank line above. > > Seems Ok, but the question I have is what happens if the dot or dotdot > namelen was bogus? If namelen is 1 and name[0] is '.', or if namelen is 2 and name[0] is '.' and name[1] is '..' then how can that the len be bogus? The test is for the name being either precisely '.' or '..' and nothing else, right? -Eric _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs