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 deepa.kernel@gmail.com Cc: Andrew Morton akpm@linux-foundation.org Cc: David Howells dhowells@redhat.com Cc: Michal Hocko mhocko@suse.com --- 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); }