[Bug 217440] FAT32 formatted USB stick with files written by PS4 - Invalid argument, unable to list directory contents

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Mar 4 20:08:50 UTC 2017


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217440

Conrad Meyer <cem at freebsd.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ache at FreeBSD.org

--- Comment #6 from Conrad Meyer <cem at freebsd.org> ---
I think I see why ls(1)/fts(3) shows "Invalid".  The directory entries are
readable:

$ echo ./testdir/*
./testdir/123t�st ./testdir/abc?
$ echo $?
0

However, that '?' is an actual question mark symbol, because ™ can not be
represented in iso-8859-1, only win-1252 and unicode.  So you cannot access
that file by its directory entry:

$ ls ./testdir/abc?
ls: ./testdir/abc?: Invalid argument
$ truss stat ./testdir/abc?
...
lstat("./testdir/abc?",0x7fffffffe298)           ERR#22 'Invalid argument'

I think that EINVAL return is bogus.  lstat() misses should return ENOENT.  But
that doesn't help you very much.

Maybe VOP_READDIR should prefer 8.3 names if LFN names do not convert into
cs_local.  Although, lookup of 8.3 names doesn't work.  So maybe not.

It seems cs_local should default to UTF-8 or user's locale, not ISO-8859-1.  Or
if it must be a 8-bit character set, Win-1252 may be a better choice.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-fs mailing list