xfs
[Top] [All Lists]

Re: [PATCH 12/13] xfs_repair: don't clear . or .. in process_dir2_data

To: Eric Sandeen <sandeen@xxxxxxxxxx>
Subject: Re: [PATCH 12/13] xfs_repair: don't clear . or .. in process_dir2_data
From: Brian Foster <bfoster@xxxxxxxxxx>
Date: Thu, 19 Mar 2015 12:47:16 -0400
Cc: xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1426624395-8258-13-git-send-email-sandeen@xxxxxxxxxx>
References: <1426624395-8258-1-git-send-email-sandeen@xxxxxxxxxx> <1426624395-8258-13-git-send-email-sandeen@xxxxxxxxxx>
User-agent: Mutt/1.5.23 (2014-03-12)
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? The change in behavior here is that we don't trash
the entry, right? If so, are we reliant on something else detecting
absence of either entry later and fixing it up?

Brian

>               /*
>                * If needed to clear the inode number, do it now.
>                */
> -- 
> 1.7.1
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs

<Prev in Thread] Current Thread [Next in Thread>