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: Deepa Dinamani <deepa.kernel@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
1b48b530da
Коммит
3a3a5fece6
|
@ -753,7 +753,8 @@ int kernfs_add_one(struct kernfs_node *kn)
|
|||
ps_iattr = parent->iattr;
|
||||
if (ps_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);
|
||||
|
@ -1279,8 +1280,9 @@ static void __kernfs_remove(struct kernfs_node *kn)
|
|||
|
||||
/* update timestamps on the parent */
|
||||
if (ps_iattr) {
|
||||
ps_iattr->ia_iattr.ia_ctime = CURRENT_TIME;
|
||||
ps_iattr->ia_iattr.ia_mtime = CURRENT_TIME;
|
||||
ktime_get_real_ts(&ps_iattr->ia_iattr.ia_ctime);
|
||||
ps_iattr->ia_iattr.ia_mtime =
|
||||
ps_iattr->ia_iattr.ia_ctime;
|
||||
}
|
||||
|
||||
kernfs_put(pos);
|
||||
|
|
|
@ -54,7 +54,10 @@ static struct kernfs_iattrs *kernfs_iattrs(struct kernfs_node *kn)
|
|||
iattrs->ia_mode = kn->mode;
|
||||
iattrs->ia_uid = GLOBAL_ROOT_UID;
|
||||
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);
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
struct super_block *sb = inode->i_sb;
|
||||
inode->i_uid = iattr->ia_uid;
|
||||
inode->i_gid = iattr->ia_gid;
|
||||
inode->i_atime = iattr->ia_atime;
|
||||
inode->i_mtime = iattr->ia_mtime;
|
||||
inode->i_ctime = iattr->ia_ctime;
|
||||
inode->i_atime = timespec_trunc(iattr->ia_atime, sb->s_time_gran);
|
||||
inode->i_mtime = timespec_trunc(iattr->ia_mtime, sb->s_time_gran);
|
||||
inode->i_ctime = timespec_trunc(iattr->ia_ctime, sb->s_time_gran);
|
||||
}
|
||||
|
||||
static void kernfs_refresh_inode(struct kernfs_node *kn, struct inode *inode)
|
||||
|
|
Загрузка…
Ссылка в новой задаче