]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: redefine xfs_ictimestamp_t
authorDarrick J. Wong <darrick.wong@oracle.com>
Wed, 11 Nov 2020 18:48:47 +0000 (13:48 -0500)
committerEric Sandeen <sandeen@sandeen.net>
Wed, 11 Nov 2020 18:48:47 +0000 (13:48 -0500)
Source kernel commit: 30e05599219f3c15bd5f24190af0e33cdb4a00e5

Redefine xfs_ictimestamp_t as a uint64_t typedef in preparation for the
bigtime functionality.  Preserve the legacy structure format so that we
can let the compiler take care of the masking and shifting.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Gao Xiang <hsiangkao@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_log_format.h
logprint/log_misc.c
logprint/log_print_all.c
logprint/logprint.h

index e3400c9c71cdb2371d40d5e11ed4c1cf51ff7f21..8bd00da6d2a40f6ce2f45b0cb9db7dbf9545c64e 100644 (file)
@@ -368,10 +368,13 @@ static inline int xfs_ilog_fdata(int w)
  * directly mirrors the xfs_dinode structure as it must contain all the same
  * information.
  */
-typedef struct xfs_ictimestamp {
+typedef uint64_t xfs_ictimestamp_t;
+
+/* Legacy timestamp encoding format. */
+struct xfs_legacy_ictimestamp {
        int32_t         t_sec;          /* timestamp seconds */
        int32_t         t_nsec;         /* timestamp nanoseconds */
-} xfs_ictimestamp_t;
+};
 
 /*
  * Define the format of the inode core that is logged. This structure must be
index af927cbfa79217292e94adf4c67c8f954ca193f7..afcd2cee60fc2d3913e4379048ee745adfbdcaf5 100644 (file)
@@ -446,8 +446,10 @@ xlog_print_trans_inode_core(
           (int)ip->di_format);
     printf(_("nlink %hd uid %d gid %d\n"),
           ip->di_nlink, ip->di_uid, ip->di_gid);
-    printf(_("atime 0x%x mtime 0x%x ctime 0x%x\n"),
-          ip->di_atime.t_sec, ip->di_mtime.t_sec, ip->di_ctime.t_sec);
+    printf(_("atime 0x%llx mtime 0x%llx ctime 0x%llx\n"),
+               xlog_extract_dinode_ts(ip->di_atime),
+               xlog_extract_dinode_ts(ip->di_mtime),
+               xlog_extract_dinode_ts(ip->di_ctime));
     printf(_("size 0x%llx nblocks 0x%llx extsize 0x%x nextents 0x%x\n"),
           (unsigned long long)ip->di_size, (unsigned long long)ip->di_nblocks,
           ip->di_extsize, ip->di_nextents);
@@ -739,6 +741,16 @@ xlog_print_trans_icreate(
  ******************************************************************************
  */
 
+time64_t
+xlog_extract_dinode_ts(
+       const xfs_ictimestamp_t         its)
+{
+       struct xfs_legacy_ictimestamp   *lits;
+
+       lits = (struct xfs_legacy_ictimestamp *)&its;
+       return (time64_t)lits->t_sec;
+}
+
 void
 xlog_print_lseek(struct xlog *log, int fd, xfs_daddr_t blkno, int whence)
 {
index 1924a0af70b6384d33c6997e57f25e0e52822ba1..f32c932992e3aef83ce8a3786c0decdca90a0736 100644 (file)
@@ -249,8 +249,10 @@ xlog_recover_print_inode_core(
        printf(_("              uid:%d  gid:%d  nlink:%d projid:0x%04x%04x\n"),
               di->di_uid, di->di_gid, di->di_nlink,
               di->di_projid_hi, di->di_projid_lo);
-       printf(_("              atime:%d  mtime:%d  ctime:%d\n"),
-              di->di_atime.t_sec, di->di_mtime.t_sec, di->di_ctime.t_sec);
+       printf(_("              atime:%lld  mtime:%lld  ctime:%lld\n"),
+                       xlog_extract_dinode_ts(di->di_atime),
+                       xlog_extract_dinode_ts(di->di_mtime),
+                       xlog_extract_dinode_ts(di->di_ctime));
        printf(_("              flushiter:%d\n"), di->di_flushiter);
        printf(_("              size:0x%llx  nblks:0x%llx  exsize:%d  "
             "nextents:%d  anextents:%d\n"), (unsigned long long)
index ee85bfe5f21f27be4cff89445d3c18bb06ecbec6..248fe7bffed2e344b1e7033e006d2665199c8911 100644 (file)
@@ -18,6 +18,7 @@ extern int    print_no_data;
 extern int     print_no_print;
 
 /* exports */
+extern time64_t xlog_extract_dinode_ts(const xfs_ictimestamp_t);
 extern void xlog_print_lseek(struct xlog *, int, xfs_daddr_t, int);
 
 extern void xfs_log_copy(struct xlog *, int, char *);