CURRENT_TIME macro is not appropriate for filesystems as it
doesn't use the right granularity for filesystem timestamps.
Use current_fs_time() instead.

Signed-off-by: Deepa Dinamani <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: David Howells <[email protected]>
Cc: Michal Hocko <[email protected]>
---
 fs/ramfs/inode.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c
index 38981b0..ce69aec 100644
--- a/fs/ramfs/inode.c
+++ b/fs/ramfs/inode.c
@@ -61,7 +61,8 @@ struct inode *ramfs_get_inode(struct super_block *sb,
                inode->i_mapping->a_ops = &ramfs_aops;
                mapping_set_gfp_mask(inode->i_mapping, GFP_HIGHUSER);
                mapping_set_unevictable(inode->i_mapping);
-               inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
+               inode->i_atime = inode->i_mtime =
+                       inode->i_ctime = current_fs_time(sb);
                switch (mode & S_IFMT) {
                default:
                        init_special_inode(inode, mode, dev);
@@ -93,14 +94,15 @@ struct inode *ramfs_get_inode(struct super_block *sb,
 static int
 ramfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev)
 {
-       struct inode * inode = ramfs_get_inode(dir->i_sb, dir, mode, dev);
+       struct super_block *sb = dir->i_sb;
+       struct inode *inode = ramfs_get_inode(sb, dir, mode, dev);
        int error = -ENOSPC;
 
        if (inode) {
                d_instantiate(dentry, inode);
                dget(dentry);   /* Extra count - pin the dentry in core */
                error = 0;
-               dir->i_mtime = dir->i_ctime = CURRENT_TIME;
+               dir->i_mtime = dir->i_ctime = current_fs_time(sb);
        }
        return error;
 }
@@ -120,17 +122,18 @@ static int ramfs_create(struct inode *dir, struct dentry 
*dentry, umode_t mode,
 
 static int ramfs_symlink(struct inode * dir, struct dentry *dentry, const char 
* symname)
 {
+       struct super_block *sb = dir->i_sb;
        struct inode *inode;
        int error = -ENOSPC;
 
-       inode = ramfs_get_inode(dir->i_sb, dir, S_IFLNK|S_IRWXUGO, 0);
+       inode = ramfs_get_inode(sb, dir, S_IFLNK|S_IRWXUGO, 0);
        if (inode) {
                int l = strlen(symname)+1;
                error = page_symlink(inode, symname, l);
                if (!error) {
                        d_instantiate(dentry, inode);
                        dget(dentry);
-                       dir->i_mtime = dir->i_ctime = CURRENT_TIME;
+                       dir->i_mtime = dir->i_ctime = current_fs_time(sb);
                } else
                        iput(inode);
        }
-- 
1.9.1

Reply via email to