Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more vfs updates from Al Viro: ">rename2() work from Miklos + current_time() from Deepa" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fs: Replace current_fs_time() with current_time() fs: Replace CURRENT_TIME_SEC with current_time() for inode timestamps fs: Replace CURRENT_TIME with current_time() for inode timestamps fs: proc: Delete inode time initializations in proc_alloc_inode() vfs: Add current_time() api vfs: add note about i_op->rename changes to porting fs: rename "rename2" i_op to "rename" vfs: remove unused i_op->rename fs: make remaining filesystems use .rename2 libfs: support RENAME_NOREPLACE in simple_rename() fs: support RENAME_NOREPLACE for local filesystems ncpfs: fix unused variable warning
This commit is contained in:
29
fs/inode.c
29
fs/inode.c
@@ -1686,7 +1686,7 @@ bool __atime_needs_update(const struct path *path, struct inode *inode,
|
||||
if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
|
||||
return false;
|
||||
|
||||
now = current_fs_time(inode->i_sb);
|
||||
now = current_time(inode);
|
||||
|
||||
if (!relatime_need_update(path, inode, now, rcu))
|
||||
return false;
|
||||
@@ -1720,7 +1720,7 @@ void touch_atime(const struct path *path)
|
||||
* We may also fail on filesystems that have the ability to make parts
|
||||
* of the fs read only, e.g. subvolumes in Btrfs.
|
||||
*/
|
||||
now = current_fs_time(inode->i_sb);
|
||||
now = current_time(inode);
|
||||
update_time(inode, &now, S_ATIME);
|
||||
__mnt_drop_write(mnt);
|
||||
skip_update:
|
||||
@@ -1843,7 +1843,7 @@ int file_update_time(struct file *file)
|
||||
if (IS_NOCMTIME(inode))
|
||||
return 0;
|
||||
|
||||
now = current_fs_time(inode->i_sb);
|
||||
now = current_time(inode);
|
||||
if (!timespec_equal(&inode->i_mtime, &now))
|
||||
sync_it = S_MTIME;
|
||||
|
||||
@@ -2099,3 +2099,26 @@ void inode_nohighmem(struct inode *inode)
|
||||
mapping_set_gfp_mask(inode->i_mapping, GFP_USER);
|
||||
}
|
||||
EXPORT_SYMBOL(inode_nohighmem);
|
||||
|
||||
/**
|
||||
* current_time - Return FS time
|
||||
* @inode: inode.
|
||||
*
|
||||
* Return the current time truncated to the time granularity supported by
|
||||
* the fs.
|
||||
*
|
||||
* Note that inode and inode->sb cannot be NULL.
|
||||
* Otherwise, the function warns and returns time without truncation.
|
||||
*/
|
||||
struct timespec current_time(struct inode *inode)
|
||||
{
|
||||
struct timespec now = current_kernel_time();
|
||||
|
||||
if (unlikely(!inode->i_sb)) {
|
||||
WARN(1, "current_time() called with uninitialized super_block in the inode");
|
||||
return now;
|
||||
}
|
||||
|
||||
return timespec_trunc(now, inode->i_sb->s_time_gran);
|
||||
}
|
||||
EXPORT_SYMBOL(current_time);
|
||||
|
||||
Reference in New Issue
Block a user