2018-06-19 15:53:55

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] jfs: use time64_t for otime

The file creation time in the inode uses time_t which is defined differently
on 32-bit and 64-bit architectures and deprecated. The representation in
the inode uses an unsigned 32-bit number, but this gets wrapped around
after year 2038 when assigned to a time_t.

This changes the type to time64_t, so we can support the full range of
timestamps between 1970 and 2106 on 32-bit systems like we do on 64-bit
systems already, and matching what we do for the atime/ctime/mtime stamps
since the introduction of 64-bit timestamps in VFS.

Note: the otime stamp is not actually used anywhere at the moment in
the kernel, it is just set when writing a file, so none of this really
makes a difference unless we implement setting the btime field in the
getattr() callback.

Signed-off-by: Arnd Bergmann <[email protected]>
---
fs/jfs/jfs_incore.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
index 1f26d1910409..d5c46f86b2ef 100644
--- a/fs/jfs/jfs_incore.h
+++ b/fs/jfs/jfs_incore.h
@@ -43,7 +43,7 @@ struct jfs_inode_info {
pxd_t ixpxd; /* inode extent descriptor */
dxd_t acl; /* dxd describing acl */
dxd_t ea; /* dxd describing ea */
- time_t otime; /* time created */
+ time64_t otime; /* time created */
uint next_index; /* next available directory entry index */
int acltype; /* Type of ACL */
short btorder; /* access order */
--
2.9.0



2018-06-19 19:08:24

by Dave Kleikamp

[permalink] [raw]
Subject: Re: [PATCH] jfs: use time64_t for otime

On 06/19/2018 10:51 AM, Arnd Bergmann wrote:
> The file creation time in the inode uses time_t which is defined differently
> on 32-bit and 64-bit architectures and deprecated. The representation in
> the inode uses an unsigned 32-bit number, but this gets wrapped around
> after year 2038 when assigned to a time_t.
>
> This changes the type to time64_t, so we can support the full range of
> timestamps between 1970 and 2106 on 32-bit systems like we do on 64-bit
> systems already, and matching what we do for the atime/ctime/mtime stamps
> since the introduction of 64-bit timestamps in VFS.
>
> Note: the otime stamp is not actually used anywhere at the moment in
> the kernel, it is just set when writing a file, so none of this really
> makes a difference unless we implement setting the btime field in the
> getattr() callback.

This looks good to me. I'll push it to linux-next and target the next
merge window.

Thanks,
Shaggy

>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> fs/jfs/jfs_incore.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/jfs/jfs_incore.h b/fs/jfs/jfs_incore.h
> index 1f26d1910409..d5c46f86b2ef 100644
> --- a/fs/jfs/jfs_incore.h
> +++ b/fs/jfs/jfs_incore.h
> @@ -43,7 +43,7 @@ struct jfs_inode_info {
> pxd_t ixpxd; /* inode extent descriptor */
> dxd_t acl; /* dxd describing acl */
> dxd_t ea; /* dxd describing ea */
> - time_t otime; /* time created */
> + time64_t otime; /* time created */
> uint next_index; /* next available directory entry index */
> int acltype; /* Type of ACL */
> short btorder; /* access order */
>