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 <[email protected]> --- fs/fat/fat.c | 2 +- fs/fat/fat_write.c | 9 ++++----- include/fat.h | 26 ++++++++++++++++++++++++++ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 9ce5df59f9ba..1f05533a3781 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -690,7 +690,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"); diff --git a/fs/fat/fat_write.c b/fs/fat/fat_write.c index 0b924541187c..e1b5b32bfcbf 100644 --- a/fs/fat/fat_write.c +++ b/fs/fat/fat_write.c @@ -223,9 +223,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 */ @@ -248,7 +248,7 @@ static int flush_dirty_fat_buffer(fsdata *mydata) return -1; } } - mydata->fat_dirty = 0; + fat_mark_clean(mydata); return 0; } @@ -484,8 +484,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) { diff --git a/include/fat.h b/include/fat.h index bdf430f70675..40da0370a444 100644 --- a/include/fat.h +++ b/include/fat.h @@ -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); -- 2.51.0

