Blame SOURCES/xfsprogs-5.10.0-xfs_quota-convert-time_to_string-to-use-time64_t.patch

5d5cbe
From 219285adf56da85171fa90f42714341484750856 Mon Sep 17 00:00:00 2001
5d5cbe
From: "Darrick J. Wong" <darrick.wong@oracle.com>
5d5cbe
Date: Fri, 20 Nov 2020 17:03:27 -0500
5d5cbe
Subject: [PATCH] xfs_quota: convert time_to_string to use time64_t
5d5cbe
5d5cbe
Rework the time_to_string helper to be capable of dealing with 64-bit
5d5cbe
timestamps.
5d5cbe
5d5cbe
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
5d5cbe
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
5d5cbe
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5d5cbe
---
5d5cbe
5d5cbe
diff --git a/quota/quota.c b/quota/quota.c
5d5cbe
index 9545cc4..8ba0995 100644
5d5cbe
--- a/quota/quota.c
5d5cbe
+++ b/quota/quota.c
5d5cbe
@@ -48,6 +48,7 @@ quota_mount(
5d5cbe
 	uint		flags)
5d5cbe
 {
5d5cbe
 	fs_disk_quota_t	d;
5d5cbe
+	time64_t	timer;
5d5cbe
 	char		*dev = mount->fs_name;
5d5cbe
 	char		c[8], h[8], s[8];
5d5cbe
 	uint		qflags;
5d5cbe
@@ -100,6 +101,7 @@ quota_mount(
5d5cbe
 	}
5d5cbe
 
5d5cbe
 	if (form & XFS_BLOCK_QUOTA) {
5d5cbe
+		timer = d.d_btimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_blk_hardlimit && d.d_bcount > d.d_blk_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -111,16 +113,17 @@ quota_mount(
5d5cbe
 				bbs_to_string(d.d_blk_softlimit, s, sizeof(s)),
5d5cbe
 				bbs_to_string(d.d_blk_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_bwarns,
5d5cbe
-				time_to_string(d.d_btimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu   %02d %9s ",
5d5cbe
 				(unsigned long long)d.d_bcount >> 1,
5d5cbe
 				(unsigned long long)d.d_blk_softlimit >> 1,
5d5cbe
 				(unsigned long long)d.d_blk_hardlimit >> 1,
5d5cbe
 				d.d_bwarns,
5d5cbe
-				time_to_string(d.d_btimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	if (form & XFS_INODE_QUOTA) {
5d5cbe
+		timer = d.d_itimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_ino_hardlimit && d.d_icount > d.d_ino_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -132,16 +135,17 @@ quota_mount(
5d5cbe
 				num_to_string(d.d_ino_softlimit, s, sizeof(s)),
5d5cbe
 				num_to_string(d.d_ino_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_iwarns,
5d5cbe
-				time_to_string(d.d_itimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu   %02d %9s ",
5d5cbe
 				(unsigned long long)d.d_icount,
5d5cbe
 				(unsigned long long)d.d_ino_softlimit,
5d5cbe
 				(unsigned long long)d.d_ino_hardlimit,
5d5cbe
 				d.d_iwarns,
5d5cbe
-				time_to_string(d.d_itimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	if (form & XFS_RTBLOCK_QUOTA) {
5d5cbe
+		timer = d.d_rtbtimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_rtb_hardlimit && d.d_rtbcount > d.d_rtb_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -153,14 +157,14 @@ quota_mount(
5d5cbe
 				bbs_to_string(d.d_rtb_softlimit, s, sizeof(s)),
5d5cbe
 				bbs_to_string(d.d_rtb_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_rtbwarns,
5d5cbe
-				time_to_string(d.d_rtbtimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu   %02d %9s ",
5d5cbe
 				(unsigned long long)d.d_rtbcount >> 1,
5d5cbe
 				(unsigned long long)d.d_rtb_softlimit >> 1,
5d5cbe
 				(unsigned long long)d.d_rtb_hardlimit >> 1,
5d5cbe
 				d.d_rtbwarns,
5d5cbe
-				time_to_string(d.d_rtbtimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	fprintf(fp, "%s\n", mount->fs_dir);
5d5cbe
 	return 1;
5d5cbe
diff --git a/quota/quota.h b/quota/quota.h
5d5cbe
index b7f259e..13ae450 100644
5d5cbe
--- a/quota/quota.h
5d5cbe
+++ b/quota/quota.h
5d5cbe
@@ -40,7 +40,7 @@ enum {
5d5cbe
  */
5d5cbe
 extern char *type_to_string(uint __type);
5d5cbe
 extern char *form_to_string(uint __form);
5d5cbe
-extern char *time_to_string(time_t __time, uint __flags);
5d5cbe
+extern char *time_to_string(time64_t __time, uint __flags);
5d5cbe
 extern char *bbs_to_string(uint64_t __v, char *__c, uint __size);
5d5cbe
 extern char *num_to_string(uint64_t __v, char *__c, uint __size);
5d5cbe
 extern char *pct_to_string(uint64_t __v, uint64_t __t, char *__c, uint __s);
5d5cbe
diff --git a/quota/report.c b/quota/report.c
5d5cbe
index e6def91..2d5024e 100644
5d5cbe
--- a/quota/report.c
5d5cbe
+++ b/quota/report.c
5d5cbe
@@ -330,6 +330,7 @@ report_mount(
5d5cbe
 	uint		flags)
5d5cbe
 {
5d5cbe
 	fs_disk_quota_t	d;
5d5cbe
+	time64_t	timer;
5d5cbe
 	char		*dev = mount->fs_name;
5d5cbe
 	char		c[8], h[8], s[8];
5d5cbe
 	uint		qflags;
5d5cbe
@@ -397,6 +398,7 @@ report_mount(
5d5cbe
 	}
5d5cbe
 
5d5cbe
 	if (form & XFS_BLOCK_QUOTA) {
5d5cbe
+		timer = d.d_btimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_blk_hardlimit && d.d_bcount > d.d_blk_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -408,16 +410,17 @@ report_mount(
5d5cbe
 				bbs_to_string(d.d_blk_softlimit, s, sizeof(s)),
5d5cbe
 				bbs_to_string(d.d_blk_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_bwarns,
5d5cbe
-				time_to_string(d.d_btimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu     %02d %9s",
5d5cbe
 				(unsigned long long)d.d_bcount >> 1,
5d5cbe
 				(unsigned long long)d.d_blk_softlimit >> 1,
5d5cbe
 				(unsigned long long)d.d_blk_hardlimit >> 1,
5d5cbe
 				d.d_bwarns,
5d5cbe
-				time_to_string(d.d_btimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	if (form & XFS_INODE_QUOTA) {
5d5cbe
+		timer = d.d_itimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_ino_hardlimit && d.d_icount > d.d_ino_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -429,16 +432,17 @@ report_mount(
5d5cbe
 				num_to_string(d.d_ino_softlimit, s, sizeof(s)),
5d5cbe
 				num_to_string(d.d_ino_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_iwarns,
5d5cbe
-				time_to_string(d.d_itimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu     %02d %9s",
5d5cbe
 				(unsigned long long)d.d_icount,
5d5cbe
 				(unsigned long long)d.d_ino_softlimit,
5d5cbe
 				(unsigned long long)d.d_ino_hardlimit,
5d5cbe
 				d.d_iwarns,
5d5cbe
-				time_to_string(d.d_itimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	if (form & XFS_RTBLOCK_QUOTA) {
5d5cbe
+		timer = d.d_rtbtimer;
5d5cbe
 		qflags = (flags & HUMAN_FLAG);
5d5cbe
 		if (d.d_rtb_hardlimit && d.d_rtbcount > d.d_rtb_hardlimit)
5d5cbe
 			qflags |= LIMIT_FLAG;
5d5cbe
@@ -450,14 +454,14 @@ report_mount(
5d5cbe
 				bbs_to_string(d.d_rtb_softlimit, s, sizeof(s)),
5d5cbe
 				bbs_to_string(d.d_rtb_hardlimit, h, sizeof(h)),
5d5cbe
 				d.d_rtbwarns,
5d5cbe
-				time_to_string(d.d_rtbtimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 		else
5d5cbe
 			fprintf(fp, " %10llu %10llu %10llu     %02d %9s",
5d5cbe
 				(unsigned long long)d.d_rtbcount >> 1,
5d5cbe
 				(unsigned long long)d.d_rtb_softlimit >> 1,
5d5cbe
 				(unsigned long long)d.d_rtb_hardlimit >> 1,
5d5cbe
 				d.d_rtbwarns,
5d5cbe
-				time_to_string(d.d_rtbtimer, qflags));
5d5cbe
+				time_to_string(timer, qflags));
5d5cbe
 	}
5d5cbe
 	fputc('\n', fp);
5d5cbe
 	return 1;
5d5cbe
diff --git a/quota/util.c b/quota/util.c
5d5cbe
index 50470ab..361d2a8 100644
5d5cbe
--- a/quota/util.c
5d5cbe
+++ b/quota/util.c
5d5cbe
@@ -18,11 +18,12 @@
5d5cbe
 
5d5cbe
 char *
5d5cbe
 time_to_string(
5d5cbe
-	time_t		origin,
5d5cbe
+	time64_t	origin,
5d5cbe
 	uint		flags)
5d5cbe
 {
5d5cbe
 	static char	timestamp[32];
5d5cbe
-	time_t		now, timer;
5d5cbe
+	time64_t	timer;
5d5cbe
+	time_t		now;
5d5cbe
 	uint		days, hours, minutes, seconds;
5d5cbe
 
5d5cbe
 	if (flags & ABSOLUTE_FLAG) {