aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorAnton Altaparmakov <aia21@cantab.net>2005-09-08 16:15:09 -0400
committerAnton Altaparmakov <aia21@cantab.net>2005-09-08 16:15:09 -0400
commit1c7d469d47668f4664b892a6cd1c452a0c02d710 (patch)
treeb91793f34092eaa312d9f96bed80af8dfd19ad6f /fs
parentbbf1813fb8ff9d21171bf22e6d1f0e0393601e86 (diff)
NTFS: Truncate {a,c,m}time to the ntfs supported time granularity when
updating the times in the inode in ntfs_setattr(). Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
Diffstat (limited to 'fs')
-rw-r--r--fs/ntfs/ChangeLog2
-rw-r--r--fs/ntfs/inode.c12
2 files changed, 9 insertions, 5 deletions
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog
index beed90c9f551..9c5af9c8a8af 100644
--- a/fs/ntfs/ChangeLog
+++ b/fs/ntfs/ChangeLog
@@ -73,6 +73,8 @@ ToDo/Notes:
73 - Fix cluster (de)allocators to work when the runlist is NULL and more 73 - Fix cluster (de)allocators to work when the runlist is NULL and more
74 importantly to take a locked runlist rather than them locking it 74 importantly to take a locked runlist rather than them locking it
75 which leads to lock reversal. 75 which leads to lock reversal.
76 - Truncate {a,c,m}time to the ntfs supported time granularity when
77 updating the times in the inode in ntfs_setattr().
76 78
772.1.23 - Implement extension of resident files and make writing safe as well as 792.1.23 - Implement extension of resident files and make writing safe as well as
78 many bug fixes, cleanups, and enhancements... 80 many bug fixes, cleanups, and enhancements...
diff --git a/fs/ntfs/inode.c b/fs/ntfs/inode.c
index 886214a77f90..89d844f69244 100644
--- a/fs/ntfs/inode.c
+++ b/fs/ntfs/inode.c
@@ -2430,16 +2430,18 @@ int ntfs_setattr(struct dentry *dentry, struct iattr *attr)
2430 * We skipped the truncate but must still update 2430 * We skipped the truncate but must still update
2431 * timestamps. 2431 * timestamps.
2432 */ 2432 */
2433 ia_valid |= ATTR_MTIME|ATTR_CTIME; 2433 ia_valid |= ATTR_MTIME | ATTR_CTIME;
2434 } 2434 }
2435 } 2435 }
2436
2437 if (ia_valid & ATTR_ATIME) 2436 if (ia_valid & ATTR_ATIME)
2438 vi->i_atime = attr->ia_atime; 2437 vi->i_atime = timespec_trunc(attr->ia_atime,
2438 vi->i_sb->s_time_gran);
2439 if (ia_valid & ATTR_MTIME) 2439 if (ia_valid & ATTR_MTIME)
2440 vi->i_mtime = attr->ia_mtime; 2440 vi->i_mtime = timespec_trunc(attr->ia_mtime,
2441 vi->i_sb->s_time_gran);
2441 if (ia_valid & ATTR_CTIME) 2442 if (ia_valid & ATTR_CTIME)
2442 vi->i_ctime = attr->ia_ctime; 2443 vi->i_ctime = timespec_trunc(attr->ia_ctime,
2444 vi->i_sb->s_time_gran);
2443 mark_inode_dirty(vi); 2445 mark_inode_dirty(vi);
2444out: 2446out:
2445 return err; 2447 return err;