dorimanx / exfat-nofuse

Android ARM Linux non-fuse read/write kernel driver for exFat and VFat Android file systems
GNU General Public License v2.0
706 stars 326 forks source link

Unable to list directories and files #123

Open cryptomilk opened 6 years ago

cryptomilk commented 6 years ago

I've integrated exfat-nofuse into my Android kernel, but I'm not able to access the filesystem. It works with the fuse exfat.

lilac:/ # cd /mnt/media_rw/37304330-2d36-3241-3000-6a18a8bb9f9e/
lilac:/mnt/media_rw/37304330-2d36-3241-3000-6a18a8bb9f9e # ls
ls: ./Music: No such file or directory
ls: ./lineage-15.0-20171230_092341-UNOFFICIAL-lilac.zip: No such file or directory

Kernel log:

[  385.381612] [EXFAT] exfat_getattr entered
[  385.381660] [EXFAT] exfat_getattr exited
[  386.736184] [EXFAT] exfat_getattr entered
[  386.736205] [EXFAT] exfat_getattr exited
[  386.736238] [EXFAT] exfat_getattr entered
[  386.736242] [EXFAT] exfat_getattr exited
[  386.736298] [EXFAT] exfat_getattr entered
[  386.736302] [EXFAT] exfat_getattr exited
[  386.736338] [EXFAT] get_entry_set_in_dir entered
[  386.736343] [EXFAT] p_dir dir 4 flags 1 size -44
[  386.736349] [EXFAT] trying to kmalloc 78 bytes for 3 entries
[  386.736356] [EXFAT] es sec 8448 offset 256 flags 1, num_entries 3 buf ptr ffffffd4b6a33698
[  386.736360] [EXFAT] get_entry_set_in_dir exited ffffffd4b6a33680
[  386.736366] [EXFAT] release_entry_set ffffffd4b6a33680
[  386.736379] [EXFAT] get_entry_set_in_dir entered
[  386.736383] [EXFAT] p_dir dir 4 flags 1 size -44
[  386.736387] [EXFAT] trying to kmalloc d8 bytes for 6 entries
[  387.207811] [EXFAT] es sec 8448 offset 352 flags 1, num_entries 6 buf ptr ffffffd421d3b618
[  387.207829] [EXFAT] get_entry_set_in_dir exited ffffffd421d3b600
[  387.207835] [EXFAT] release_entry_set ffffffd421d3b600
[  387.207956] [EXFAT] exfat_lookup entered
[  387.207962] [EXFAT] ffsLookupFile entered
[  387.207983] [EXFAT] exfat_lookup exited 2
[  387.208177] [EXFAT] exfat_lookup entered
[  387.208180] [EXFAT] ffsLookupFile entered
[  387.208187] [EXFAT] exfat_lookup exited 2
/dev/block/vold/public:179_1 on /mnt/media_rw/37304330-2d36-3241-3000-6a18a8bb9f9e type exfat (rw,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,fmask=0007,dmask=0007,allow_utime=0020,iocharset=utf8,namecase=0,errors=remount-ro)

Please let me know how to provide more information.

cryptomilk commented 6 years ago
[   55.819742] [EXFAT] exfat_get_uni_name_from_ext_entry entered
[   55.819748] [EXFAT] get_entry_set_in_dir entered
[   55.819752] [EXFAT] p_dir dir 4 flags 1 size -23

I think either and invalid p_dir is passed or not initialized.

cryptomilk commented 6 years ago

After initializing everything and adding more debug messages:

[   28.385490] [EXFAT] ffsLookupFile entered
[   28.385497] [EXFAT] exfat_find_dir_entry entered
[   28.385502] [EXFAT] exfat_find_dir_entry exited with -2; entry_type UNUSED

I've created the filesystem with:

magrathea:~ # mkfs.exfat --help
mkexfatfs 1.2.7

And copied the file to it on my Linux system using "FUSE exfat 1.2.7". It looks like files created with that version are not working with exfat-nofuse.

Looks like exfat-fuse and exfat-nofuse are incompatible?