udf: Factor out trimming of crtime
authorFabian Frederick <fabf@skynet.be>
Fri, 6 Jan 2017 20:53:54 +0000 (21:53 +0100)
committerJan Kara <jack@suse.cz>
Tue, 10 Jan 2017 10:49:01 +0000 (11:49 +0100)
Factor out trimming of crtime field.

Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/inode.c

index ea8f544df5b83427b9fba3ccce48ab6999faca71..8cc5dbccebc742d910112e0df66eb8b2d4f5acb7 100644 (file)
@@ -1612,6 +1612,14 @@ static int udf_sync_inode(struct inode *inode)
        return udf_update_inode(inode, 1);
 }
 
        return udf_update_inode(inode, 1);
 }
 
+static void udf_adjust_time(struct udf_inode_info *iinfo, struct timespec time)
+{
+       if (iinfo->i_crtime.tv_sec > time.tv_sec ||
+           (iinfo->i_crtime.tv_sec == time.tv_sec &&
+            iinfo->i_crtime.tv_nsec > time.tv_nsec))
+               iinfo->i_crtime = time;
+}
+
 static int udf_update_inode(struct inode *inode, int do_sync)
 {
        struct buffer_head *bh = NULL;
 static int udf_update_inode(struct inode *inode, int do_sync)
 {
        struct buffer_head *bh = NULL;
@@ -1738,20 +1746,9 @@ static int udf_update_inode(struct inode *inode, int do_sync)
                efe->objectSize = cpu_to_le64(inode->i_size);
                efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded);
 
                efe->objectSize = cpu_to_le64(inode->i_size);
                efe->logicalBlocksRecorded = cpu_to_le64(lb_recorded);
 
-               if (iinfo->i_crtime.tv_sec > inode->i_atime.tv_sec ||
-                   (iinfo->i_crtime.tv_sec == inode->i_atime.tv_sec &&
-                    iinfo->i_crtime.tv_nsec > inode->i_atime.tv_nsec))
-                       iinfo->i_crtime = inode->i_atime;
-
-               if (iinfo->i_crtime.tv_sec > inode->i_mtime.tv_sec ||
-                   (iinfo->i_crtime.tv_sec == inode->i_mtime.tv_sec &&
-                    iinfo->i_crtime.tv_nsec > inode->i_mtime.tv_nsec))
-                       iinfo->i_crtime = inode->i_mtime;
-
-               if (iinfo->i_crtime.tv_sec > inode->i_ctime.tv_sec ||
-                   (iinfo->i_crtime.tv_sec == inode->i_ctime.tv_sec &&
-                    iinfo->i_crtime.tv_nsec > inode->i_ctime.tv_nsec))
-                       iinfo->i_crtime = inode->i_ctime;
+               udf_adjust_time(iinfo, inode->i_atime);
+               udf_adjust_time(iinfo, inode->i_mtime);
+               udf_adjust_time(iinfo, inode->i_ctime);
 
                udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime);
                udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime);
 
                udf_time_to_disk_stamp(&efe->accessTime, inode->i_atime);
                udf_time_to_disk_stamp(&efe->modificationTime, inode->i_mtime);