Deepa Dinamani deepa.kernel@gmail.com writes:
At least, it is wrong to call fat_time_fat2unix() before setup parameters in sbi.
All the parameters that fat_time_fat2unix() cares in sbi is accessed through
static inline int fat_tz_offset(struct msdos_sb_info *sbi) { return (sbi->options.tz_set ? -sbi->options.time_offset : sys_tz.tz_minuteswest) * SECS_PER_MIN; }
Both the sbi fields sbi->options.tz_set and sbi->options.time_offset are set by the call to parse_options(). And, parse_options() is called before the calls to fat_time_fat2unix().:
int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat, void (*setup)(struct super_block *)) { <snip>
error = parse_options(sb, data, isvfat, silent, &debug, &sbi->options); if (error) goto out_fail;
<snip>
sbi->prev_free = FAT_START_ENT; sb->s_maxbytes = 0xffffffff; fat_time_fat2unix(sbi, &ts, 0, cpu_to_le16(FAT_DATE_MIN), 0); sb->s_time_min = ts.tv_sec; fat_time_fat2unix(sbi, &ts, cpu_to_le16(FAT_TIME_MAX), cpu_to_le16(FAT_DATE_MAX), 0); sb->s_time_max = ts.tv_sec;
<snip> }
I do not see what the problem is.
Ouch, you are right. I was reading that patch wrongly, sorry.
Thanks.