xfs
[Top] [All Lists]

Re: [PATCH] mkfs: log stripe unit fails to influence default log size

To: Dave Chinner <david@xxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
Subject: Re: [PATCH] mkfs: log stripe unit fails to influence default log size
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Mon, 23 Feb 2015 21:48:17 -0600
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1424745588-16361-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1424745588-16361-1-git-send-email-david@xxxxxxxxxxxxx>
On 2/23/15 8:39 PM, Dave Chinner wrote:
> From: Dave Chinner <dchinner@xxxxxxxxxx>
> 
> This fails:
> 
> # mkfs.xfs -f -l version=2,su=256k /dev/ram1
> log size 2560 blocks too small, minimum size is 3264 blocks
> ....
> 
> We should be automatically calculating an appropriate, valid log
> size when the user does not specify it.
> 
> Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx>
> ---
>  mkfs/xfs_mkfs.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
> index 66711cb..5e10c4e 100644
> --- a/mkfs/xfs_mkfs.c
> +++ b/mkfs/xfs_mkfs.c
> @@ -2441,9 +2441,11 @@ _("size %s specified for log subvolume is too large, 
> maximum is %lld blocks\n"),
>                        */
>                       logblocks = (dblocks << blocklog) / 2048;
>                       logblocks = logblocks >> blocklog;
> -                     logblocks = MAX(min_logblocks, logblocks);
>               }
>  
> +             /* Log size must exceed the minimum the geometry requires. */

ok, so 4G device with 4k sectors; 4k sectors + log sunit is what made
the calculated min_logblocks large enough that it is failing without
this change.  Those details should probably be in the commit log.

Also, nitpick, it doesn't have to exceed, and MAX() doesn't make it exceed....
maybe:

                /* Log size can't be less than the minimum the geometry 
requires. */

Code wise it's fine, I'd prefer to see commit log & comment tidied up, but:

Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx>

> +             logblocks = MAX(min_logblocks, logblocks);
> +
>               /* make sure the log fits wholly within an AG */
>               if (logblocks >= agsize)
>                       logblocks = min_logblocks;
> 

<Prev in Thread] Current Thread [Next in Thread>