From ea2caed88755f36c1e1b80ff01b3577e9838a877 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Thu, 27 Jan 2011 12:14:12 +1100 Subject: [PATCH] --- yaml --- r: 232663 b: refs/heads/master c: b8fc82630ae289bb4e661567808afc59e3298dce h: refs/heads/master i: 232661: 329bd7c492ae7a428f2fd798350ca700bb199cd7 232659: 19a8e12db8283ef676b6dd4121ce6f8d8eb36778 232655: d51c4f2e62a86f68a0f3f2f0b41fbc4832851d93 v: v3 --- [refs] | 2 +- trunk/fs/xfs/xfs_iomap.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 26489bf95752..38f664bb56f4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e34a314c5e49fe6b763568f6576b19f1299c33c2 +refs/heads/master: b8fc82630ae289bb4e661567808afc59e3298dce diff --git a/trunk/fs/xfs/xfs_iomap.c b/trunk/fs/xfs/xfs_iomap.c index 55582bd66659..8a0f044750c3 100644 --- a/trunk/fs/xfs/xfs_iomap.c +++ b/trunk/fs/xfs/xfs_iomap.c @@ -337,7 +337,12 @@ xfs_iomap_prealloc_size( int shift = 0; int64_t freesp; - alloc_blocks = XFS_B_TO_FSB(mp, ip->i_size); + /* + * rounddown_pow_of_two() returns an undefined result + * if we pass in alloc_blocks = 0. Hence the "+ 1" to + * ensure we always pass in a non-zero value. + */ + alloc_blocks = XFS_B_TO_FSB(mp, ip->i_size) + 1; alloc_blocks = XFS_FILEOFF_MIN(MAXEXTLEN, rounddown_pow_of_two(alloc_blocks));