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

Merge tag 'for_v4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs

Pull UDF and ext2 update from Jan Kara.

* tag 'for_v4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
ext2: use ktime_get_real_seconds for timestamps
udf: convert inode stamps to timespec64

+33 -45
+1 -1
fs/ext2/inode.c
··· 86 86 if (want_delete) { 87 87 sb_start_intwrite(inode->i_sb); 88 88 /* set dtime */ 89 - EXT2_I(inode)->i_dtime = get_seconds(); 89 + EXT2_I(inode)->i_dtime = ktime_get_real_seconds(); 90 90 mark_inode_dirty(inode); 91 91 __ext2_write_inode(inode, inode_needs_sync(inode)); 92 92 /* truncate to 0 */
+4 -3
fs/ext2/super.c
··· 682 682 "running e2fsck is recommended"); 683 683 else if (le32_to_cpu(es->s_checkinterval) && 684 684 (le32_to_cpu(es->s_lastcheck) + 685 - le32_to_cpu(es->s_checkinterval) <= get_seconds())) 685 + le32_to_cpu(es->s_checkinterval) <= 686 + ktime_get_real_seconds())) 686 687 ext2_msg(sb, KERN_WARNING, 687 688 "warning: checktime reached, " 688 689 "running e2fsck is recommended"); ··· 1249 1248 spin_lock(&EXT2_SB(sb)->s_lock); 1250 1249 es->s_free_blocks_count = cpu_to_le32(ext2_count_free_blocks(sb)); 1251 1250 es->s_free_inodes_count = cpu_to_le32(ext2_count_free_inodes(sb)); 1252 - es->s_wtime = cpu_to_le32(get_seconds()); 1251 + es->s_wtime = cpu_to_le32(ktime_get_real_seconds()); 1253 1252 /* unlock before we do IO */ 1254 1253 spin_unlock(&EXT2_SB(sb)->s_lock); 1255 1254 mark_buffer_dirty(EXT2_SB(sb)->s_sbh); ··· 1361 1360 * the rdonly flag and then mark the partition as valid again. 1362 1361 */ 1363 1362 es->s_state = cpu_to_le16(sbi->s_mount_state); 1364 - es->s_mtime = cpu_to_le32(get_seconds()); 1363 + es->s_mtime = cpu_to_le32(ktime_get_real_seconds()); 1365 1364 spin_unlock(&sbi->s_lock); 1366 1365 1367 1366 err = dquot_suspend(sb, -1);
+1 -1
fs/udf/ialloc.c
··· 125 125 else 126 126 iinfo->i_alloc_type = ICBTAG_FLAG_AD_LONG; 127 127 inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode); 128 - iinfo->i_crtime = timespec64_to_timespec(inode->i_mtime); 128 + iinfo->i_crtime = inode->i_mtime; 129 129 if (unlikely(insert_inode_locked(inode) < 0)) { 130 130 make_bad_inode(inode); 131 131 iput(inode);
+16 -29
fs/udf/inode.c
··· 1270 1270 struct udf_inode_info *iinfo = UDF_I(inode); 1271 1271 struct udf_sb_info *sbi = UDF_SB(inode->i_sb); 1272 1272 struct kernel_lb_addr *iloc = &iinfo->i_location; 1273 - struct timespec ts; 1274 1273 unsigned int link_count; 1275 1274 unsigned int indirections = 0; 1276 1275 int bs = inode->i_sb->s_blocksize; ··· 1442 1443 inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) << 1443 1444 (inode->i_sb->s_blocksize_bits - 9); 1444 1445 1445 - udf_disk_stamp_to_time(&ts, fe->accessTime); 1446 - inode->i_atime = timespec_to_timespec64(ts); 1447 - udf_disk_stamp_to_time(&ts, fe->modificationTime); 1448 - inode->i_mtime = timespec_to_timespec64(ts); 1449 - udf_disk_stamp_to_time(&ts, fe->attrTime); 1450 - inode->i_ctime = timespec_to_timespec64(ts); 1446 + udf_disk_stamp_to_time(&inode->i_atime, fe->accessTime); 1447 + udf_disk_stamp_to_time(&inode->i_mtime, fe->modificationTime); 1448 + udf_disk_stamp_to_time(&inode->i_ctime, fe->attrTime); 1451 1449 1452 1450 iinfo->i_unique = le64_to_cpu(fe->uniqueID); 1453 1451 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); ··· 1454 1458 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) << 1455 1459 (inode->i_sb->s_blocksize_bits - 9); 1456 1460 1457 - udf_disk_stamp_to_time(&ts, efe->accessTime); 1458 - inode->i_atime = timespec_to_timespec64(ts); 1459 - udf_disk_stamp_to_time(&ts, efe->modificationTime); 1460 - inode->i_mtime = timespec_to_timespec64(ts); 1461 + udf_disk_stamp_to_time(&inode->i_atime, efe->accessTime); 1462 + udf_disk_stamp_to_time(&inode->i_mtime, efe->modificationTime); 1461 1463 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime); 1462 - udf_disk_stamp_to_time(&ts, efe->attrTime); 1463 - inode->i_ctime = timespec_to_timespec64(ts); 1464 + udf_disk_stamp_to_time(&inode->i_ctime, efe->attrTime); 1464 1465 1465 1466 iinfo->i_unique = le64_to_cpu(efe->uniqueID); 1466 1467 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); ··· 1594 1601 return udf_update_inode(inode, 1); 1595 1602 } 1596 1603 1597 - static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec time) 1604 + static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec64 time) 1598 1605 { 1599 1606 if (iinfo->i_crtime.tv_sec > time.tv_sec || 1600 1607 (iinfo->i_crtime.tv_sec == time.tv_sec && ··· 1707 1714 inode->i_sb->s_blocksize - sizeof(struct fileEntry)); 1708 1715 fe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); 1709 1716 1710 - udf_time_to_disk_stamp(&fe->accessTime, 1711 - timespec64_to_timespec(inode->i_atime)); 1712 - udf_time_to_disk_stamp(&fe->modificationTime, 1713 - timespec64_to_timespec(inode->i_mtime)); 1714 - udf_time_to_disk_stamp(&fe->attrTime, 1715 - timespec64_to_timespec(inode->i_ctime)); 1717 + udf_time_to_disk_stamp(&fe->accessTime, inode->i_atime); 1718 + udf_time_to_disk_stamp(&fe->modificationTime, inode->i_mtime); 1719 + udf_time_to_disk_stamp(&fe->attrTime, inode->i_ctime); 1716 1720 memset(&(fe->impIdent), 0, sizeof(struct regid)); 1717 1721 strcpy(fe->impIdent.ident, UDF_ID_DEVELOPER); 1718 1722 fe->impIdent.identSuffix[0] = UDF_OS_CLASS_UNIX; ··· 1728 1738 efe->objectSize = cpu_to_le64(inode->i_size); 1729 1739 efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); 1730 1740 1731 - udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_atime)); 1732 - udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_mtime)); 1733 - udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_ctime)); 1741 + udf_adjust_time(iinfo, inode->i_atime); 1742 + udf_adjust_time(iinfo, inode->i_mtime); 1743 + udf_adjust_time(iinfo, inode->i_ctime); 1734 1744 1735 - udf_time_to_disk_stamp(&efe->accessTime, 1736 - timespec64_to_timespec(inode->i_atime)); 1737 - udf_time_to_disk_stamp(&efe->modificationTime, 1738 - timespec64_to_timespec(inode->i_mtime)); 1745 + udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime); 1746 + udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime); 1739 1747 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime); 1740 - udf_time_to_disk_stamp(&efe->attrTime, 1741 - timespec64_to_timespec(inode->i_ctime)); 1748 + udf_time_to_disk_stamp(&efe->attrTime, inode->i_ctime); 1742 1749 1743 1750 memset(&(efe->impIdent), 0, sizeof(efe->impIdent)); 1744 1751 strcpy(efe->impIdent.ident, UDF_ID_DEVELOPER);
+4 -4
fs/udf/super.c
··· 1980 1980 struct buffer_head *bh = sbi->s_lvid_bh; 1981 1981 struct logicalVolIntegrityDesc *lvid; 1982 1982 struct logicalVolIntegrityDescImpUse *lvidiu; 1983 - struct timespec ts; 1983 + struct timespec64 ts; 1984 1984 1985 1985 if (!bh) 1986 1986 return; ··· 1992 1992 mutex_lock(&sbi->s_alloc_mutex); 1993 1993 lvidiu->impIdent.identSuffix[0] = UDF_OS_CLASS_UNIX; 1994 1994 lvidiu->impIdent.identSuffix[1] = UDF_OS_ID_LINUX; 1995 - ktime_get_real_ts(&ts); 1995 + ktime_get_real_ts64(&ts); 1996 1996 udf_time_to_disk_stamp(&lvid->recordingDateAndTime, ts); 1997 1997 if (le32_to_cpu(lvid->integrityType) == LVID_INTEGRITY_TYPE_CLOSE) 1998 1998 lvid->integrityType = cpu_to_le32(LVID_INTEGRITY_TYPE_OPEN); ··· 2017 2017 struct buffer_head *bh = sbi->s_lvid_bh; 2018 2018 struct logicalVolIntegrityDesc *lvid; 2019 2019 struct logicalVolIntegrityDescImpUse *lvidiu; 2020 - struct timespec ts; 2020 + struct timespec64 ts; 2021 2021 2022 2022 if (!bh) 2023 2023 return; ··· 2029 2029 mutex_lock(&sbi->s_alloc_mutex); 2030 2030 lvidiu->impIdent.identSuffix[0] = UDF_OS_CLASS_UNIX; 2031 2031 lvidiu->impIdent.identSuffix[1] = UDF_OS_ID_LINUX; 2032 - ktime_get_real_ts(&ts); 2032 + ktime_get_real_ts64(&ts); 2033 2033 udf_time_to_disk_stamp(&lvid->recordingDateAndTime, ts); 2034 2034 if (UDF_MAX_WRITE_VERSION > le16_to_cpu(lvidiu->maxUDFWriteRev)) 2035 2035 lvidiu->maxUDFWriteRev = cpu_to_le16(UDF_MAX_WRITE_VERSION);
+1 -1
fs/udf/udf_i.h
··· 28 28 */ 29 29 30 30 struct udf_inode_info { 31 - struct timespec i_crtime; 31 + struct timespec64 i_crtime; 32 32 /* Physical address of inode */ 33 33 struct kernel_lb_addr i_location; 34 34 __u64 i_unique;
+1 -1
fs/udf/udf_sb.h
··· 138 138 rwlock_t s_cred_lock; 139 139 140 140 /* Root Info */ 141 - struct timespec s_record_time; 141 + struct timespec64 s_record_time; 142 142 143 143 /* Fileset Info */ 144 144 __u16 s_serial_number;
+2 -2
fs/udf/udfdecl.h
··· 258 258 extern struct short_ad *udf_get_fileshortad(uint8_t *, int, uint32_t *, int); 259 259 260 260 /* udftime.c */ 261 - extern void udf_disk_stamp_to_time(struct timespec *dest, 261 + extern void udf_disk_stamp_to_time(struct timespec64 *dest, 262 262 struct timestamp src); 263 - extern void udf_time_to_disk_stamp(struct timestamp *dest, struct timespec src); 263 + extern void udf_time_to_disk_stamp(struct timestamp *dest, struct timespec64 src); 264 264 265 265 #endif /* __UDF_DECL_H */
+3 -3
fs/udf/udftime.c
··· 41 41 #include <linux/time.h> 42 42 43 43 void 44 - udf_disk_stamp_to_time(struct timespec *dest, struct timestamp src) 44 + udf_disk_stamp_to_time(struct timespec64 *dest, struct timestamp src) 45 45 { 46 46 u16 typeAndTimezone = le16_to_cpu(src.typeAndTimezone); 47 47 u16 year = le16_to_cpu(src.year); ··· 70 70 } 71 71 72 72 void 73 - udf_time_to_disk_stamp(struct timestamp *dest, struct timespec ts) 73 + udf_time_to_disk_stamp(struct timestamp *dest, struct timespec64 ts) 74 74 { 75 - long seconds; 75 + time64_t seconds; 76 76 int16_t offset; 77 77 struct tm tm; 78 78