diff options
Diffstat (limited to 'fs/ntfs')
-rw-r--r-- | fs/ntfs/file.c | 2 | ||||
-rw-r--r-- | fs/ntfs/inode.c | 20 |
2 files changed, 20 insertions, 2 deletions
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c index 30f71acdc1cb..fb413d3d8618 100644 --- a/fs/ntfs/file.c +++ b/fs/ntfs/file.c | |||
@@ -2173,7 +2173,7 @@ static ssize_t ntfs_file_aio_write_nolock(struct kiocb *iocb, | |||
2173 | err = remove_suid(file->f_dentry); | 2173 | err = remove_suid(file->f_dentry); |
2174 | if (err) | 2174 | if (err) |
2175 | goto out; | 2175 | goto out; |
2176 | inode_update_time(inode, 1); | 2176 | file_update_time(file); |
2177 | written = ntfs_file_buffered_write(iocb, iov, nr_segs, pos, ppos, | 2177 | written = ntfs_file_buffered_write(iocb, iov, nr_segs, pos, ppos, |
2178 | count); | 2178 | count); |
2179 | out: | 2179 | out: |
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c index bda7a08911a5..ea1bd3feea1b 100644 --- a/fs/ntfs/inode.c +++ b/fs/ntfs/inode.c | |||
@@ -2767,7 +2767,25 @@ unm_done: | |||
2767 | up_write(&ni->runlist.lock); | 2767 | up_write(&ni->runlist.lock); |
2768 | done: | 2768 | done: |
2769 | /* Update the mtime and ctime on the base inode. */ | 2769 | /* Update the mtime and ctime on the base inode. */ |
2770 | inode_update_time(VFS_I(base_ni), 1); | 2770 | /* normally ->truncate shouldn't update ctime or mtime, |
2771 | * but ntfs did before so it got a copy & paste version | ||
2772 | * of file_update_time. one day someone should fix this | ||
2773 | * for real. | ||
2774 | */ | ||
2775 | if (!IS_NOCMTIME(VFS_I(base_ni)) && !IS_RDONLY(VFS_I(base_ni))) { | ||
2776 | struct timespec now = current_fs_time(VFS_I(base_ni)->i_sb); | ||
2777 | int sync_it = 0; | ||
2778 | |||
2779 | if (!timespec_equal(&VFS_I(base_ni)->i_mtime, &now) || | ||
2780 | !timespec_equal(&VFS_I(base_ni)->i_ctime, &now)) | ||
2781 | sync_it = 1; | ||
2782 | VFS_I(base_ni)->i_mtime = now; | ||
2783 | VFS_I(base_ni)->i_ctime = now; | ||
2784 | |||
2785 | if (sync_it) | ||
2786 | mark_inode_dirty_sync(VFS_I(base_ni)); | ||
2787 | } | ||
2788 | |||
2771 | if (likely(!err)) { | 2789 | if (likely(!err)) { |
2772 | NInoClearTruncateFailed(ni); | 2790 | NInoClearTruncateFailed(ni); |
2773 | ntfs_debug("Done."); | 2791 | ntfs_debug("Done."); |