Hi,
When a quota limit is reached at a soft limit, xfs_quota(8) shows the
incorrect grace time.
Because, the subtraction with '__uint32_t' and 'time_t' are done in
time_to_string(), and the result does not become a negative value, but
a huge value. This patch fixes it.
Example:
xfs_quota> report
User quota on /home/utako/mpnt (/dev/sda6)
Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 3145728 1000 2000 00 [--none--]
utako 1000 1000 2000 00 [00:00:4294967286] <--
Group quota on /home/utako/mpnt (/dev/sda6)
Blocks
Group ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 3145728 0 0 00 [--------]
users 1000 0 0 00 [--------]
Signed-off-by: Utako Kusaka <utako@xxxxxxxxxxxxxx>
---
--- xfsprogs-2.8.18-orgn/quota/quota.h 2006-12-13 13:57:23.000000000 +0900
+++ xfsprogs-2.8.18/quota/quota.h 2007-02-15 11:51:20.000000000 +0900
@@ -49,7 +49,7 @@ enum {
*/
extern char *type_to_string(uint __type);
extern char *form_to_string(uint __form);
-extern char *time_to_string(__uint32_t __time, uint __flags);
+extern char *time_to_string(time_t __time, uint __flags);
extern char *bbs_to_string(__uint64_t __v, char *__c, uint __size);
extern char *num_to_string(__uint64_t __v, char *__c, uint __size);
extern char *pct_to_string(__uint64_t __v, __uint64_t __t, char *__c, uint
__s);
--- xfsprogs-2.8.18-orgn/quota/util.c 2006-12-13 13:57:23.000000000 +0900
+++ xfsprogs-2.8.18/quota/util.c 2007-02-15 11:51:51.000000000 +0900
@@ -29,7 +29,7 @@
char *
time_to_string(
- __uint32_t origin,
+ time_t origin,
uint flags)
{
static char timestamp[32];
|