Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

exfat: convert to new timestamp accessors

Convert to using the new inode timestamp accessor functions.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/20231004185347.80880-31-jlayton@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>

authored by

Jeff Layton and committed by
Christian Brauner
4c72a36e 594370f7

+47 -35
+1
fs/exfat/exfat_fs.h
··· 549 549 void exfat_get_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts, 550 550 u8 tz, __le16 time, __le16 date, u8 time_cs); 551 551 void exfat_truncate_atime(struct timespec64 *ts); 552 + void exfat_truncate_inode_atime(struct inode *inode); 552 553 void exfat_set_entry_time(struct exfat_sb_info *sbi, struct timespec64 *ts, 553 554 u8 *tz, __le16 *time, __le16 *date, u8 *time_cs); 554 555 u16 exfat_calc_chksum16(void *data, int len, u16 chksum, int type);
+3 -4
fs/exfat/file.c
··· 22 22 if (err) 23 23 return err; 24 24 25 - inode->i_mtime = inode_set_ctime_current(inode); 25 + inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); 26 26 mark_inode_dirty(inode); 27 27 28 28 if (!IS_SYNC(inode)) ··· 290 290 } 291 291 292 292 if (attr->ia_valid & ATTR_SIZE) 293 - inode->i_mtime = inode_set_ctime_current(inode); 293 + inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); 294 294 295 - setattr_copy(&nop_mnt_idmap, inode, attr); 296 - exfat_truncate_atime(&inode->i_atime); 295 + exfat_truncate_inode_atime(inode); 297 296 298 297 if (attr->ia_valid & ATTR_SIZE) { 299 298 error = exfat_block_truncate_page(inode, attr->ia_size);
+17 -14
fs/exfat/inode.c
··· 26 26 struct exfat_sb_info *sbi = EXFAT_SB(sb); 27 27 struct exfat_inode_info *ei = EXFAT_I(inode); 28 28 bool is_dir = (ei->type == TYPE_DIR) ? true : false; 29 + struct timespec64 ts; 29 30 30 31 if (inode->i_ino == EXFAT_ROOT_INO) 31 32 return 0; ··· 56 55 &ep->dentry.file.create_time, 57 56 &ep->dentry.file.create_date, 58 57 &ep->dentry.file.create_time_cs); 59 - exfat_set_entry_time(sbi, &inode->i_mtime, 60 - &ep->dentry.file.modify_tz, 61 - &ep->dentry.file.modify_time, 62 - &ep->dentry.file.modify_date, 63 - &ep->dentry.file.modify_time_cs); 64 - exfat_set_entry_time(sbi, &inode->i_atime, 65 - &ep->dentry.file.access_tz, 66 - &ep->dentry.file.access_time, 67 - &ep->dentry.file.access_date, 68 - NULL); 58 + exfat_set_entry_time(sbi, &ts, 59 + &ep->dentry.file.modify_tz, 60 + &ep->dentry.file.modify_time, 61 + &ep->dentry.file.modify_date, 62 + &ep->dentry.file.modify_time_cs); 63 + inode_set_mtime_to_ts(inode, ts); 64 + exfat_set_entry_time(sbi, &ts, 65 + &ep->dentry.file.access_tz, 66 + &ep->dentry.file.access_time, 67 + &ep->dentry.file.access_date, 68 + NULL); 69 + inode_set_atime_to_ts(inode, ts); 69 70 70 71 /* File size should be zero if there is no cluster allocated */ 71 72 on_disk_size = i_size_read(inode); ··· 358 355 359 356 if (to > i_size_read(inode)) { 360 357 truncate_pagecache(inode, i_size_read(inode)); 361 - inode->i_mtime = inode_set_ctime_current(inode); 358 + inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); 362 359 exfat_truncate(inode); 363 360 } 364 361 } ··· 401 398 exfat_write_failed(mapping, pos+len); 402 399 403 400 if (!(err < 0) && !(ei->attr & ATTR_ARCHIVE)) { 404 - inode->i_mtime = inode_set_ctime_current(inode); 401 + inode_set_mtime_to_ts(inode, inode_set_ctime_current(inode)); 405 402 ei->attr |= ATTR_ARCHIVE; 406 403 mark_inode_dirty(inode); 407 404 } ··· 579 576 exfat_save_attr(inode, info->attr); 580 577 581 578 inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> 9; 582 - inode->i_mtime = info->mtime; 579 + inode_set_mtime_to_ts(inode, info->mtime); 583 580 inode_set_ctime_to_ts(inode, info->mtime); 584 581 ei->i_crtime = info->crtime; 585 - inode->i_atime = info->atime; 582 + inode_set_atime_to_ts(inode, info->atime); 586 583 587 584 return 0; 588 585 }
+8
fs/exfat/misc.c
··· 126 126 ts->tv_nsec = 0; 127 127 } 128 128 129 + void exfat_truncate_inode_atime(struct inode *inode) 130 + { 131 + struct timespec64 atime = inode_get_atime(inode); 132 + 133 + exfat_truncate_atime(&atime); 134 + inode_set_atime_to_ts(inode, atime); 135 + } 136 + 129 137 u16 exfat_calc_chksum16(void *data, int len, u16 chksum, int type) 130 138 { 131 139 int i;
+16 -15
fs/exfat/namei.c
··· 569 569 goto unlock; 570 570 571 571 inode_inc_iversion(dir); 572 - dir->i_mtime = inode_set_ctime_current(dir); 572 + inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir)); 573 573 if (IS_DIRSYNC(dir)) 574 574 exfat_sync_inode(dir); 575 575 else ··· 582 582 goto unlock; 583 583 584 584 inode_inc_iversion(inode); 585 - inode->i_mtime = inode->i_atime = EXFAT_I(inode)->i_crtime = inode_set_ctime_current(inode); 586 - exfat_truncate_atime(&inode->i_atime); 585 + EXFAT_I(inode)->i_crtime = simple_inode_init_ts(inode); 586 + exfat_truncate_inode_atime(inode); 587 + 587 588 /* timestamp is already written, so mark_inode_dirty() is unneeded. */ 588 589 589 590 d_instantiate(dentry, inode); ··· 817 816 ei->dir.dir = DIR_DELETED; 818 817 819 818 inode_inc_iversion(dir); 820 - dir->i_mtime = dir->i_atime = inode_set_ctime_current(dir); 821 - exfat_truncate_atime(&dir->i_atime); 819 + simple_inode_init_ts(dir); 820 + exfat_truncate_inode_atime(dir); 822 821 if (IS_DIRSYNC(dir)) 823 822 exfat_sync_inode(dir); 824 823 else 825 824 mark_inode_dirty(dir); 826 825 827 826 clear_nlink(inode); 828 - inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode); 829 - exfat_truncate_atime(&inode->i_atime); 827 + simple_inode_init_ts(inode); 828 + exfat_truncate_inode_atime(inode); 830 829 exfat_unhash_inode(inode); 831 830 exfat_d_version_set(dentry, inode_query_iversion(dir)); 832 831 unlock: ··· 852 851 goto unlock; 853 852 854 853 inode_inc_iversion(dir); 855 - dir->i_mtime = inode_set_ctime_current(dir); 854 + inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir)); 856 855 if (IS_DIRSYNC(dir)) 857 856 exfat_sync_inode(dir); 858 857 else ··· 866 865 goto unlock; 867 866 868 867 inode_inc_iversion(inode); 869 - inode->i_mtime = inode->i_atime = EXFAT_I(inode)->i_crtime = inode_set_ctime_current(inode); 870 - exfat_truncate_atime(&inode->i_atime); 868 + EXFAT_I(inode)->i_crtime = simple_inode_init_ts(inode); 869 + exfat_truncate_inode_atime(inode); 871 870 /* timestamp is already written, so mark_inode_dirty() is unneeded. */ 872 871 873 872 d_instantiate(dentry, inode); ··· 978 977 ei->dir.dir = DIR_DELETED; 979 978 980 979 inode_inc_iversion(dir); 981 - dir->i_mtime = dir->i_atime = inode_set_ctime_current(dir); 982 - exfat_truncate_atime(&dir->i_atime); 980 + simple_inode_init_ts(dir); 981 + exfat_truncate_inode_atime(dir); 983 982 if (IS_DIRSYNC(dir)) 984 983 exfat_sync_inode(dir); 985 984 else ··· 987 986 drop_nlink(dir); 988 987 989 988 clear_nlink(inode); 990 - inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode); 991 - exfat_truncate_atime(&inode->i_atime); 989 + simple_inode_init_ts(inode); 990 + exfat_truncate_inode_atime(inode); 992 991 exfat_unhash_inode(inode); 993 992 exfat_d_version_set(dentry, inode_query_iversion(dir)); 994 993 unlock: ··· 1313 1312 inode_inc_iversion(new_dir); 1314 1313 simple_rename_timestamp(old_dir, old_dentry, new_dir, new_dentry); 1315 1314 EXFAT_I(new_dir)->i_crtime = current_time(new_dir); 1316 - exfat_truncate_atime(&new_dir->i_atime); 1315 + exfat_truncate_inode_atime(new_dir); 1317 1316 if (IS_DIRSYNC(new_dir)) 1318 1317 exfat_sync_inode(new_dir); 1319 1318 else
+2 -2
fs/exfat/super.c
··· 370 370 ei->i_size_ondisk = i_size_read(inode); 371 371 372 372 exfat_save_attr(inode, ATTR_SUBDIR); 373 - inode->i_mtime = inode->i_atime = ei->i_crtime = inode_set_ctime_current(inode); 374 - exfat_truncate_atime(&inode->i_atime); 373 + ei->i_crtime = simple_inode_init_ts(inode); 374 + exfat_truncate_inode_atime(inode); 375 375 return 0; 376 376 } 377 377