|
@@ -577,7 +577,7 @@ xlate_to_uni(const unsigned char *name, int len, unsigned char *outname,
|
|
|
|
|
|
static int vfat_build_slots(struct inode *dir, const unsigned char *name,
|
|
|
int len, int is_dir, int cluster,
|
|
|
- struct timespec *ts,
|
|
|
+ struct timespec64 *ts,
|
|
|
struct msdos_dir_slot *slots, int *nr_slots)
|
|
|
{
|
|
|
struct msdos_sb_info *sbi = MSDOS_SB(dir->i_sb);
|
|
@@ -653,7 +653,7 @@ out_free:
|
|
|
}
|
|
|
|
|
|
static int vfat_add_entry(struct inode *dir, const struct qstr *qname,
|
|
|
- int is_dir, int cluster, struct timespec *ts,
|
|
|
+ int is_dir, int cluster, struct timespec64 *ts,
|
|
|
struct fat_slot_info *sinfo)
|
|
|
{
|
|
|
struct msdos_dir_slot *slots;
|
|
@@ -678,7 +678,7 @@ static int vfat_add_entry(struct inode *dir, const struct qstr *qname,
|
|
|
goto cleanup;
|
|
|
|
|
|
/* update timestamp */
|
|
|
- dir->i_ctime = dir->i_mtime = dir->i_atime = timespec_to_timespec64(*ts);
|
|
|
+ dir->i_ctime = dir->i_mtime = dir->i_atime = *ts;
|
|
|
if (IS_DIRSYNC(dir))
|
|
|
(void)fat_sync_inode(dir);
|
|
|
else
|
|
@@ -762,14 +762,12 @@ static int vfat_create(struct inode *dir, struct dentry *dentry, umode_t mode,
|
|
|
struct inode *inode;
|
|
|
struct fat_slot_info sinfo;
|
|
|
struct timespec64 ts;
|
|
|
- struct timespec t;
|
|
|
int err;
|
|
|
|
|
|
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
|
|
|
|
|
ts = current_time(dir);
|
|
|
- t = timespec64_to_timespec(ts);
|
|
|
- err = vfat_add_entry(dir, &dentry->d_name, 0, 0, &t, &sinfo);
|
|
|
+ err = vfat_add_entry(dir, &dentry->d_name, 0, 0, &ts, &sinfo);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
inode_inc_iversion(dir);
|
|
@@ -853,19 +851,17 @@ static int vfat_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
|
|
|
struct inode *inode;
|
|
|
struct fat_slot_info sinfo;
|
|
|
struct timespec64 ts;
|
|
|
- struct timespec t;
|
|
|
int err, cluster;
|
|
|
|
|
|
mutex_lock(&MSDOS_SB(sb)->s_lock);
|
|
|
|
|
|
ts = current_time(dir);
|
|
|
- t = timespec64_to_timespec(ts);
|
|
|
- cluster = fat_alloc_new_dir(dir, &t);
|
|
|
+ cluster = fat_alloc_new_dir(dir, &ts);
|
|
|
if (cluster < 0) {
|
|
|
err = cluster;
|
|
|
goto out;
|
|
|
}
|
|
|
- err = vfat_add_entry(dir, &dentry->d_name, 1, cluster, &t, &sinfo);
|
|
|
+ err = vfat_add_entry(dir, &dentry->d_name, 1, cluster, &ts, &sinfo);
|
|
|
if (err)
|
|
|
goto out_free;
|
|
|
inode_inc_iversion(dir);
|
|
@@ -904,7 +900,6 @@ static int vfat_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
struct inode *old_inode, *new_inode;
|
|
|
struct fat_slot_info old_sinfo, sinfo;
|
|
|
struct timespec64 ts;
|
|
|
- struct timespec t;
|
|
|
loff_t new_i_pos;
|
|
|
int err, is_dir, update_dotdot, corrupt = 0;
|
|
|
struct super_block *sb = old_dir->i_sb;
|
|
@@ -939,9 +934,8 @@ static int vfat_rename(struct inode *old_dir, struct dentry *old_dentry,
|
|
|
new_i_pos = MSDOS_I(new_inode)->i_pos;
|
|
|
fat_detach(new_inode);
|
|
|
} else {
|
|
|
- t = timespec64_to_timespec(ts);
|
|
|
err = vfat_add_entry(new_dir, &new_dentry->d_name, is_dir, 0,
|
|
|
- &t, &sinfo);
|
|
|
+ &ts, &sinfo);
|
|
|
if (err)
|
|
|
goto out;
|
|
|
new_i_pos = sinfo.i_pos;
|