mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-06 05:06:13 +02:00
fs: fat: Refactor dirty flag handling
Refactor the dirty flag handling a little bit so an inline function is called instead of directly stuffing a value into the variable. This allows variable that holds the flag to be completely removed if its not used i.e. CONFIG_FAT_WIRTE=n Signed-off-by: Daniel Palmer <daniel@thingy.jp>
This commit is contained in:
parent
ce98d46395
commit
29cb951e8c
@ -832,7 +832,7 @@ static int get_fs_info(fsdata *mydata)
|
||||
}
|
||||
|
||||
mydata->fatbufnum = -1;
|
||||
mydata->fat_dirty = 0;
|
||||
fat_mark_clean(mydata);
|
||||
mydata->fatbuf = malloc_cache_aligned(FATBUFSIZE);
|
||||
if (mydata->fatbuf == NULL) {
|
||||
debug("Error: allocating memory\n");
|
||||
|
||||
@ -225,9 +225,9 @@ static int flush_dirty_fat_buffer(fsdata *mydata)
|
||||
__u32 startblock = mydata->fatbufnum * FATBUFBLOCKS;
|
||||
|
||||
debug("debug: evicting %d, dirty: %d\n", mydata->fatbufnum,
|
||||
(int)mydata->fat_dirty);
|
||||
(int)fat_is_dirty(mydata));
|
||||
|
||||
if ((!mydata->fat_dirty) || (mydata->fatbufnum == -1))
|
||||
if (!fat_is_dirty(mydata) || (mydata->fatbufnum == -1))
|
||||
return 0;
|
||||
|
||||
/* Cap length if fatlength is not a multiple of FATBUFBLOCKS */
|
||||
@ -250,7 +250,7 @@ static int flush_dirty_fat_buffer(fsdata *mydata)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
mydata->fat_dirty = 0;
|
||||
fat_mark_clean(mydata);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -486,8 +486,7 @@ static int set_fatent_value(fsdata *mydata, __u32 entry, __u32 entry_value)
|
||||
mydata->fatbufnum = bufnum;
|
||||
}
|
||||
|
||||
/* Mark as dirty */
|
||||
mydata->fat_dirty = 1;
|
||||
fat_mark_dirty(mydata);
|
||||
|
||||
/* Set the actual entry */
|
||||
switch (mydata->fatsize) {
|
||||
|
||||
@ -165,7 +165,9 @@ typedef struct {
|
||||
int fatsize; /* Size of FAT in bits */
|
||||
__u32 fatlength; /* Length of FAT in sectors */
|
||||
__u16 fat_sect; /* Starting sector of the FAT */
|
||||
#ifdef CONFIG_FAT_WRITE
|
||||
__u8 fat_dirty; /* Set if fatbuf has been modified */
|
||||
#endif
|
||||
__u32 rootdir_sect; /* Start sector of root directory */
|
||||
__u16 sect_size; /* Size of sectors in bytes */
|
||||
__u16 clust_size; /* Size of clusters in sectors */
|
||||
@ -190,6 +192,30 @@ static inline u32 sect_to_clust(fsdata *fsdata, int sect)
|
||||
return (sect - fsdata->data_begin) / fsdata->clust_size;
|
||||
}
|
||||
|
||||
static inline void fat_mark_clean(fsdata *fsdata)
|
||||
{
|
||||
#ifdef CONFIG_FAT_WRITE
|
||||
fsdata->fat_dirty = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void fat_mark_dirty(fsdata *fsdata)
|
||||
{
|
||||
#ifdef CONFIG_FAT_WRITE
|
||||
fsdata->fat_dirty = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool fat_is_dirty(fsdata *fsdata)
|
||||
{
|
||||
#ifdef CONFIG_FAT_WRITE
|
||||
if (fsdata->fat_dirty)
|
||||
return true;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int file_fat_detectfs(void);
|
||||
int fat_exists(const char *filename);
|
||||
int fat_size(const char *filename, loff_t *size);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user