Message ID | 20230317120413.11066-1-stefan.herbrechtsmeier-oss@weidmueller.com |
---|---|
State | Accepted |
Commit | fefd949157430e1dc8569fa39729c63c5eccb454 |
Delegated to: | Tom Rini |
Headers | show |
Series | fs: fat: do not mangle short filenames | expand |
On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > Do not mangle lower or mixed case filenames which fit into the upper > case 8.3 short filename. This ensures FAT standard compatible short > filenames (SFN) to support systems without long filename (LFN) support > like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN > boot.bin). > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > --- > > fs/fat/fat_write.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) Can we update test/py/tests/test_fs/ somewhere to have a test for this case? Thanks.
Am 20.03.2023 um 18:01 schrieb Tom Rini: > On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > >> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >> >> Do not mangle lower or mixed case filenames which fit into the upper >> case 8.3 short filename. This ensures FAT standard compatible short >> filenames (SFN) to support systems without long filename (LFN) support >> like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN >> boot.bin). >> >> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >> >> --- >> >> fs/fat/fat_write.c | 11 +++++++---- >> 1 file changed, 7 insertions(+), 4 deletions(-) > Can we update test/py/tests/test_fs/ somewhere to have a test for this > case? Thanks. What is the recommended approach to test internal behavior? The short name isn't avialable at the terminal because u-boot support VFAT.
On Tue, Mar 21, 2023 at 08:43:07AM +0100, Stefan Herbrechtsmeier wrote: > Am 20.03.2023 um 18:01 schrieb Tom Rini: > > On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > > > > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > Do not mangle lower or mixed case filenames which fit into the upper > > > case 8.3 short filename. This ensures FAT standard compatible short > > > filenames (SFN) to support systems without long filename (LFN) support > > > like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN > > > boot.bin). > > > > > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > --- > > > > > > fs/fat/fat_write.c | 11 +++++++---- > > > 1 file changed, 7 insertions(+), 4 deletions(-) > > Can we update test/py/tests/test_fs/ somewhere to have a test for this > > case? Thanks. > > What is the recommended approach to test internal behavior? The short name > isn't avialable at the terminal because u-boot support VFAT. Well, you triggered this problem with a filesystem that had contents that were "just so" and then didn't work as expected, yes?
Am 21.03.2023 um 16:35 schrieb Tom Rini: > On Tue, Mar 21, 2023 at 08:43:07AM +0100, Stefan Herbrechtsmeier wrote: >> Am 20.03.2023 um 18:01 schrieb Tom Rini: >>> On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: >>> >>>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>>> >>>> Do not mangle lower or mixed case filenames which fit into the upper >>>> case 8.3 short filename. This ensures FAT standard compatible short >>>> filenames (SFN) to support systems without long filename (LFN) support >>>> like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN >>>> boot.bin). >>>> >>>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>>> >>>> --- >>>> >>>> fs/fat/fat_write.c | 11 +++++++---- >>>> 1 file changed, 7 insertions(+), 4 deletions(-) >>> Can we update test/py/tests/test_fs/ somewhere to have a test for this >>> case? Thanks. >> What is the recommended approach to test internal behavior? The short name >> isn't avialable at the terminal because u-boot support VFAT. > Well, you triggered this problem with a filesystem that had contents > that were "just so" and then didn't work as expected, yes? No, I write a file to a file system and the boot rom do not find the file because the name was wrong (BOOT~1.BIN instead of BOOT.BIN). The mdir command shows the short and long file name. I will add a test_fat.py with a test. Regards Stefan
On Tue, Mar 21, 2023 at 04:53:22PM +0100, Stefan Herbrechtsmeier wrote: > > Am 21.03.2023 um 16:35 schrieb Tom Rini: > > On Tue, Mar 21, 2023 at 08:43:07AM +0100, Stefan Herbrechtsmeier wrote: > > > Am 20.03.2023 um 18:01 schrieb Tom Rini: > > > > On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > > > > > > > > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > > > > > Do not mangle lower or mixed case filenames which fit into the upper > > > > > case 8.3 short filename. This ensures FAT standard compatible short > > > > > filenames (SFN) to support systems without long filename (LFN) support > > > > > like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN > > > > > boot.bin). > > > > > > > > > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > > > > > --- > > > > > > > > > > fs/fat/fat_write.c | 11 +++++++---- > > > > > 1 file changed, 7 insertions(+), 4 deletions(-) > > > > Can we update test/py/tests/test_fs/ somewhere to have a test for this > > > > case? Thanks. > > > What is the recommended approach to test internal behavior? The short name > > > isn't avialable at the terminal because u-boot support VFAT. > > Well, you triggered this problem with a filesystem that had contents > > that were "just so" and then didn't work as expected, yes? > > > No, I write a file to a file system and the boot rom do not find the file > because the name was wrong (BOOT~1.BIN instead of BOOT.BIN). > > The mdir command shows the short and long file name. I will add a > test_fat.py with a test. Ah, ok, and great, thanks!
Am 21.03.2023 um 16:54 schrieb Tom Rini: > On Tue, Mar 21, 2023 at 04:53:22PM +0100, Stefan Herbrechtsmeier wrote: >> Am 21.03.2023 um 16:35 schrieb Tom Rini: >>> On Tue, Mar 21, 2023 at 08:43:07AM +0100, Stefan Herbrechtsmeier wrote: >>>> Am 20.03.2023 um 18:01 schrieb Tom Rini: >>>>> On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: >>>>> >>>>>> From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>>>>> >>>>>> Do not mangle lower or mixed case filenames which fit into the upper >>>>>> case 8.3 short filename. This ensures FAT standard compatible short >>>>>> filenames (SFN) to support systems without long filename (LFN) support >>>>>> like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN >>>>>> boot.bin). >>>>>> >>>>>> Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> >>>>>> >>>>>> --- >>>>>> >>>>>> fs/fat/fat_write.c | 11 +++++++---- >>>>>> 1 file changed, 7 insertions(+), 4 deletions(-) >>>>> Can we update test/py/tests/test_fs/ somewhere to have a test for this >>>>> case? Thanks. >>>> What is the recommended approach to test internal behavior? The short name >>>> isn't avialable at the terminal because u-boot support VFAT. >>> Well, you triggered this problem with a filesystem that had contents >>> that were "just so" and then didn't work as expected, yes? >> >> No, I write a file to a file system and the boot rom do not find the file >> because the name was wrong (BOOT~1.BIN instead of BOOT.BIN). >> >> The mdir command shows the short and long file name. I will add a >> test_fat.py with a test. > Ah, ok, and great, thanks! I have send a separate patch `test: fs: Check fat short file name` or should I send a new series with both patches? Regards Stefan
On Wed, Mar 22, 2023 at 09:51:32AM +0100, Stefan Herbrechtsmeier wrote: > Am 21.03.2023 um 16:54 schrieb Tom Rini: > > On Tue, Mar 21, 2023 at 04:53:22PM +0100, Stefan Herbrechtsmeier wrote: > > > Am 21.03.2023 um 16:35 schrieb Tom Rini: > > > > On Tue, Mar 21, 2023 at 08:43:07AM +0100, Stefan Herbrechtsmeier wrote: > > > > > Am 20.03.2023 um 18:01 schrieb Tom Rini: > > > > > > On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > > > > > > > > > > > > > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > > > > > > > > > Do not mangle lower or mixed case filenames which fit into the upper > > > > > > > case 8.3 short filename. This ensures FAT standard compatible short > > > > > > > filenames (SFN) to support systems without long filename (LFN) support > > > > > > > like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN > > > > > > > boot.bin). > > > > > > > > > > > > > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > > > > > > > > > > > > > --- > > > > > > > > > > > > > > fs/fat/fat_write.c | 11 +++++++---- > > > > > > > 1 file changed, 7 insertions(+), 4 deletions(-) > > > > > > Can we update test/py/tests/test_fs/ somewhere to have a test for this > > > > > > case? Thanks. > > > > > What is the recommended approach to test internal behavior? The short name > > > > > isn't avialable at the terminal because u-boot support VFAT. > > > > Well, you triggered this problem with a filesystem that had contents > > > > that were "just so" and then didn't work as expected, yes? > > > > > > No, I write a file to a file system and the boot rom do not find the file > > > because the name was wrong (BOOT~1.BIN instead of BOOT.BIN). > > > > > > The mdir command shows the short and long file name. I will add a > > > test_fat.py with a test. > > Ah, ok, and great, thanks! > > > I have send a separate patch `test: fs: Check fat short file name` or should > I send a new series with both patches? A follow-up is fine.
On Fri, Mar 17, 2023 at 01:04:13PM +0100, Stefan Herbrechtsmeier wrote: > From: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> > > Do not mangle lower or mixed case filenames which fit into the upper > case 8.3 short filename. This ensures FAT standard compatible short > filenames (SFN) to support systems without long filename (LFN) support > like boot roms (ex. SFN BOOT.BIN instead of BOOT~1.BIN for LFN > boot.bin). > > Signed-off-by: Stefan Herbrechtsmeier <stefan.herbrechtsmeier@weidmueller.com> Applied to u-boot/next, thanks!
diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 00541ebc3a..413fc432eb 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -141,6 +141,8 @@ static int set_name(fat_itr *itr, const char *filename, char *shortname) if (!strcmp(buf, filename)) { ret = 1; goto out; + } else if (!strcasecmp(buf, filename)) { + goto out_ret; } /* Construct an indexed short name */ @@ -177,12 +179,13 @@ static int set_name(fat_itr *itr, const char *filename, char *shortname) if (find_directory_entry(itr, buf)) continue; - debug("chosen short name: %s\n", buf); - /* Each long name directory entry takes 13 characters. */ - ret = (strlen(filename) + 25) / 13; - goto out; + goto out_ret; } return -EIO; +out_ret: + debug("chosen short name: %s\n", buf); + /* Each long name directory entry takes 13 characters. */ + ret = (strlen(filename) + 25) / 13; out: memcpy(shortname, &dirent, SHORT_NAME_SIZE); return ret;