summaryrefslogtreecommitdiffstats
path: root/fs/udf/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/udf/inode.c')
-rw-r--r--fs/udf/inode.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index df2378d6ebb4..7f39d17352c9 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1271,6 +1271,7 @@ static int udf_read_inode(struct inode *inode, bool hidden_inode)
1271 struct udf_inode_info *iinfo = UDF_I(inode); 1271 struct udf_inode_info *iinfo = UDF_I(inode);
1272 struct udf_sb_info *sbi = UDF_SB(inode->i_sb); 1272 struct udf_sb_info *sbi = UDF_SB(inode->i_sb);
1273 struct kernel_lb_addr *iloc = &iinfo->i_location; 1273 struct kernel_lb_addr *iloc = &iinfo->i_location;
1274 struct timespec ts;
1274 unsigned int link_count; 1275 unsigned int link_count;
1275 unsigned int indirections = 0; 1276 unsigned int indirections = 0;
1276 int bs = inode->i_sb->s_blocksize; 1277 int bs = inode->i_sb->s_blocksize;
@@ -1443,9 +1444,12 @@ reread:
1443 inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) << 1444 inode->i_blocks = le64_to_cpu(fe->logicalBlocksRecorded) <<
1444 (inode->i_sb->s_blocksize_bits - 9); 1445 (inode->i_sb->s_blocksize_bits - 9);
1445 1446
1446 udf_disk_stamp_to_time(&inode->i_atime, fe->accessTime); 1447 udf_disk_stamp_to_time(&ts, fe->accessTime);
1447 udf_disk_stamp_to_time(&inode->i_mtime, fe->modificationTime); 1448 inode->i_atime = timespec_to_timespec64(ts);
1448 udf_disk_stamp_to_time(&inode->i_ctime, fe->attrTime); 1449 udf_disk_stamp_to_time(&ts, fe->modificationTime);
1450 inode->i_mtime = timespec_to_timespec64(ts);
1451 udf_disk_stamp_to_time(&ts, fe->attrTime);
1452 inode->i_ctime = timespec_to_timespec64(ts);
1449 1453
1450 iinfo->i_unique = le64_to_cpu(fe->uniqueID); 1454 iinfo->i_unique = le64_to_cpu(fe->uniqueID);
1451 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr); 1455 iinfo->i_lenEAttr = le32_to_cpu(fe->lengthExtendedAttr);
@@ -1455,10 +1459,13 @@ reread:
1455 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) << 1459 inode->i_blocks = le64_to_cpu(efe->logicalBlocksRecorded) <<
1456 (inode->i_sb->s_blocksize_bits - 9); 1460 (inode->i_sb->s_blocksize_bits - 9);
1457 1461
1458 udf_disk_stamp_to_time(&inode->i_atime, efe->accessTime); 1462 udf_disk_stamp_to_time(&ts, efe->accessTime);
1459 udf_disk_stamp_to_time(&inode->i_mtime, efe->modificationTime); 1463 inode->i_atime = timespec_to_timespec64(ts);
1464 udf_disk_stamp_to_time(&ts, efe->modificationTime);
1465 inode->i_mtime = timespec_to_timespec64(ts);
1460 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime); 1466 udf_disk_stamp_to_time(&iinfo->i_crtime, efe->createTime);
1461 udf_disk_stamp_to_time(&inode->i_ctime, efe->attrTime); 1467 udf_disk_stamp_to_time(&ts, efe->attrTime);
1468 inode->i_ctime = timespec_to_timespec64(ts);
1462 1469
1463 iinfo->i_unique = le64_to_cpu(efe->uniqueID); 1470 iinfo->i_unique = le64_to_cpu(efe->uniqueID);
1464 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr); 1471 iinfo->i_lenEAttr = le32_to_cpu(efe->lengthExtendedAttr);
@@ -1708,9 +1715,12 @@ static int udf_update_inode(struct inode *inode, int do_sync)
1708 inode->i_sb->s_blocksize - sizeof(struct fileEntry)); 1715 inode->i_sb->s_blocksize - sizeof(struct fileEntry));
1709 fe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); 1716 fe->logicalBlocksRecorded = cpu_to_le64(lb_recorded);
1710 1717
1711 udf_time_to_disk_stamp(&fe->accessTime, inode->i_atime); 1718 udf_time_to_disk_stamp(&fe->accessTime,
1712 udf_time_to_disk_stamp(&fe->modificationTime, inode->i_mtime); 1719 timespec64_to_timespec(inode->i_atime));
1713 udf_time_to_disk_stamp(&fe->attrTime, inode->i_ctime); 1720 udf_time_to_disk_stamp(&fe->modificationTime,
1721 timespec64_to_timespec(inode->i_mtime));
1722 udf_time_to_disk_stamp(&fe->attrTime,
1723 timespec64_to_timespec(inode->i_ctime));
1714 memset(&(fe->impIdent), 0, sizeof(struct regid)); 1724 memset(&(fe->impIdent), 0, sizeof(struct regid));
1715 strcpy(fe->impIdent.ident, UDF_ID_DEVELOPER); 1725 strcpy(fe->impIdent.ident, UDF_ID_DEVELOPER);
1716 fe->impIdent.identSuffix[0] = UDF_OS_CLASS_UNIX; 1726 fe->impIdent.identSuffix[0] = UDF_OS_CLASS_UNIX;
@@ -1729,14 +1739,17 @@ static int udf_update_inode(struct inode *inode, int do_sync)
1729 efe->objectSize = cpu_to_le64(inode->i_size); 1739 efe->objectSize = cpu_to_le64(inode->i_size);
1730 efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); 1740 efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded);
1731 1741
1732 udf_adjust_time(iinfo, inode->i_atime); 1742 udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_atime));
1733 udf_adjust_time(iinfo, inode->i_mtime); 1743 udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_mtime));
1734 udf_adjust_time(iinfo, inode->i_ctime); 1744 udf_adjust_time(iinfo, timespec64_to_timespec(inode->i_ctime));
1735 1745
1736 udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime); 1746 udf_time_to_disk_stamp(&efe->accessTime,
1737 udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime); 1747 timespec64_to_timespec(inode->i_atime));
1748 udf_time_to_disk_stamp(&efe->modificationTime,
1749 timespec64_to_timespec(inode->i_mtime));
1738 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime); 1750 udf_time_to_disk_stamp(&efe->createTime, iinfo->i_crtime);
1739 udf_time_to_disk_stamp(&efe->attrTime, inode->i_ctime); 1751 udf_time_to_disk_stamp(&efe->attrTime,
1752 timespec64_to_timespec(inode->i_ctime));
1740 1753
1741 memset(&(efe->impIdent), 0, sizeof(efe->impIdent)); 1754 memset(&(efe->impIdent), 0, sizeof(efe->impIdent));
1742 strcpy(efe->impIdent.ident, UDF_ID_DEVELOPER); 1755 strcpy(efe->impIdent.ident, UDF_ID_DEVELOPER);