On 05/17/2013 01:39 AM, Jeff Liu wrote:
From: Jie Liu <jeff.liu@xxxxxxxxxx>
Add source files for xfs_log_rlimit.[c|h].
The new source would be used for the log space validation.
Update: To build the kernel, I'm getting by on a sysadmin hack that
looks like this:
--- linux/fs/xfs/xfs_log_rlimit.c.orig 2013-05-17 03:36:28.983493357 -0400
+++ linux/fs/xfs/xfs_log_rlimit.c 2013-05-17 04:21:07.090661828 -0400
@@ -127,8 +127,10 @@
* Also, the log size should be a multiple of the log stripe unit, round
* it up to lsunit boundary if lsunit is specified.
*/
- minlblks = lsunit ? (roundup(BTOBB(maxlres), lsunit) + 2 * lsunit) * 2 :
- BTOBB(maxlres) * 2;
+ minlblks = lsunit ?
+ (roundup((const int)(BTOBB(maxlres)), lsunit) +
+ 2 * lsunit) * 2 :
+ BTOBB(maxlres) * 2;
if (log->l_logBBsize < minlblks) {
xfs_crit(mp,
However, that makes no sense. There is a roundup in <linux/kernel.h>
that goes like this:
/* The `const' in roundup() prevents gcc-3.3 from calling __divdi3 */
#define roundup(x, y) ( \
{ \
const typeof(y) __y = y; \
(((x) + (__y - 1)) / __y) * __y; \
} \
)
Okay, so that gave me the inspiration to cast the type so gcc-4.8.0
wouldn't call __divdi3. But why did this make a difference?
Disclaimer: I'm not a C macro guru, so I don't know which random
sequence of punctuation keys would make roundup() happy.
Michael
_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs