I was trying to debug why a binary I tried to run off of ext4 partition using strace. In the log I saw
Code: Select all
openat(AT_FDCWD, "/home/xxx/.wine/dosdevices/c:/windows", O_RDONLY|O_DIRECTORY) = 13
ioctl(13, VFAT_IOCTL_READDIR_BOTH, 0xc9f1c0) = -1 ENOTTY (Inappropriate ioctl for device)
A reasonable use case, IMHO, is to have both the ~/.wine prefix and the windows executable are on ext4 partition. In this case this ioctl will always fail, as only the FAT FS code recognize this VFAT_IOCTL_READDIR_BOTH ioctl opcode. this ioctl is being called from NtQueryDirectoryFile. I think this is a reason wine fails to run a lot of applications.
There may be other functions that try to communicate with FAT/VFAT/NTFS or other windows specific kernel modules which may not be loaded at that moment or at all available.
Installing a FAT partition and using the relevant kernel module will probably work, but I'd like to avoid it.
Wouldn't it be better to emulate the behavior of said functions, whatever filesystem underlies?
Thank you for considering this change.