Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a3a5fec authored by Deepa Dinamani's avatar Deepa Dinamani Committed by Greg Kroah-Hartman
Browse files

fs: kernfs: Replace CURRENT_TIME by current_fs_time()



This is in preparation for the series that transitions
filesystem timestamps to use 64 bit time and hence make
them y2038 safe.

CURRENT_TIME macro will be deleted before merging the
aforementioned series.

Use current_fs_time() instead of CURRENT_TIME for inode
timestamps.

struct kernfs_node is associated with a sysfs file/ directory.
Truncate the values to appropriate time granularity when
writing to inode timestamps of the files.

ktime_get_real_ts() is used to obtain times for
struct kernfs_iattrs. Since these times are later assigned to
inode times using timespec_truncate() for all filesystem based
operations, we can save the supers list traversal time here by
using ktime_get_real_ts() directly.

Signed-off-by: default avatarDeepa Dinamani <deepa.kernel@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1b48b530
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -753,7 +753,8 @@ int kernfs_add_one(struct kernfs_node *kn)
	ps_iattr = parent->iattr;
	ps_iattr = parent->iattr;
	if (ps_iattr) {
	if (ps_iattr) {
		struct iattr *ps_iattrs = &ps_iattr->ia_iattr;
		struct iattr *ps_iattrs = &ps_iattr->ia_iattr;
		ps_iattrs->ia_ctime = ps_iattrs->ia_mtime = CURRENT_TIME;
		ktime_get_real_ts(&ps_iattrs->ia_ctime);
		ps_iattrs->ia_mtime = ps_iattrs->ia_ctime;
	}
	}


	mutex_unlock(&kernfs_mutex);
	mutex_unlock(&kernfs_mutex);
@@ -1279,8 +1280,9 @@ static void __kernfs_remove(struct kernfs_node *kn)


			/* update timestamps on the parent */
			/* update timestamps on the parent */
			if (ps_iattr) {
			if (ps_iattr) {
				ps_iattr->ia_iattr.ia_ctime = CURRENT_TIME;
				ktime_get_real_ts(&ps_iattr->ia_iattr.ia_ctime);
				ps_iattr->ia_iattr.ia_mtime = CURRENT_TIME;
				ps_iattr->ia_iattr.ia_mtime =
					ps_iattr->ia_iattr.ia_ctime;
			}
			}


			kernfs_put(pos);
			kernfs_put(pos);
+10 −5
Original line number Original line Diff line number Diff line
@@ -54,7 +54,10 @@ static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn)
	iattrs->ia_mode = kn->mode;
	iattrs->ia_mode = kn->mode;
	iattrs->ia_uid = GLOBAL_ROOT_UID;
	iattrs->ia_uid = GLOBAL_ROOT_UID;
	iattrs->ia_gid = GLOBAL_ROOT_GID;
	iattrs->ia_gid = GLOBAL_ROOT_GID;
	iattrs->ia_atime = iattrs->ia_mtime = iattrs->ia_ctime = CURRENT_TIME;

	ktime_get_real_ts(&iattrs->ia_atime);
	iattrs->ia_mtime = iattrs->ia_atime;
	iattrs->ia_ctime = iattrs->ia_atime;


	simple_xattrs_init(&kn->iattr->xattrs);
	simple_xattrs_init(&kn->iattr->xattrs);
out_unlock:
out_unlock:
@@ -236,16 +239,18 @@ ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size)
static inline void set_default_inode_attr(struct inode *inode, umode_t mode)
static inline void set_default_inode_attr(struct inode *inode, umode_t mode)
{
{
	inode->i_mode = mode;
	inode->i_mode = mode;
	inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
	inode->i_atime = inode->i_mtime =
		inode->i_ctime = current_fs_time(inode->i_sb);
}
}


static inline void set_inode_attr(struct inode *inode, struct iattr *iattr)
static inline void set_inode_attr(struct inode *inode, struct iattr *iattr)
{
{
	struct super_block *sb = inode->i_sb;
	inode->i_uid = iattr->ia_uid;
	inode->i_uid = iattr->ia_uid;
	inode->i_gid = iattr->ia_gid;
	inode->i_gid = iattr->ia_gid;
	inode->i_atime = iattr->ia_atime;
	inode->i_atime = timespec_trunc(iattr->ia_atime, sb->s_time_gran);
	inode->i_mtime = iattr->ia_mtime;
	inode->i_mtime = timespec_trunc(iattr->ia_mtime, sb->s_time_gran);
	inode->i_ctime = iattr->ia_ctime;
	inode->i_ctime = timespec_trunc(iattr->ia_ctime, sb->s_time_gran);
}
}


static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)