diff options
Diffstat (limited to 'fs/fat/dir.c')
-rw-r--r-- | fs/fat/dir.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/fat/dir.c b/fs/fat/dir.c index 08b23ad25f1c..a601c6d45bc0 100644 --- a/fs/fat/dir.c +++ b/fs/fat/dir.c | |||
@@ -1089,6 +1089,7 @@ int fat_alloc_new_dir(struct inode *dir, struct timespec *ts) | |||
1089 | struct msdos_dir_entry *de; | 1089 | struct msdos_dir_entry *de; |
1090 | sector_t blknr; | 1090 | sector_t blknr; |
1091 | __le16 date, time; | 1091 | __le16 date, time; |
1092 | u8 time_cs; | ||
1092 | int err, cluster; | 1093 | int err, cluster; |
1093 | 1094 | ||
1094 | err = fat_alloc_clusters(dir, &cluster, 1); | 1095 | err = fat_alloc_clusters(dir, &cluster, 1); |
@@ -1102,7 +1103,7 @@ int fat_alloc_new_dir(struct inode *dir, struct timespec *ts) | |||
1102 | goto error_free; | 1103 | goto error_free; |
1103 | } | 1104 | } |
1104 | 1105 | ||
1105 | fat_date_unix2dos(ts->tv_sec, &time, &date, sbi->options.tz_utc); | 1106 | fat_time_unix2fat(sbi, ts, &time, &date, &time_cs); |
1106 | 1107 | ||
1107 | de = (struct msdos_dir_entry *)bhs[0]->b_data; | 1108 | de = (struct msdos_dir_entry *)bhs[0]->b_data; |
1108 | /* filling the new directory slots ("." and ".." entries) */ | 1109 | /* filling the new directory slots ("." and ".." entries) */ |
@@ -1112,13 +1113,14 @@ int fat_alloc_new_dir(struct inode *dir, struct timespec *ts) | |||
1112 | de[0].lcase = de[1].lcase = 0; | 1113 | de[0].lcase = de[1].lcase = 0; |
1113 | de[0].time = de[1].time = time; | 1114 | de[0].time = de[1].time = time; |
1114 | de[0].date = de[1].date = date; | 1115 | de[0].date = de[1].date = date; |
1115 | de[0].ctime_cs = de[1].ctime_cs = 0; | ||
1116 | if (sbi->options.isvfat) { | 1116 | if (sbi->options.isvfat) { |
1117 | /* extra timestamps */ | 1117 | /* extra timestamps */ |
1118 | de[0].ctime = de[1].ctime = time; | 1118 | de[0].ctime = de[1].ctime = time; |
1119 | de[0].ctime_cs = de[1].ctime_cs = time_cs; | ||
1119 | de[0].adate = de[0].cdate = de[1].adate = de[1].cdate = date; | 1120 | de[0].adate = de[0].cdate = de[1].adate = de[1].cdate = date; |
1120 | } else { | 1121 | } else { |
1121 | de[0].ctime = de[1].ctime = 0; | 1122 | de[0].ctime = de[1].ctime = 0; |
1123 | de[0].ctime_cs = de[1].ctime_cs = 0; | ||
1122 | de[0].adate = de[0].cdate = de[1].adate = de[1].cdate = 0; | 1124 | de[0].adate = de[0].cdate = de[1].adate = de[1].cdate = 0; |
1123 | } | 1125 | } |
1124 | de[0].start = cpu_to_le16(cluster); | 1126 | de[0].start = cpu_to_le16(cluster); |