Re: [PATCH v1] xfs: fix comment for start time value of inode with bigtime enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 17, 2022 at 06:04:31PM +0800, Xiaole He wrote:
> The 'ctime', 'mtime', and 'atime' for inode is the type of
> 'xfs_timestamp_t', which is a 64-bit type:
> 
> /* fs/xfs/libxfs/xfs_format.h begin */
> typedef __be64 xfs_timestamp_t;
> /* fs/xfs/libxfs/xfs_format.h end */
> 
> When the 'bigtime' feature is disabled, this 64-bit type is splitted
> into two parts of 32-bit, one part is encoded for seconds since
> 1970-01-01 00:00:00 UTC, the other part is encoded for nanoseconds
> above the seconds, this two parts are the type of
> 'xfs_legacy_timestamp' and the min and max time value of this type are
> defined as macros 'XFS_LEGACY_TIME_MIN' and 'XFS_LEGACY_TIME_MAX':
> 
> /* 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 */
> 
> 'XFS_LEGACY_TIME_MIN' is the min time value of the
> 'xfs_legacy_timestamp', that is -(2^31) seconds 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 */
> 
> When 'bigtime' feature is enabled, this 64-bit type becomes a 64-bit
> nanoseconds counter, with the start time value is the min time value of
> 'xfs_legacy_timestamp'(start time means the value of 64-bit nanoseconds
> counter is 0). We have already caculated the min time value of
> 'xfs_legacy_timestamp', that is 1901-12-13 20:45:52 UTC, but the comment
> for the start time value of inode with 'bigtime' feature enabled writes
> the value is 1901-12-31 20:45:52 UTC:
> 
> /* fs/xfs/libxfs/xfs_format.h begin */
> /*
>  * XFS Timestamps
>  * ==============
>  * When the bigtime feature is enabled, ondisk inode timestamps become an
>  * unsigned 64-bit nanoseconds counter.  This means that the bigtime inode
>  * timestamp epoch is the start of the classic timestamp range, which is
>  * Dec 31 20:45:52 UTC 1901. ...
>  ...
>  */
> /* fs/xfs/libxfs/xfs_format.h end */
> 
> That is a typo, and this patch corrects the typo, from 'Dec 31' to
> 'Dec 13'.
> 
> Suggested-by: Darrick J. Wong <djwong@xxxxxxxxxx>
> Signed-off-by: Xiaole He <hexiaole@xxxxxxxxxx>

Heh, thanks for fixing the typo.
Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/libxfs/xfs_format.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/fs/xfs/libxfs/xfs_format.h b/fs/xfs/libxfs/xfs_format.h
> index afdfc81..b55bdfa 100644
> --- a/fs/xfs/libxfs/xfs_format.h
> +++ b/fs/xfs/libxfs/xfs_format.h
> @@ -704,7 +704,7 @@ struct xfs_agfl {
>   * When the bigtime feature is enabled, ondisk inode timestamps become an
>   * unsigned 64-bit nanoseconds counter.  This means that the bigtime inode
>   * timestamp epoch is the start of the classic timestamp range, which is
> - * Dec 31 20:45:52 UTC 1901.  Because the epochs are not the same, callers
> + * Dec 13 20:45:52 UTC 1901.  Because the epochs are not the same, callers
>   * /must/ use the bigtime conversion functions when encoding and decoding raw
>   * timestamps.
>   */
> -- 
> 1.8.3.1
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux