diff options
-rw-r--r-- | fs/inode.c | 23 | ||||
-rw-r--r-- | include/linux/fs.h | 1 |
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 | } |
2051 | EXPORT_SYMBOL(inode_nohighmem); | 2051 | EXPORT_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 | */ | ||
2063 | struct 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 | } | ||
2074 | EXPORT_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 | ||
1461 | extern struct timespec current_fs_time(struct super_block *sb); | 1461 | extern struct timespec current_fs_time(struct super_block *sb); |
1462 | extern struct timespec current_time(struct inode *inode); | ||
1462 | 1463 | ||
1463 | /* | 1464 | /* |
1464 | * Snapshotting support. | 1465 | * Snapshotting support. |