diff options
| -rw-r--r-- | fs/udf/inode.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/fs/udf/inode.c b/fs/udf/inode.c index ea8f544df5b8..8cc5dbccebc7 100644 --- a/fs/udf/inode.c +++ b/fs/udf/inode.c | |||
| @@ -1612,6 +1612,14 @@ static int udf_sync_inode(struct inode *inode) | |||
| 1612 | return udf_update_inode(inode, 1); | 1612 | return udf_update_inode(inode, 1); |
| 1613 | } | 1613 | } |
| 1614 | 1614 | ||
| 1615 | static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec time) | ||
| 1616 | { | ||
| 1617 | if (iinfo->i_crtime.tv_sec > time.tv_sec || | ||
| 1618 | (iinfo->i_crtime.tv_sec == time.tv_sec && | ||
| 1619 | iinfo->i_crtime.tv_nsec > time.tv_nsec)) | ||
| 1620 | iinfo->i_crtime = time; | ||
| 1621 | } | ||
| 1622 | |||
| 1615 | static int udf_update_inode(struct inode *inode, int do_sync) | 1623 | static int udf_update_inode(struct inode *inode, int do_sync) |
| 1616 | { | 1624 | { |
| 1617 | struct buffer_head *bh = NULL; | 1625 | struct buffer_head *bh = NULL; |
| @@ -1738,20 +1746,9 @@ static int udf_update_inode(struct inode *inode, int do_sync) | |||
| 1738 | efe->objectSize = cpu_to_le64(inode->i_size); | 1746 | efe->objectSize = cpu_to_le64(inode->i_size); |
| 1739 | efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); | 1747 | efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded); |
| 1740 | 1748 | ||
| 1741 | if (iinfo->i_crtime.tv_sec > inode->i_atime.tv_sec || | 1749 | udf_adjust_time(iinfo, inode->i_atime); |
| 1742 | (iinfo->i_crtime.tv_sec == inode->i_atime.tv_sec && | 1750 | udf_adjust_time(iinfo, inode->i_mtime); |
| 1743 | iinfo->i_crtime.tv_nsec > inode->i_atime.tv_nsec)) | 1751 | udf_adjust_time(iinfo, inode->i_ctime); |
| 1744 | iinfo->i_crtime = inode->i_atime; | ||
| 1745 | |||
| 1746 | if (iinfo->i_crtime.tv_sec > inode->i_mtime.tv_sec || | ||
| 1747 | (iinfo->i_crtime.tv_sec == inode->i_mtime.tv_sec && | ||
| 1748 | iinfo->i_crtime.tv_nsec > inode->i_mtime.tv_nsec)) | ||
| 1749 | iinfo->i_crtime = inode->i_mtime; | ||
| 1750 | |||
| 1751 | if (iinfo->i_crtime.tv_sec > inode->i_ctime.tv_sec || | ||
| 1752 | (iinfo->i_crtime.tv_sec == inode->i_ctime.tv_sec && | ||
| 1753 | iinfo->i_crtime.tv_nsec > inode->i_ctime.tv_nsec)) | ||
| 1754 | iinfo->i_crtime = inode->i_ctime; | ||
| 1755 | 1752 | ||
| 1756 | udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime); | 1753 | udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime); |
| 1757 | udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime); | 1754 | udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime); |
