[U-Boot] fatls returncode

Mirza Krak mirza.krak at hostmobility.com
Thu Mar 23 08:37:37 UTC 2017


Hi.

I am running U-boot 2015.04 and experiencing some issues with "fatls" command.

We use the "fatls" command to detect if there is an USB storage device
plugged in the port during boot (might be better ways of doing this).
So on boot we have:

   fatls usb 0:1 && <do something>

Normally "fatls" returns "0" when it does a successful list. But we
have found a case where it does not even though everything seems to
work fine. Below is a log with debug enabled (obfuscated filenames
since I got this flash drive from a customer).

MX-4 C61 # fatls usb 0:1
VFAT Support enabled
FAT32, fat_sect: 1146, fatlength: 7619
Rootdir begins at cluster: 2, sector: 16384, offset: 800000
Data begins at: 16368
Sector size: 512, cluster size: 8
FAT read(sect=16384, cnt:8), clust_size=8, DIRENTSPERBLOCK=16
            system volume information/
            bin/
            boot/
            etc/
            i4m/
            lib/
            sbin/
            share/
     1530   file1.sh
    15542   file2.sh
     1745   file3.sh
     4609   file4.sh
END LOOP: buffer_blk_cnt=0   clust_size=8
     1547   file5.sh
    22361   file6.sh
   385078   file7.sh
    33279   file8.sh
  1152054   file9.sh
   158132   file10.sh
     1473   file11.sh
     9739   file12.sh
   318780   file13.sh
END LOOP: buffer_blk_cnt=1   clust_size=8
 34027520   file14.sh
     1246   file15.sh
     1246   file16.sh
END LOOP: buffer_blk_cnt=2   clust_size=8
END LOOP: buffer_blk_cnt=3   clust_size=8
END LOOP: buffer_blk_cnt=4   clust_size=8
END LOOP: buffer_blk_cnt=5   clust_size=8
END LOOP: buffer_blk_cnt=6   clust_size=8
END LOOP: buffer_blk_cnt=7   clust_size=8
FAT32: entry: 0x0002 = 2, offset: 0x0002 = 2
FAT32: ret: 0fffffff, offset: 0002

16 file(s), 8 dir(s)

MX-4 C61 # echo $?
1

Even though the file list seems to be OK, the return code indicates an error.

I am wondering if we need to set "ret = 0" in below code-path (which
the exit path in above output)

fs/fat/fat.c:

1139                 /* If end of rootdir reached */
1140                 if (rootdir_end) {
1141                         if (dols == LS_ROOT) {
1142                                 printf("\n%d file(s), %d dir(s)\n\n",
1143                                        files, dirs);
1144                                 *size = 0;
1145                         }
1146                         goto exit;
1147                 }

-- 
Med Vänliga Hälsningar / Best Regards

*******************************************************************
Mirza Krak
Host Mobility AB
mirza.krak at hostmobility.com
Anders Personsgatan 12, 416 64 Göteborg
Sweden
http://www.hostmobility.com
Direct: +46 31 31 32 704
Phone: +46 31 31 32 700
Fax: +46 31 80 67 51
Mobile: +46 730 28 06 22
*******************************************************************


More information about the U-Boot mailing list