common/rc: fix _get_max_lfs_filesize on 32-bit platforms
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 16 Jan 2020 05:11:07 +0000 (21:11 -0800)
committerEryu Guan <guaneryu@gmail.com>
Sun, 2 Feb 2020 13:17:23 +0000 (21:17 +0800)
The 32-bit calculation of the maximum filesize is incorrect.  Replace it
with the formula that the kernel has used since commit 0cc3b0ec23ce
("Clarify (and fix) MAX_LFS_FILESIZE macros").  This fixes a regression
in generic/351 on 32-bit kernels.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/rc

index eeac13558d0723ebd302c9e046829873f7981252..cf6bc9d5d3f0b1a16faa036abfb8bc763e2aba95 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -3999,7 +3999,9 @@ _get_max_lfs_filesize()
 {
        case "$(getconf LONG_BIT)" in
        "32")
-               echo $(( ($(getconf PAGE_SIZE) << ($(getconf LONG_BIT) - 1) ) - 1))
+               local ulong_max=$(getconf ULONG_MAX)
+               local page_size=$(getconf PAGE_SIZE)
+               echo $(( ulong_max * page_size ))
                ;;
        "64")
                echo 9223372036854775807