* [PATCH v2 1/2] xfsdocs: fix inode timestamps lower limit value
@ 2022-07-17 10:07 Xiaole He
2022-07-18 17:17 ` Darrick J. Wong
0 siblings, 1 reply; 2+ messages in thread
From: Xiaole He @ 2022-07-17 10:07 UTC (permalink / raw)
To: linux-xfs; +Cc: djwong, sandeen, Xiaole He, Xiaole He
In kernel source tree 'fs/xfs/libxfs/xfs_format.h', there defined inode
timestamps as 'xfs_legacy_timestamp' if the 'bigtime' feature disabled,
and also defined the min and max time constants 'XFS_LEGACY_TIME_MIN'
and 'XFS_LEGACY_TIME_MAX' as below:
/* fs/xfs/libxfs/xfs_format.h begin */
struct xfs_legacy_timestamp {
__be32 t_sec; /* timestamp seconds */
__be32 t_nsec; /* timestamp nanoseconds */
};
#define XFS_LEGACY_TIME_MIN ((int64_t)S32_MIN)
#define XFS_LEGACY_TIME_MAX ((int64_t)S32_MAX)
/* fs/xfs/libxfs/xfs_format.h end */
/* include/linux/limits.h begin */
#define U32_MAX ((u32)~0U)
#define S32_MAX ((s32)(U32_MAX >> 1))
#define S32_MIN ((s32)(-S32_MAX - 1))
/* include/linux/limits.h end */
When the 't_sec' and 't_nsec' are 0, the time value it represents is
1970-01-01 00:00:00 UTC, the 'XFS_LEGACY_TIME_MIN', that is -(2^31),
represents the min second offset relative to the
1970-01-01 00:00:00 UTC, it can be converted to human-friendly time
value by 'date' command:
/* command begin */
[root@~]# date --utc -d '@0' +'%Y-%m-%d %H:%M:%S'
1970-01-01 00:00:00
[root@~]# date --utc -d "@`echo '-(2^31)'|bc`" +'%Y-%m-%d %H:%M:%S'
1901-12-13 20:45:52
[root@~]#
/* command end */
That is, the min time value is 1901-12-13 20:45:52 UTC, but the
'design/XFS_Filesystem_Structure/timestamps.asciidoc' write the min
time value as 'The smalle st date this format can represent is
20:45:52 UTC on December 31st', there should be a typo, and this patch
correct 2 places of wrong min time value, from '31st' to '13st'.
Signed-off-by: Xiaole He <hexiaole@kylinos.cn>
---
V1 -> V2: Wrap line at 72 column, add Signed-off-by, add one more
'date' command for explanation, remove the question section.
design/XFS_Filesystem_Structure/timestamps.asciidoc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/design/XFS_Filesystem_Structure/timestamps.asciidoc b/design/XFS_Filesystem_Structure/timestamps.asciidoc
index 08baa1e..56d4dc9 100644
--- a/design/XFS_Filesystem_Structure/timestamps.asciidoc
+++ b/design/XFS_Filesystem_Structure/timestamps.asciidoc
@@ -26,13 +26,13 @@ struct xfs_legacy_timestamp {
};
----
-The smallest date this format can represent is 20:45:52 UTC on December 31st,
+The smallest date this format can represent is 20:45:52 UTC on December 13st,
1901, and the largest date supported is 03:14:07 UTC on January 19, 2038.
With the introduction of the bigtime feature, the format is changed to
interpret the timestamp as a 64-bit count of nanoseconds since the smallest
date supported by the old encoding. This means that the smallest date
-supported is still 20:45:52 UTC on December 31st, 1901; but now the largest
+supported is still 20:45:52 UTC on December 13st, 1901; but now the largest
date supported is 20:20:24 UTC on July 2nd, 2486.
[[Quota_Timers]]
--
1.8.3.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2 1/2] xfsdocs: fix inode timestamps lower limit value
2022-07-17 10:07 [PATCH v2 1/2] xfsdocs: fix inode timestamps lower limit value Xiaole He
@ 2022-07-18 17:17 ` Darrick J. Wong
0 siblings, 0 replies; 2+ messages in thread
From: Darrick J. Wong @ 2022-07-18 17:17 UTC (permalink / raw)
To: Xiaole He; +Cc: linux-xfs, sandeen, Xiaole He
On Sun, Jul 17, 2022 at 06:07:28PM +0800, Xiaole He wrote:
> In kernel source tree 'fs/xfs/libxfs/xfs_format.h', there defined inode
> timestamps as 'xfs_legacy_timestamp' if the 'bigtime' feature disabled,
> and also defined the min and max time constants 'XFS_LEGACY_TIME_MIN'
> and 'XFS_LEGACY_TIME_MAX' as below:
>
> /* fs/xfs/libxfs/xfs_format.h begin */
> struct xfs_legacy_timestamp {
> __be32 t_sec; /* timestamp seconds */
> __be32 t_nsec; /* timestamp nanoseconds */
> };
> #define XFS_LEGACY_TIME_MIN ((int64_t)S32_MIN)
> #define XFS_LEGACY_TIME_MAX ((int64_t)S32_MAX)
> /* fs/xfs/libxfs/xfs_format.h end */
> /* include/linux/limits.h begin */
> #define U32_MAX ((u32)~0U)
> #define S32_MAX ((s32)(U32_MAX >> 1))
> #define S32_MIN ((s32)(-S32_MAX - 1))
> /* include/linux/limits.h end */
>
> When the 't_sec' and 't_nsec' are 0, the time value it represents is
> 1970-01-01 00:00:00 UTC, the 'XFS_LEGACY_TIME_MIN', that is -(2^31),
> represents the min second offset relative to the
> 1970-01-01 00:00:00 UTC, it can be converted to human-friendly time
> value by 'date' command:
>
> /* command begin */
> [root@~]# date --utc -d '@0' +'%Y-%m-%d %H:%M:%S'
> 1970-01-01 00:00:00
> [root@~]# date --utc -d "@`echo '-(2^31)'|bc`" +'%Y-%m-%d %H:%M:%S'
> 1901-12-13 20:45:52
> [root@~]#
> /* command end */
>
> That is, the min time value is 1901-12-13 20:45:52 UTC, but the
> 'design/XFS_Filesystem_Structure/timestamps.asciidoc' write the min
> time value as 'The smalle st date this format can represent is
> 20:45:52 UTC on December 31st', there should be a typo, and this patch
> correct 2 places of wrong min time value, from '31st' to '13st'.
>
> Signed-off-by: Xiaole He <hexiaole@kylinos.cn>
Looks correct, will commit...
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
--D
> ---
> V1 -> V2: Wrap line at 72 column, add Signed-off-by, add one more
> 'date' command for explanation, remove the question section.
>
> design/XFS_Filesystem_Structure/timestamps.asciidoc | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/design/XFS_Filesystem_Structure/timestamps.asciidoc b/design/XFS_Filesystem_Structure/timestamps.asciidoc
> index 08baa1e..56d4dc9 100644
> --- a/design/XFS_Filesystem_Structure/timestamps.asciidoc
> +++ b/design/XFS_Filesystem_Structure/timestamps.asciidoc
> @@ -26,13 +26,13 @@ struct xfs_legacy_timestamp {
> };
> ----
>
> -The smallest date this format can represent is 20:45:52 UTC on December 31st,
> +The smallest date this format can represent is 20:45:52 UTC on December 13st,
> 1901, and the largest date supported is 03:14:07 UTC on January 19, 2038.
>
> With the introduction of the bigtime feature, the format is changed to
> interpret the timestamp as a 64-bit count of nanoseconds since the smallest
> date supported by the old encoding. This means that the smallest date
> -supported is still 20:45:52 UTC on December 31st, 1901; but now the largest
> +supported is still 20:45:52 UTC on December 13st, 1901; but now the largest
> date supported is 20:20:24 UTC on July 2nd, 2486.
>
> [[Quota_Timers]]
> --
> 1.8.3.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-07-18 17:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-17 10:07 [PATCH v2 1/2] xfsdocs: fix inode timestamps lower limit value Xiaole He
2022-07-18 17:17 ` Darrick J. Wong
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.