diff options
| author | Sergei Shtylyov <sshtylyov@ru.mvista.com> | 2011-08-19 09:37:46 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-10-01 21:52:19 +0200 | 
| commit | 025421eab453fd41a3cc14a0fc48115b0dc4c287 (patch) | |
| tree | edea3f18319116fc6320b90617844a40f35ce842 | |
| parent | 40e219165bcdf450cc69976fa129f2ef9889973a (diff) | |
| download | olio-uboot-2014.01-025421eab453fd41a3cc14a0fc48115b0dc4c287.tar.xz olio-uboot-2014.01-025421eab453fd41a3cc14a0fc48115b0dc4c287.zip | |
fat: replace LINEAR_PREFETCH_SIZE with PREFETCH_BLOCKS
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>
| -rw-r--r-- | fs/fat/fat.c | 9 | ||||
| -rw-r--r-- | include/fat.h | 2 | 
2 files changed, 5 insertions, 6 deletions
| diff --git a/fs/fat/fat.c b/fs/fat/fat.c index aa0be18b8..756ac64a8 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -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; diff --git a/include/fat.h b/include/fat.h index c2465d2d3..15dbf1094 100644 --- a/include/fat.h +++ b/include/fat.h @@ -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)) |