dir->i_size++;
        if (S_ISDIR(inode->i_mode))
                hfsplus_subfolders_inc(dir);
-       dir->i_mtime = dir->i_ctime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        hfsplus_mark_inode_dirty(dir, HFSPLUS_I_CAT_DIRTY);
 
        hfs_find_exit(&fd);
        dir->i_size--;
        if (type == HFSPLUS_FOLDER)
                hfsplus_subfolders_dec(dir);
-       dir->i_mtime = dir->i_ctime = current_time(dir);
+       dir->i_mtime = inode_set_ctime_current(dir);
        hfsplus_mark_inode_dirty(dir, HFSPLUS_I_CAT_DIRTY);
 
        if (type == HFSPLUS_FILE || type == HFSPLUS_FOLDER) {
        dst_dir->i_size++;
        if (type == HFSPLUS_FOLDER)
                hfsplus_subfolders_inc(dst_dir);
-       dst_dir->i_mtime = dst_dir->i_ctime = current_time(dst_dir);
+       dst_dir->i_mtime = inode_set_ctime_current(dst_dir);
 
        /* finally remove the old entry */
        err = hfsplus_cat_build_key(sb, src_fd.search_key,
        src_dir->i_size--;
        if (type == HFSPLUS_FOLDER)
                hfsplus_subfolders_dec(src_dir);
-       src_dir->i_mtime = src_dir->i_ctime = current_time(src_dir);
+       src_dir->i_mtime = inode_set_ctime_current(src_dir);
 
        /* remove old thread entry */
        hfsplus_cat_build_key_with_cnid(sb, src_fd.search_key, cnid);
 
        inc_nlink(inode);
        hfsplus_instantiate(dst_dentry, inode, cnid);
        ihold(inode);
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        mark_inode_dirty(inode);
        sbi->file_count++;
        hfsplus_mark_mdb_dirty(dst_dir->i_sb);
                        hfsplus_delete_inode(inode);
        } else
                sbi->file_count--;
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        mark_inode_dirty(inode);
 out:
        mutex_unlock(&sbi->vh_mutex);
        if (res)
                goto out;
        clear_nlink(inode);
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        hfsplus_delete_inode(inode);
        mark_inode_dirty(inode);
 out:
 
                }
                truncate_setsize(inode, attr->ia_size);
                hfsplus_file_truncate(inode);
-               inode->i_mtime = inode->i_ctime = current_time(inode);
+               inode->i_mtime = inode_set_ctime_current(inode);
        }
 
        setattr_copy(&nop_mnt_idmap, inode, attr);
        inode->i_ino = sbi->next_cnid++;
        inode_init_owner(&nop_mnt_idmap, inode, dir, mode);
        set_nlink(inode, 1);
-       inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);
+       inode->i_mtime = inode->i_atime = inode_set_ctime_current(inode);
 
        hip = HFSPLUS_I(inode);
        INIT_LIST_HEAD(&hip->open_dir_list);
                inode->i_size = 2 + be32_to_cpu(folder->valence);
                inode->i_atime = hfsp_mt2ut(folder->access_date);
                inode->i_mtime = hfsp_mt2ut(folder->content_mod_date);
-               inode->i_ctime = hfsp_mt2ut(folder->attribute_mod_date);
+               inode_set_ctime_to_ts(inode,
+                                     hfsp_mt2ut(folder->attribute_mod_date));
                HFSPLUS_I(inode)->create_date = folder->create_date;
                HFSPLUS_I(inode)->fs_blocks = 0;
                if (folder->flags & cpu_to_be16(HFSPLUS_HAS_FOLDER_COUNT)) {
                }
                inode->i_atime = hfsp_mt2ut(file->access_date);
                inode->i_mtime = hfsp_mt2ut(file->content_mod_date);
-               inode->i_ctime = hfsp_mt2ut(file->attribute_mod_date);
+               inode_set_ctime_to_ts(inode,
+                                     hfsp_mt2ut(file->attribute_mod_date));
                HFSPLUS_I(inode)->create_date = file->create_date;
        } else {
                pr_err("bad catalog entry used to create inode\n");
                hfsplus_cat_set_perms(inode, &folder->permissions);
                folder->access_date = hfsp_ut2mt(inode->i_atime);
                folder->content_mod_date = hfsp_ut2mt(inode->i_mtime);
-               folder->attribute_mod_date = hfsp_ut2mt(inode->i_ctime);
+               folder->attribute_mod_date = hfsp_ut2mt(inode_get_ctime(inode));
                folder->valence = cpu_to_be32(inode->i_size - 2);
                if (folder->flags & cpu_to_be16(HFSPLUS_HAS_FOLDER_COUNT)) {
                        folder->subfolders =
                        file->flags &= cpu_to_be16(~HFSPLUS_FILE_LOCKED);
                file->access_date = hfsp_ut2mt(inode->i_atime);
                file->content_mod_date = hfsp_ut2mt(inode->i_mtime);
-               file->attribute_mod_date = hfsp_ut2mt(inode->i_ctime);
+               file->attribute_mod_date = hfsp_ut2mt(inode_get_ctime(inode));
                hfs_bnode_write(fd.bnode, &entry, fd.entryoffset,
                                         sizeof(struct hfsplus_cat_file));
        }
        else
                hip->userflags &= ~HFSPLUS_FLG_NODUMP;
 
-       inode->i_ctime = current_time(inode);
+       inode_set_ctime_current(inode);
        mark_inode_dirty(inode);
 
        return 0;