Message ID | 20200609070907.546971-1-christian.gmeiner@gmail.com |
---|---|
State | Accepted |
Commit | 1788a9697f51aebb25623e6216c09304756748ff |
Headers | show |
Series | fs: fat: fix fat iteration | expand |
On 09.06.20 09:09, Christian Gmeiner wrote: > According to the FAT specification it is valid to have files with an > attribute value of 0x0. This fixes a regression where different U-Boot > versions are showing different amount of files on the same storage > device. With this change U-Boot shows the same number of files and folders > as Linux and Windows. > > Fixes: 39606d462c ("fs: fat: handle deleted directory entries correctly") > Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com> Thanks for reporting and resolving the issue. Could you, please, provide a test image to reproduce the issue. Further it would be helpful to add a test case in test/py/tests/test_fs. Best regards Heinrich > --- > fs/fat/fat.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/fs/fat/fat.c b/fs/fat/fat.c > index 7fd29470c1..9578b74bae 100644 > --- a/fs/fat/fat.c > +++ b/fs/fat/fat.c > @@ -949,9 +949,7 @@ static int fat_itr_next(fat_itr *itr) > /* Volume label or VFAT entry, skip */ > continue; > } > - } else if (!(dent->attr & ATTR_ARCH) && > - !(dent->attr & ATTR_DIR)) > - continue; > + } > > /* short file name */ > break; >
Hi Am Di., 9. Juni 2020 um 09:19 Uhr schrieb Heinrich Schuchardt <xypron.glpk at gmx.de>: > > On 09.06.20 09:09, Christian Gmeiner wrote: > > According to the FAT specification it is valid to have files with an > > attribute value of 0x0. This fixes a regression where different U-Boot > > versions are showing different amount of files on the same storage > > device. With this change U-Boot shows the same number of files and folders > > as Linux and Windows. > > > > Fixes: 39606d462c ("fs: fat: handle deleted directory entries correctly") > > Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com> > > Thanks for reporting and resolving the issue. > > Could you, please, provide a test image to reproduce the issue. > What are the requirements for such a test image? > Further it would be helpful to add a test case in test/py/tests/test_fs. > I can try it but I have almost no overview on how to do it. > Best regards > > Heinrich > > > --- > > fs/fat/fat.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/fs/fat/fat.c b/fs/fat/fat.c > > index 7fd29470c1..9578b74bae 100644 > > --- a/fs/fat/fat.c > > +++ b/fs/fat/fat.c > > @@ -949,9 +949,7 @@ static int fat_itr_next(fat_itr *itr) > > /* Volume label or VFAT entry, skip */ > > continue; > > } > > - } else if (!(dent->attr & ATTR_ARCH) && > > - !(dent->attr & ATTR_DIR)) > > - continue; > > + } > > > > /* short file name */ > > break; > > > >
On 09.06.20 11:35, Christian Gmeiner wrote: > Hi > > Am Di., 9. Juni 2020 um 09:19 Uhr schrieb Heinrich Schuchardt > <xypron.glpk at gmx.de>: >> >> On 09.06.20 09:09, Christian Gmeiner wrote: >>> According to the FAT specification it is valid to have files with an >>> attribute value of 0x0. This fixes a regression where different U-Boot >>> versions are showing different amount of files on the same storage >>> device. With this change U-Boot shows the same number of files and folders >>> as Linux and Windows. >>> >>> Fixes: 39606d462c ("fs: fat: handle deleted directory entries correctly") >>> Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com> >> >> Thanks for reporting and resolving the issue. >> >> Could you, please, provide a test image to reproduce the issue. >> > > What are the requirements for such a test image? I am looking for a file with a FAT file system that I can mount on Linux and later in U-Boot to see that it is correct in Linux but appears corrupted in U-Boot without your patch. When thinking about a test case it would be even better if you could provide the sequence of commands that creates such an image file, e.g. dd if=/dev/zero of=test.img bs=64k count=1 mkfs.vfat test.img mkdir mnt mount test.img mnt mkdir mnt/foo touch mnt/bar rmdir mnt/foo ls mnt -la umount mnt For testing we can use the sandbox: make sandbox_defconfig ./u-boot host bind 1 test.img ls host 1:0 The sequence above does not show the problem. Here we need your experience. Best regards Heinrich > >> Further it would be helpful to add a test case in test/py/tests/test_fs. >> > > I can try it but I have almost no overview on how to do it. > >> Best regards >> >> Heinrich >> >>> --- >>> fs/fat/fat.c | 4 +--- >>> 1 file changed, 1 insertion(+), 3 deletions(-) >>> >>> diff --git a/fs/fat/fat.c b/fs/fat/fat.c >>> index 7fd29470c1..9578b74bae 100644 >>> --- a/fs/fat/fat.c >>> +++ b/fs/fat/fat.c >>> @@ -949,9 +949,7 @@ static int fat_itr_next(fat_itr *itr) >>> /* Volume label or VFAT entry, skip */ >>> continue; >>> } >>> - } else if (!(dent->attr & ATTR_ARCH) && >>> - !(dent->attr & ATTR_DIR)) >>> - continue; >>> + } >>> >>> /* short file name */ >>> break; >>> >> >> > >
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 7fd29470c1..9578b74bae 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -949,9 +949,7 @@ static int fat_itr_next(fat_itr *itr) /* Volume label or VFAT entry, skip */ continue; } - } else if (!(dent->attr & ATTR_ARCH) && - !(dent->attr & ATTR_DIR)) - continue; + } /* short file name */ break;
According to the FAT specification it is valid to have files with an attribute value of 0x0. This fixes a regression where different U-Boot versions are showing different amount of files on the same storage device. With this change U-Boot shows the same number of files and folders as Linux and Windows. Fixes: 39606d462c ("fs: fat: handle deleted directory entries correctly") Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com> --- fs/fat/fat.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)