xfs: call roundup_64() to calculate the min_logblks
authorJie Liu <[email protected]>
Tue, 13 Aug 2013 05:32:00 +0000 (13:32 +0800)
committerBen Myers <[email protected]>
Tue, 13 Aug 2013 19:19:11 +0000 (14:19 -0500)
Replace roundup() with roundup_64() as we calculate min_logblks
with 64-bit divisions.  Hence, call roundup() will cause the
following error while compiling a 32-bit kernel:

fs/built-in.o: In function `xfs_log_calc_minimum_size':
fs/xfs/xfs_log_rlimit.c:140: undefined reference to `__udivdi3'

Reported-by: Fengguang Wu <[email protected]>
Cc: Dave Chinner <[email protected]>
Signed-off-by: Jie Liu <[email protected]>
Reviewed-by: Dave Chinner <[email protected]>
Signed-off-by: Ben Myers <[email protected]>
fs/xfs/xfs_log_rlimit.c

index 6b17ef4a061ba8d947c73751bef4e725e8b51cb3..bbcec0bbc12da830f4a16479bfc8748589c4ddbc 100644 (file)
@@ -136,10 +136,12 @@ xfs_log_calc_minimum_size(
         * Also, the log size should be a multiple of the log stripe unit, round
         * it up to lsunit boundary if lsunit is specified.
         */
-       if (lsunit)
-               min_logblks = roundup(BTOBB(max_logres), lsunit) + 2 * lsunit;
-       else
+       if (lsunit) {
+               min_logblks = roundup_64(BTOBB(max_logres), lsunit) +
+                             2 * lsunit;
+       } else
                min_logblks = BTOBB(max_logres) + 2 * BBSIZE;
        min_logblks *= XFS_MIN_LOG_FACTOR;
+
        return XFS_BB_TO_FSB(mp, min_logblks);
 }