summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/inode.c23
-rw-r--r--include/linux/fs.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/fs/inode.c b/fs/inode.c
index 7e3ef3af3db9..2172d0f77011 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -2049,3 +2049,26 @@ void inode_nohighmem(struct inode *inode)
2049 mapping_set_gfp_mask(inode->i_mapping, GFP_USER); 2049 mapping_set_gfp_mask(inode->i_mapping, GFP_USER);
2050} 2050}
2051EXPORT_SYMBOL(inode_nohighmem); 2051EXPORT_SYMBOL(inode_nohighmem);
2052
2053/**
2054 * current_time - Return FS time
2055 * @inode: inode.
2056 *
2057 * Return the current time truncated to the time granularity supported by
2058 * the fs.
2059 *
2060 * Note that inode and inode->sb cannot be NULL.
2061 * Otherwise, the function warns and returns time without truncation.
2062 */
2063struct timespec current_time(struct inode *inode)
2064{
2065 struct timespec now = current_kernel_time();
2066
2067 if (unlikely(!inode->i_sb)) {
2068 WARN(1, "current_time() called with uninitialized super_block in the inode");
2069 return now;
2070 }
2071
2072 return timespec_trunc(now, inode->i_sb->s_time_gran);
2073}
2074EXPORT_SYMBOL(current_time);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 901e25d495cc..32ce6b31a61b 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1459,6 +1459,7 @@ static inline void i_gid_write(struct inode *inode, gid_t gid)
1459} 1459}
1460 1460
1461extern struct timespec current_fs_time(struct super_block *sb); 1461extern struct timespec current_fs_time(struct super_block *sb);
1462extern struct timespec current_time(struct inode *inode);
1462 1463
1463/* 1464/*
1464 * Snapshotting support. 1465 * Snapshotting support.