The Samba-Bugzilla – Bug 8653
FAT32 wildcard (i.e. *) not working
Last modified: 2011-12-11 12:22:12 UTC
I recently installed FreeNAS 7.2 on an old system to gain some experience. I dragged out some old disks formatted as FAT32 to play with. I was able to connect to my shares but received "The parameter is incorrect" errors when the file managers attempted to list the directories. Over days of playing around trying to resolve the problem and becoming very familiar with Samba and its configuration and debugging parameters (as well as re-aquainting myself with Unix), I discovered that: when accessing the share via command line, I could access files and a DIR command for a specific file worked, but one containing a wildcard character would not. When the file managers would issue a FindFirstFile with * they would get the NT_STATUS_INVALID_PARAMETER error. If I converted my volumes to NTFS everything worked with no problems.
Anyway here's the relevant portion of the debugging trace. I know there's very little use of FAT32 these days (I only only found a couple of references to this problem when searching the Internet and no solutions), but if you say you support something it's my option that it should work.
[2011/12/09 01:22:47.716823, 3] smbd/trans2.c:2252(call_trans2findfirst)
call_trans2findfirst: dirtype = 16, maxentries = 1366, close_after_first=0, close_if_end = 1 requires_resume_key = 1 level = 0x104, max_data_bytes = 16384
[2011/12/09 01:22:47.716884, 5] smbd/filename.c:169(unix_convert)
unix_convert called on file "*"
[2011/12/09 01:22:47.716924, 5] smbd/filename.c:328(unix_convert)
unix_convert begin: name = *, dirpath = , start = *
[2011/12/09 01:22:47.716995, 5] smbd/filename.c:650(unix_convert)
New file *
[2011/12/09 01:22:47.717024, 3] smbd/vfs.c:881(check_reduced_name)
check_reduced_name [*] [/mnt/Disk20MB]
[2011/12/09 01:22:47.717102, 3] smbd/vfs.c:962(check_reduced_name)
check_reduced_name: couldn't get realpath for *
[2011/12/09 01:22:47.717179, 5] smbd/filename.c:861(check_name)
check_name: name * failed with NT_STATUS_INVALID_PARAMETER
[2011/12/09 01:22:47.717205, 3] smbd/filename.c:1181(filename_convert)
filename_convert: check_name failed for name * with NT_STATUS_INVALID_PARAMETER
[2011/12/09 01:22:47.717232, 3] smbd/error.c:80(error_packet_set)
error packet at smbd/trans2.c(2305) cmd=50 (SMBtrans2) NT_STATUS_INVALID_PARAMETER