Re: Files with non-ASCII names inaccessible after xfs_repair

Dave Chinner
2014-01-15T21:08:12Z

On Wed, Jan 15, 2014 at 09:54:02AM -0600, Eric Sandeen wrote:
> On 1/15/14, 12:37 AM, Dave Chinner wrote:
> > On Tue, Jan 14, 2014 at 09:30:57PM -0800, Zachary Kotlarek wrote:
> >>
> >> On Jan 14, 2014, at 7:48 PM, Dave Chinner <david@fromorbit.com> wrote:
> >>
> >>> It's called *ASCII* Case Insensitivity for a reason: it doesn't
> >>> support anything other than ASCII. So your usage is not actually
> >>> supported at all, hence it's no surprise that it has caused
> >>> breakage.
> >>
> >> Okay. Thanks for the explanation.
> >>
> >> FWIW, I read “ASCII-only case-insensitive” to mean “only case-insensitive for ASCII” as in ñ and Ñ would not match each other. If it actually means “anything other than ASCII is subject to complete breakage” a more nuanced explanation in the man page might be desirable.
> >
> > Sure. Can you write a patch to add explanation that explain the
> > problem you've had?
> >
> >> I don’t suppose there’s any way to disable that setting short of creating a new file system?
> >
> > Not officially. Changing it means you have to change every single
> > hash for every directory entry. I *think* that you could probably do
> > it with a bit of xfs_db magic and and xfs_repair pass.
> >
> > First, A warning, some advice and a disclaimer: back up anything you
> > don't want to lose, because if this screws up it'll trash the
> > directory structure and you may *LOSE* *ALL* *YOUR* *DATA*. This is
> > dangerous, not recommended and I take no responsibility for what
> > happens if you try it and it fails.
> >
> > After taking a backup, use xfs_metadump to set up for a
> > non-destructive trial run. take a copy of the filesystem metadata
> > using xfs_metadump:
> >
> > # xfs_metadump <dev> scratch.metadump
>
> NB: You'll want to add the "-o" option to not obfuscate filenames, or
> you'll probably have no idea if Dave's later steps are working or not.
>
>
> (I haven't read the whole thread, but is there no way for ascii-ci mode
> to reject non-ascii names in the first place? This seems like quite
> the pitfall.)

The utf-8 patches add a "is this valid utf-8" check to all the
operations that care. We could probably do that for the ASCII-CI
stuff if you can define what ASCII means....

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com