[U-Boot] fatwrite issue in sub-directories

Hi all,
With a quite old u-boot release (October 2015 more or less), I has some different issues around fatwrite operations. I realigned a few things around FAT with latest release, and now I observe only one issue. Maybe this has been discussed here before, I searched but no success.
I'd like to save a file on an external device (sd card or usb stick), but not on the root, in a sub-directory. I made the implementation with EXT4 and it works fine. But no way (for the moment) with FAT.
Here is the behaviour, let's imagine the device contains only a "mydir" directory.
fatls <device>
mydir/
fatwrite <device> <addr> myfile.txt <filesize> fatls <device>
mydir/ myfile.txt
fatwrite <device> <addr> mydir/myfile2.txt <filesize> fatls <device>
mydir/ myfile.txt mydir/myfile2.txt In fact, data is stored in a file strangely named with a '/' character.
And when I put the device back on my Linux PC, I can see myfile.txt, nothing special in mydir directory, and no "mydir/myfile2.txt" file.
Does someone have already observed this?
Best Regards Nicolas

Hi Nicolas,
On Wed, Jul 20, 2016 at 6:21 PM, Nicolas le bayon nlebayon@gmail.com wrote:
Hi all,
With a quite old u-boot release (October 2015 more or less), I has some different issues around fatwrite operations. I realigned a few things around FAT with latest release, and now I observe only one issue. Maybe this has been discussed here before, I searched but no success.
I'd like to save a file on an external device (sd card or usb stick), but not on the root, in a sub-directory. I made the implementation with EXT4 and it works fine. But no way (for the moment) with FAT.
Here is the behaviour, let's imagine the device contains only a "mydir" directory.
fatls <device>
mydir/
fatwrite <device> <addr> myfile.txt <filesize> fatls <device>
mydir/ myfile.txt
fatwrite <device> <addr> mydir/myfile2.txt <filesize> fatls <device>
mydir/ myfile.txt mydir/myfile2.txt
In fact, data is stored in a file strangely named with a '/' character.
And when I put the device back on my Linux PC, I can see myfile.txt, nothing special in mydir directory, and no "mydir/myfile2.txt" file.
Does someone have already observed this?
Yes. The issue is that do_fat_write() only supports filenames, and not full paths, so whatever you give it ends up as a filename in the root directory. There is no workaround.
Best regards, Benoît

Hi Benoît,
2016-07-20 21:42 GMT+02:00 Benoît Thébaudeau < benoit.thebaudeau.dev@gmail.com>:
Hi Nicolas,
On Wed, Jul 20, 2016 at 6:21 PM, Nicolas le bayon nlebayon@gmail.com wrote:
Hi all,
With a quite old u-boot release (October 2015 more or less), I has some different issues around fatwrite operations. I realigned a few things around FAT with latest release, and now I observe only one issue. Maybe this has been discussed here before, I searched but no success.
I'd like to save a file on an external device (sd card or usb stick), but not on the root, in a sub-directory. I made the implementation with EXT4 and it works fine. But no way (for the moment) with FAT.
Here is the behaviour, let's imagine the device contains only a "mydir" directory.
fatls <device>
mydir/
fatwrite <device> <addr> myfile.txt <filesize> fatls <device>
mydir/ myfile.txt
fatwrite <device> <addr> mydir/myfile2.txt <filesize> fatls <device>
mydir/ myfile.txt mydir/myfile2.txt
In fact, data is stored in a file strangely named with a '/' character.
And when I put the device back on my Linux PC, I can see myfile.txt, nothing special in mydir directory, and no "mydir/myfile2.txt" file.
Does someone have already observed this?
Yes. The issue is that do_fat_write() only supports filenames, and not full paths, so whatever you give it ends up as a filename in the root directory. There is no workaround.
Best regards, Benoît
OK, so I'm gonna re-construct my implementation in order to place systematically this file in the root of my device, and this shoud workaround the issue. Good to learn that it's a known issue. Thanks a lot for your feedback! Best Regards Nicolas
participants (2)
-
Benoît Thébaudeau
-
Nicolas le bayon