From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: Re: [patch] allow mkfs to make larger logs
Date: Fri, 11 Jul 2008 08:44:34 +1000 [thread overview]
Message-ID: <20080710224434.GY11558@disturbed> (raw)
In-Reply-To: <20080522061222.GQ173056135@sgi.com>
ping?
On Thu, May 22, 2008 at 04:12:22PM +1000, David Chinner wrote:
>
> Increase the maximum log size supported by mkfs.
>
> The log size can be increased easily in mkfs by changing a few
> defines and a couple of types to allow the log size to increase to
> just under 2GB. Theoretically, the log size can be made much, much
> larger than this (up to 2^32 sectors), but going beyond 2^31
> *bytes* causes integer overflow issues in the kernel log code.
>
> We use a maximum size of just under 2GB as exactly 2GB will cause
> overflow issues on the first transaction reservation.
>
> Maximum log size is now reached at a fs size of ~4TB.
>
> Signed-off-by: Dave Chinner <dgc@sgi.com>
> ---
> xfsprogs/include/xfs_fs.h | 11 +++++++----
> xfsprogs/mkfs/xfs_mkfs.c | 14 +++++++-------
> 2 files changed, 14 insertions(+), 11 deletions(-)
>
> Index: xfs-cmds/xfsprogs/include/xfs_fs.h
> ===================================================================
> --- xfs-cmds.orig/xfsprogs/include/xfs_fs.h 2008-05-15 16:32:52.929462025 +1000
> +++ xfs-cmds/xfsprogs/include/xfs_fs.h 2008-05-15 18:50:19.494520368 +1000
> @@ -248,10 +248,13 @@ typedef struct xfs_fsop_resblks {
> * Minimum and maximum sizes need for growth checks
> */
> #define XFS_MIN_AG_BLOCKS 64
> -#define XFS_MIN_LOG_BLOCKS 512
> -#define XFS_MAX_LOG_BLOCKS (64 * 1024)
> -#define XFS_MIN_LOG_BYTES (256 * 1024)
> -#define XFS_MAX_LOG_BYTES (128 * 1024 * 1024)
> +#define XFS_MIN_LOG_BLOCKS 512ULL
> +#define XFS_MAX_LOG_BLOCKS (1024 * 1024ULL)
> +#define XFS_MIN_LOG_BYTES (10 * 1024 * 1024ULL)
> +
> +/* keep the maximum size under 2^31 by a small amount */
> +#define XFS_MAX_LOG_BYTES \
> + ((2 * 1024 * 1024 * 1024ULL) - XFS_MIN_LOG_BYTES)
>
> /*
> * Structures for XFS_IOC_FSGROWFSDATA, XFS_IOC_FSGROWFSLOG & XFS_IOC_FSGROWFSRT
> Index: xfs-cmds/xfsprogs/mkfs/xfs_mkfs.c
> ===================================================================
> --- xfs-cmds.orig/xfsprogs/mkfs/xfs_mkfs.c 2008-05-15 16:32:53.013451121 +1000
> +++ xfs-cmds/xfsprogs/mkfs/xfs_mkfs.c 2008-05-15 18:47:54.093343349 +1000
> @@ -362,13 +362,13 @@ validate_log_size(__uint64_t logblocks,
> }
> if (logblocks > XFS_MAX_LOG_BLOCKS) {
> fprintf(stderr,
> - _("log size %lld blocks too large, maximum size is %d blocks\n"),
> + _("log size %lld blocks too large, maximum size is %lld blocks\n"),
> (long long)logblocks, XFS_MAX_LOG_BLOCKS);
> usage();
> }
> if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) {
> fprintf(stderr,
> - _("log size %lld bytes too large, maximum size is %d bytes\n"),
> + _("log size %lld bytes too large, maximum size is %lld bytes\n"),
> (long long)(logblocks << blocklog), XFS_MAX_LOG_BYTES);
> usage();
> }
> @@ -1724,7 +1724,7 @@ reported by the device (%u).\n"),
> min_logblocks = max_tr_res * XFS_MIN_LOG_FACTOR;
> min_logblocks = MAX(XFS_MIN_LOG_BLOCKS, min_logblocks);
> if (!logsize && dblocks >= (1024*1024*1024) >> blocklog)
> - min_logblocks = MAX(min_logblocks, (10*1024*1024)>>blocklog);
> + min_logblocks = MAX(min_logblocks, XFS_MIN_LOG_BYTES>>blocklog);
> if (logsize && xi.logBBsize > 0 && logblocks > DTOBT(xi.logBBsize)) {
> fprintf(stderr,
> _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"),
> @@ -1744,10 +1744,10 @@ _("size %s specified for log subvolume i
> logblocks = 0;
> } else if (loginternal && !logsize) {
> /*
> - * logblocks grows from min_logblocks to XFS_MAX_LOG_BLOCKS
> - * at 128GB
> - *
> - * 2048 = 128GB / MAX_LOG_BYTES
> + * With a 2GB max log size, default to maximum size
> + * at 4TB. This keeps the same ratio from the older
> + * max log size of 128M at 256GB fs size. IOWs,
> + * the ratio of fs size to log size is 2048:1.
> */
> logblocks = (dblocks << blocklog) / 2048;
> logblocks = logblocks >> blocklog;
>
>
--
Dave Chinner
david@fromorbit.com
prev parent reply other threads:[~2008-07-10 22:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-22 6:12 [patch] allow mkfs to make larger logs David Chinner
2008-05-22 13:23 ` Christoph Hellwig
2009-05-10 19:35 ` Christoph Hellwig
2008-07-10 22:44 ` Dave Chinner [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080710224434.GY11558@disturbed \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.