ext4: avoid Y2038 overflow in recently_deleted()
authorAndreas Dilger <adilger@dilger.ca>
Thu, 31 Aug 2017 15:09:45 +0000 (11:09 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 31 Aug 2017 15:09:45 +0000 (11:09 -0400)
commitb5f515735bea4ae71c248aea3e049073f8852889
tree99c9be41ecb0f2d0cd8a13ff27ef861b74c6af7b
parentfd96b8da68d32a9403726db09b229f4b5ac849c7
ext4: avoid Y2038 overflow in recently_deleted()

Avoid a 32-bit time overflow in recently_deleted() since i_dtime
(inode deletion time) is stored only as a 32-bit value on disk.
Since i_dtime isn't used for much beyond a boolean value in e2fsck
and is otherwise only used in this function in the kernel, there is
no benefit to use more space in the inode for this field on disk.

Instead, compare only the relative deletion time with the low
32 bits of the time using the newly-added time_before32() helper,
which is similar to time_before() and time_after() for jiffies.

Increase RECENTCY_DIRTY to 300s based on Ted's comments about
usage experience at Google.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
fs/ext4/ialloc.c
include/linux/time.h