fat: replace LINEAR_PREFETCH_SIZE with PREFETCH_BLOCKS
authorSergei Shtylyov <sshtylyov@ru.mvista.com>
Fri, 19 Aug 2011 09:37:46 +0000 (09:37 +0000)
committerWolfgang Denk <wd@denx.de>
Sat, 1 Oct 2011 19:52:19 +0000 (21:52 +0200)
Currently in do_fat_read() when reading FAT sectors, we have to divide down
LINEAR_PREFETCH_SIZE by the sector size, whereas it's defined as 2 sectors
worth of bytes. In order to avoid redundant multiplication/division, introduce
#define PREFETCH_BLOCKS instead of #define LINEAR_PREFETCH_SIZE.

Signed-off-by: Sergei Shtylyov <sshtylyov@mvista.com>
fs/fat/fat.c
include/fat.h

index aa0be18b8f3c3b5671888bcf93c3502720c6642f..756ac64a8b7b98287788702728134947f22b15ce 100644 (file)
@@ -440,10 +440,9 @@ get_vfatname (fsdata *mydata, int curclust, __u8 *cluster,
 {
        dir_entry *realdent;
        dir_slot *slotptr = (dir_slot *)retdent;
-       __u8 *buflimit = cluster + ((curclust == 0) ?
-                                       LINEAR_PREFETCH_SIZE :
-                                       (mydata->clust_size * mydata->sect_size)
-                                  );
+       __u8 *buflimit = cluster + mydata->sect_size * ((curclust == 0) ?
+                                                       PREFETCH_BLOCKS :
+                                                       mydata->clust_size);
        __u8 counter = (slotptr->id & ~LAST_LONG_ENTRY_MASK) & 0xff;
        int idx = 0;
 
@@ -880,7 +879,7 @@ do_fat_read (const char *filename, void *buffer, unsigned long maxsize,
                if (disk_read(cursect,
                                (mydata->fatsize == 32) ?
                                (mydata->clust_size) :
-                               LINEAR_PREFETCH_SIZE / mydata->sect_size,
+                               PREFETCH_BLOCKS,
                                do_fat_read_block) < 0) {
                        debug("Error: reading rootdir block\n");
                        goto exit;
index c2465d2d3ea2bc6b15c1e395fe7f62fb2676272d..15dbf1094c351c41bae791951de22a9ab1a2efa7 100644 (file)
@@ -33,7 +33,7 @@
 /* Maximum Long File Name length supported here is 128 UTF-16 code units */
 #define VFAT_MAXLEN_BYTES      256 /* Maximum LFN buffer in bytes */
 #define VFAT_MAXSEQ            9   /* Up to 9 of 13 2-byte UTF-16 entries */
-#define LINEAR_PREFETCH_SIZE   (mydata->sect_size*2) /* Prefetch buffer size */
+#define PREFETCH_BLOCKS                2
 
 #define MAX_CLUSTSIZE  65536
 #define DIRENTSPERBLOCK        (mydata->sect_size / sizeof(dir_entry))