quota: avoid time_t in v1_disk_dqblk definition
authorArnd Bergmann <arnd@arndb.de>
Fri, 13 Dec 2019 20:52:14 +0000 (21:52 +0100)
committerJan Kara <jack@suse.cz>
Mon, 16 Dec 2019 13:15:30 +0000 (14:15 +0100)
The time_t type is part of the user interface and not always the
same, with the move to 64-bit timestamps and the difference between
architectures.

Make the quota format definition independent of this type and use
a basic type of the same length. Make it unsigned in the process
to keep the v1 format working until year 2106 instead of 2038
on 32-bit architectures.

Hopefully, everybody has already moved to a newer format long
ago (v2 was introduced with linux-2.4), but it's hard to be sure.

Link: https://lore.kernel.org/r/20191213205221.3787308-6-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/quota/quotaio_v1.h

index bd11e2c..31dca9a 100644 (file)
@@ -25,8 +25,10 @@ struct v1_disk_dqblk {
        __u32 dqb_ihardlimit;   /* absolute limit on allocated inodes */
        __u32 dqb_isoftlimit;   /* preferred inode limit */
        __u32 dqb_curinodes;    /* current # allocated inodes */
-       time_t dqb_btime;       /* time limit for excessive disk use */
-       time_t dqb_itime;       /* time limit for excessive inode use */
+
+       /* below fields differ in length on 32-bit vs 64-bit architectures */
+       unsigned long dqb_btime; /* time limit for excessive disk use */
+       unsigned long dqb_itime; /* time limit for excessive inode use */
 };
 
 #define v1_dqoff(UID)      ((loff_t)((UID) * sizeof (struct v1_disk_dqblk)))