Linux XFS filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, cem@kernel.org
Cc: Christoph Hellwig <hch@lst.de>, linux-xfs@vger.kernel.org
Subject: [PATCH 2/2] mkfs: allow sizing internal logs for concurrency
Date: Tue, 12 Mar 2024 19:13:06 -0700	[thread overview]
Message-ID: <171029433624.2064472.9402883298972245484.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <171029433596.2064472.12750332076033168727.stgit@frogsfrogsfrogs>

From: Darrick J. Wong <djwong@kernel.org>

Add a -l option to mkfs so that sysadmins can configure the filesystem
so that the log can handle a certain number of transactions (front and
backend) without any threads contending for log grant space.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
---
 man/man8/mkfs.xfs.8.in |   19 +++++++++
 mkfs/xfs_mkfs.c        |  101 +++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 118 insertions(+), 2 deletions(-)


diff --git a/man/man8/mkfs.xfs.8.in b/man/man8/mkfs.xfs.8.in
index b18daa233959..8060d342c2a4 100644
--- a/man/man8/mkfs.xfs.8.in
+++ b/man/man8/mkfs.xfs.8.in
@@ -795,6 +795,25 @@ if you want to disable this feature for older kernels which don't support
 it.
 .IP
 This option is only tunable on the deprecated V4 format.
+.TP
+.BI concurrency= value
+Allocate a log that is estimated to be large enough to handle the desired level
+of concurrency without userspace program threads contending for log space.
+This scheme will neither create a log smaller than the minimum required,
+nor create a log larger than the maximum possible.
+This option is only valid for internal logs and is not compatible with the
+size option.
+This option is not compatible with the
+.B logdev
+or
+.B size
+options.
+The magic value
+.I nr_cpus
+or
+.I 1
+or no value at all will set this parameter to the number of active processors
+in the system.
 .RE
 .PP
 .PD 0
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index f69a4a1dac9b..f4a9bf20f391 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -105,6 +105,7 @@ enum {
 	L_FILE,
 	L_NAME,
 	L_LAZYSBCNTR,
+	L_CONCURRENCY,
 	L_MAX_OPTS,
 };
 
@@ -541,6 +542,7 @@ static struct opt_params lopts = {
 		[L_FILE] = "file",
 		[L_NAME] = "name",
 		[L_LAZYSBCNTR] = "lazy-count",
+		[L_CONCURRENCY] = "concurrency",
 		[L_MAX_OPTS] = NULL,
 	},
 	.subopt_params = {
@@ -561,7 +563,8 @@ static struct opt_params lopts = {
 		  .defaultval = 1,
 		},
 		{ .index = L_SIZE,
-		  .conflicts = { { NULL, LAST_CONFLICT } },
+		  .conflicts = { { &lopts, L_CONCURRENCY },
+				 { NULL, LAST_CONFLICT } },
 		  .convert = true,
 		  .minval = 2 * 1024 * 1024LL,	/* XXX: XFS_MIN_LOG_BYTES */
 		  .maxval = XFS_MAX_LOG_BYTES,
@@ -592,6 +595,7 @@ static struct opt_params lopts = {
 		  .conflicts = { { &lopts, L_AGNUM },
 				 { &lopts, L_NAME },
 				 { &lopts, L_INTERNAL },
+				 { &lopts, L_CONCURRENCY },
 				 { NULL, LAST_CONFLICT } },
 		  .defaultval = SUBOPT_NEEDS_VAL,
 		},
@@ -606,6 +610,7 @@ static struct opt_params lopts = {
 		},
 		{ .index = L_FILE,
 		  .conflicts = { { &lopts, L_INTERNAL },
+				 { &lopts, L_CONCURRENCY },
 				 { NULL, LAST_CONFLICT } },
 		  .minval = 0,
 		  .maxval = 1,
@@ -624,6 +629,15 @@ static struct opt_params lopts = {
 		  .maxval = 1,
 		  .defaultval = 1,
 		},
+		{ .index = L_CONCURRENCY,
+		  .conflicts = { { &lopts, L_SIZE },
+				 { &lopts, L_FILE },
+				 { &lopts, L_DEV },
+				 { NULL, LAST_CONFLICT } },
+		  .minval = 0,
+		  .maxval = INT_MAX,
+		  .defaultval = 1,
+		},
 	},
 };
 
@@ -904,6 +918,7 @@ struct cli_params {
 	int	is_supported;
 	int	proto_slashes_are_spaces;
 	int	data_concurrency;
+	int	log_concurrency;
 
 	/* parameters where 0 is not a valid value */
 	int64_t	agcount;
@@ -1012,7 +1027,8 @@ usage( void )
 			    projid32bit=0|1,sparse=0|1,nrext64=0|1]\n\
 /* no discard */	[-K]\n\
 /* log subvol */	[-l agnum=n,internal,size=num,logdev=xxx,version=n\n\
-			    sunit=value|su=num,sectsize=num,lazy-count=0|1]\n\
+			    sunit=value|su=num,sectsize=num,lazy-count=0|1,\n\
+			    concurrency=num]\n\
 /* label */		[-L label (maximum 12 characters)]\n\
 /* naming */		[-n size=num,version=2|ci,ftype=0|1]\n\
 /* no-op info only */	[-N]\n\
@@ -1712,6 +1728,30 @@ inode_opts_parser(
 	return 0;
 }
 
+static void
+set_log_concurrency(
+	struct opt_params	*opts,
+	int			subopt,
+	const char		*value,
+	struct cli_params	*cli)
+{
+	long long		optnum;
+
+	/*
+	 * "nr_cpus" or 1 means set the concurrency level to the CPU count.  If
+	 * this cannot be determined, fall back to the default computation.
+	 */
+	if (!strcmp(value, "nr_cpus"))
+		optnum = 1;
+	else
+		optnum = getnum(value, opts, subopt);
+
+	if (optnum == 1)
+		cli->log_concurrency = nr_cpus();
+	else
+		cli->log_concurrency = optnum;
+}
+
 static int
 log_opts_parser(
 	struct opt_params	*opts,
@@ -1752,6 +1792,9 @@ log_opts_parser(
 	case L_LAZYSBCNTR:
 		cli->sb_feat.lazy_sb_counters = getnum(value, opts, subopt);
 		break;
+	case L_CONCURRENCY:
+		set_log_concurrency(opts, subopt, value, cli);
+		break;
 	default:
 		return -EINVAL;
 	}
@@ -3602,6 +3645,48 @@ _("internal log size %lld too large, must be less than %d\n"),
 	cfg->logblocks = min(cfg->logblocks, *max_logblocks);
 }
 
+static uint64_t
+calc_concurrency_logblocks(
+	struct mkfs_params	*cfg,
+	struct cli_params	*cli,
+	struct libxfs_init	*xi,
+	unsigned int		max_tx_bytes)
+{
+	uint64_t		log_bytes;
+	uint64_t		logblocks = cfg->logblocks;
+	unsigned int		new_logblocks;
+
+	if (cli->log_concurrency < 0) {
+		if (!ddev_is_solidstate(xi))
+			goto out;
+
+		cli->log_concurrency = nr_cpus();
+	}
+	if (cli->log_concurrency == 0)
+		goto out;
+
+	/*
+	 * If this filesystem is smaller than a gigabyte, there's little to be
+	 * gained from making the log larger.
+	 */
+	if (cfg->dblocks < GIGABYTES(1, cfg->blocklog))
+		goto out;
+
+	/*
+	 * Create a log that is large enough to handle simultaneous maximally
+	 * sized transactions at the concurrency level specified by the user
+	 * without blocking for space.  Increase the figure by 50% so that
+	 * background threads can also run.
+	 */
+	log_bytes = max_tx_bytes * 3 * cli->log_concurrency / 2;
+	new_logblocks = min(XFS_MAX_LOG_BYTES >> cfg->blocklog,
+				log_bytes >> cfg->blocklog);
+
+	logblocks = max(logblocks, new_logblocks);
+out:
+	return logblocks;
+}
+
 static void
 calculate_log_size(
 	struct mkfs_params	*cfg,
@@ -3612,6 +3697,7 @@ calculate_log_size(
 	struct xfs_sb		*sbp = &mp->m_sb;
 	int			min_logblocks;	/* absolute minimum */
 	int			max_logblocks;	/* absolute max for this AG */
+	unsigned int		max_tx_bytes = 0;
 	struct xfs_mount	mount;
 	struct libxfs_init	dummy_init = { };
 
@@ -3620,6 +3706,12 @@ calculate_log_size(
 	mount.m_sb = *sbp;
 	libxfs_mount(&mount, &mp->m_sb, &dummy_init, 0);
 	min_logblocks = libxfs_log_calc_minimum_size(&mount);
+	if (cli->log_concurrency != 0) {
+		struct xfs_trans_res	res;
+
+		libxfs_log_get_max_trans_res(&mount, &res);
+		max_tx_bytes = res.tr_logres * res.tr_logcount;
+	}
 	libxfs_umount(&mount);
 
 	ASSERT(min_logblocks);
@@ -3682,6 +3774,10 @@ _("max log size %d smaller than min log size %d, filesystem is too small\n"),
 		cfg->logblocks = (cfg->dblocks << cfg->blocklog) / 2048;
 		cfg->logblocks = cfg->logblocks >> cfg->blocklog;
 
+		if (cli->log_concurrency != 0)
+			cfg->logblocks = calc_concurrency_logblocks(cfg, cli,
+							xi, max_tx_bytes);
+
 		/* But don't go below a reasonable size */
 		cfg->logblocks = max(cfg->logblocks,
 				XFS_MIN_REALISTIC_LOG_BLOCKS(cfg->blocklog));
@@ -4203,6 +4299,7 @@ main(
 		.loginternal = 1,
 		.is_supported	= 1,
 		.data_concurrency = -1, /* auto detect non-mechanical storage */
+		.log_concurrency = -1, /* auto detect non-mechanical ddev */
 	};
 	struct mkfs_params	cfg = {};
 


  parent reply	other threads:[~2024-03-13  2:13 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-13  1:41 [PATCHBOMB] xfsprogs: everything headed towards 6.8 Darrick J. Wong
2024-03-13  1:47 ` [PATCHSET 01/10] xfsprogs: convert utilities to use new rt helpers Darrick J. Wong
2024-03-13  1:49   ` [PATCH 01/13] libxfs: fix incorrect porting to 6.7 Darrick J. Wong
2024-03-13 21:58     ` Christoph Hellwig
2024-03-13  1:50   ` [PATCH 02/13] mkfs: fix log sunit rounding when external logs are in use Darrick J. Wong
2024-03-13 21:59     ` Christoph Hellwig
2024-03-14 23:43       ` Darrick J. Wong
2024-03-13  1:50   ` [PATCH 03/13] xfs_repair: fix confusing rt space units in the duplicate detection code Darrick J. Wong
2024-03-13 22:00     ` Christoph Hellwig
2024-03-13  1:50   ` [PATCH 04/13] libxfs: create a helper to compute leftovers of realtime extents Darrick J. Wong
2024-03-13 22:00     ` Christoph Hellwig
2024-03-13  1:50   ` [PATCH 05/13] libxfs: use helpers to convert rt block numbers to rt extent numbers Darrick J. Wong
2024-03-13 22:00     ` Christoph Hellwig
2024-03-13  1:51   ` [PATCH 06/13] xfs_repair: convert utility to use new rt extent helpers and types Darrick J. Wong
2024-03-13 22:01     ` Christoph Hellwig
2024-03-13  1:51   ` [PATCH 07/13] mkfs: " Darrick J. Wong
2024-03-13 22:01     ` Christoph Hellwig
2024-03-13  1:51   ` [PATCH 08/13] xfs_{db,repair}: convert open-coded xfs_rtword_t pointer accesses to helper Darrick J. Wong
2024-03-13 22:01     ` Christoph Hellwig
2024-03-13  1:52   ` [PATCH 09/13] xfs_repair: convert helpers for rtbitmap block/wordcount computations Darrick J. Wong
2024-03-13 22:01     ` Christoph Hellwig
2024-03-13  1:52   ` [PATCH 10/13] xfs_{db,repair}: use accessor functions for bitmap words Darrick J. Wong
2024-03-13 22:02     ` Christoph Hellwig
2024-03-13  1:52   ` [PATCH 11/13] xfs_{db,repair}: use helpers for rtsummary block/wordcount computations Darrick J. Wong
2024-03-13 22:02     ` Christoph Hellwig
2024-03-13  1:52   ` [PATCH 12/13] xfs_{db,repair}: use accessor functions for summary info words Darrick J. Wong
2024-03-13 22:02     ` Christoph Hellwig
2024-03-13  1:53   ` [PATCH 13/13] xfs_{db,repair}: use m_blockwsize instead of sb_blocksize for rt blocks Darrick J. Wong
2024-03-13 22:03     ` Christoph Hellwig
2024-03-13 17:20   ` [PATCHSET 01/10] xfsprogs: convert utilities to use new rt helpers Bill O'Donnell
2024-03-13  1:47 ` [PATCHSET 02/10] libxfs: sync with 6.8 Darrick J. Wong
2024-03-13  1:53   ` [PATCH 01/67] xfs: use xfs_defer_pending objects to recover intent items Darrick J. Wong
2024-03-13  1:53   ` [PATCH 02/67] xfs: recreate work items when recovering " Darrick J. Wong
2024-03-13  1:53   ` [PATCH 03/67] xfs: use xfs_defer_finish_one to finish recovered work items Darrick J. Wong
2024-03-13  1:54   ` [PATCH 04/67] xfs: move ->iop_recover to xfs_defer_op_type Darrick J. Wong
2024-03-13  1:54   ` [PATCH 05/67] xfs: hoist intent done flag setting to ->finish_item callsite Darrick J. Wong
2024-03-13  1:54   ` [PATCH 06/67] xfs: hoist ->create_intent boilerplate to its callsite Darrick J. Wong
2024-03-13  1:54   ` [PATCH 07/67] xfs: use xfs_defer_create_done for the relogging operation Darrick J. Wong
2024-03-13  1:55   ` [PATCH 08/67] xfs: clean out XFS_LI_DIRTY setting boilerplate from ->iop_relog Darrick J. Wong
2024-03-13  1:55   ` [PATCH 09/67] xfs: hoist xfs_trans_add_item calls to defer ops functions Darrick J. Wong
2024-03-13  1:55   ` [PATCH 10/67] xfs: move ->iop_relog to struct xfs_defer_op_type Darrick J. Wong
2024-03-13  1:55   ` [PATCH 11/67] xfs: make rextslog computation consistent with mkfs Darrick J. Wong
2024-03-13  1:56   ` [PATCH 12/67] xfs: fix 32-bit truncation in xfs_compute_rextslog Darrick J. Wong
2024-03-13  1:56   ` [PATCH 13/67] xfs: don't allow overly small or large realtime volumes Darrick J. Wong
2024-03-13  1:56   ` [PATCH 14/67] xfs: elide ->create_done calls for unlogged deferred work Darrick J. Wong
2024-03-13  1:56   ` [PATCH 15/67] xfs: don't append work items to logged xfs_defer_pending objects Darrick J. Wong
2024-03-13  1:57   ` [PATCH 16/67] xfs: allow pausing of pending deferred work items Darrick J. Wong
2024-03-13  1:57   ` [PATCH 17/67] xfs: remove __xfs_free_extent_later Darrick J. Wong
2024-03-13  1:57   ` [PATCH 18/67] xfs: automatic freeing of freshly allocated unwritten space Darrick J. Wong
2024-03-13  1:57   ` [PATCH 19/67] xfs: remove unused fields from struct xbtree_ifakeroot Darrick J. Wong
2024-03-13  1:58   ` [PATCH 20/67] xfs: force small EFIs for reaping btree extents Darrick J. Wong
2024-03-13  1:58   ` [PATCH 21/67] xfs: ensure logflagsp is initialized in xfs_bmap_del_extent_real Darrick J. Wong
2024-03-13  1:58   ` [PATCH 22/67] xfs: update dir3 leaf block metadata after swap Darrick J. Wong
2024-03-13  1:59   ` [PATCH 23/67] xfs: extract xfs_da_buf_copy() helper function Darrick J. Wong
2024-03-13  1:59   ` [PATCH 24/67] xfs: move xfs_ondisk.h to libxfs/ Darrick J. Wong
2024-03-13  1:59   ` [PATCH 25/67] xfs: consolidate the xfs_attr_defer_* helpers Darrick J. Wong
2024-03-13  1:59   ` [PATCH 26/67] xfs: store an ops pointer in struct xfs_defer_pending Darrick J. Wong
2024-03-13  2:00   ` [PATCH 27/67] xfs: pass the defer ops instead of type to xfs_defer_start_recovery Darrick J. Wong
2024-03-13  2:00   ` [PATCH 28/67] xfs: pass the defer ops directly to xfs_defer_add Darrick J. Wong
2024-03-13  2:00   ` [PATCH 29/67] xfs: force all buffers to be written during btree bulk load Darrick J. Wong
2024-03-13  2:00   ` [PATCH 30/67] xfs: set XBF_DONE on newly formatted btree block that are ready for writing Darrick J. Wong
2024-03-13  2:01   ` [PATCH 31/67] xfs: read leaf blocks when computing keys for bulkloading into node blocks Darrick J. Wong
2024-03-13  2:01   ` [PATCH 32/67] xfs: move btree bulkload record initialization to ->get_record implementations Darrick J. Wong
2024-03-13  2:01   ` [PATCH 33/67] xfs: constrain dirty buffers while formatting a staged btree Darrick J. Wong
2024-03-13  2:01   ` [PATCH 34/67] xfs: repair free space btrees Darrick J. Wong
2024-03-13  2:02   ` [PATCH 35/67] xfs: repair inode btrees Darrick J. Wong
2024-03-13  2:02   ` [PATCH 36/67] xfs: repair refcount btrees Darrick J. Wong
2024-03-13  2:02   ` [PATCH 37/67] xfs: dont cast to char * for XFS_DFORK_*PTR macros Darrick J. Wong
2024-03-13  2:02   ` [PATCH 38/67] xfs: set inode sick state flags when we zap either ondisk fork Darrick J. Wong
2024-03-13  2:03   ` [PATCH 39/67] xfs: zap broken inode forks Darrick J. Wong
2024-03-13  2:03   ` [PATCH 40/67] xfs: repair inode fork block mapping data structures Darrick J. Wong
2024-03-13  2:03   ` [PATCH 41/67] xfs: create a ranged query function for refcount btrees Darrick J. Wong
2024-03-13  2:03   ` [PATCH 42/67] xfs: create a new inode fork block unmap helper Darrick J. Wong
2024-03-13  2:04   ` [PATCH 43/67] xfs: improve dquot iteration for scrub Darrick J. Wong
2024-03-13  2:04   ` [PATCH 44/67] xfs: add lock protection when remove perag from radix tree Darrick J. Wong
2024-03-13  2:04   ` [PATCH 45/67] xfs: fix perag leak when growfs fails Darrick J. Wong
2024-03-13  2:05   ` [PATCH 46/67] xfs: remove the xfs_alloc_arg argument to xfs_bmap_btalloc_accounting Darrick J. Wong
2024-03-13  2:05   ` [PATCH 47/67] xfs: also use xfs_bmap_btalloc_accounting for RT allocations Darrick J. Wong
2024-03-13  2:05   ` [PATCH 48/67] xfs: return -ENOSPC from xfs_rtallocate_* Darrick J. Wong
2024-03-13  2:05   ` [PATCH 49/67] xfs: indicate if xfs_bmap_adjacent changed ap->blkno Darrick J. Wong
2024-03-13  2:06   ` [PATCH 50/67] xfs: move xfs_rtget_summary to xfs_rtbitmap.c Darrick J. Wong
2024-03-13  2:06   ` [PATCH 51/67] xfs: split xfs_rtmodify_summary_int Darrick J. Wong
2024-03-13  2:06   ` [PATCH 52/67] xfs: remove rt-wrappers from xfs_format.h Darrick J. Wong
2024-03-13  2:06   ` [PATCH 53/67] xfs: remove XFS_RTMIN/XFS_RTMAX Darrick J. Wong
2024-03-13  2:07   ` [PATCH 54/67] xfs: make if_data a void pointer Darrick J. Wong
2024-03-13  2:07   ` [PATCH 55/67] xfs: return if_data from xfs_idata_realloc Darrick J. Wong
2024-03-13  2:07   ` [PATCH 56/67] xfs: move the xfs_attr_sf_lookup tracepoint Darrick J. Wong
2024-03-13  2:07   ` [PATCH 57/67] xfs: simplify xfs_attr_sf_findname Darrick J. Wong
2024-03-13  2:08   ` [PATCH 58/67] xfs: remove xfs_attr_shortform_lookup Darrick J. Wong
2024-03-13  2:08   ` [PATCH 59/67] xfs: use xfs_attr_sf_findname in xfs_attr_shortform_getvalue Darrick J. Wong
2024-03-13  2:08   ` [PATCH 60/67] xfs: remove struct xfs_attr_shortform Darrick J. Wong
2024-03-13  2:08   ` [PATCH 61/67] xfs: remove xfs_attr_sf_hdr_t Darrick J. Wong
2024-03-13  2:09   ` [PATCH 62/67] xfs: turn the XFS_DA_OP_REPLACE checks in xfs_attr_shortform_addname into asserts Darrick J. Wong
2024-03-13  2:09   ` [PATCH 63/67] xfs: fix a use after free in xfs_defer_finish_recovery Darrick J. Wong
2024-03-13  2:09   ` [PATCH 64/67] xfs: use the op name in trace_xlog_intent_recovery_failed Darrick J. Wong
2024-03-13  2:09   ` [PATCH 65/67] xfs: fix backwards logic in xfs_bmap_alloc_account Darrick J. Wong
2024-03-13  2:10   ` [PATCH 66/67] xfs: reset XFS_ATTR_INCOMPLETE filter on node removal Darrick J. Wong
2024-03-13  2:10   ` [PATCH 67/67] xfs: remove conditional building of rt geometry validator functions Darrick J. Wong
2024-03-13 17:43   ` [PATCHSET 02/10] libxfs: sync with 6.8 Bill O'Donnell
2024-03-13  1:47 ` [PATCHSET 03/10] xfs_repair: faster btree bulkloading Darrick J. Wong
2024-03-13  2:10   ` [PATCH 1/2] xfs_repair: adjust btree bulkloading slack computations to match online repair Darrick J. Wong
2024-03-13 17:48     ` Bill O'Donnell
2024-03-13 22:04     ` Christoph Hellwig
2024-03-13  2:11   ` [PATCH 2/2] xfs_repair: bulk load records into new btree blocks Darrick J. Wong
2024-03-13 17:49     ` Bill O'Donnell
2024-03-13 22:04     ` Christoph Hellwig
2024-03-13  1:48 ` [PATCHSET 04/10] xfsprogs: bug fixes for 6.8 Darrick J. Wong
2024-03-13  2:11   ` [PATCH 1/1] xfs_repair: double-check with shortform attr verifiers Darrick J. Wong
2024-03-13 17:52     ` Bill O'Donnell
2024-03-13 22:05     ` Christoph Hellwig
2024-03-13  1:48 ` [PATCHSET V2 05/10] xfsprogs: fix log sector size detection Darrick J. Wong
2024-03-13  2:11   ` [PATCH 1/5] libxfs: remove the unused fs_topology_t typedef Darrick J. Wong
2024-03-13  2:11   ` [PATCH 2/5] libxfs: refactor the fs_topology structure Darrick J. Wong
2024-03-13  2:12   ` [PATCH 3/5] libxfs: remove the S_ISREG check from blkid_get_topology Darrick J. Wong
2024-03-13  2:12   ` [PATCH 4/5] libxfs: also query log device topology in get_topology Darrick J. Wong
2024-03-13  2:12   ` [PATCH 5/5] mkfs: use a sensible log sector size default Darrick J. Wong
2024-03-13 17:54   ` [PATCHSET V2 05/10] xfsprogs: fix log sector size detection Bill O'Donnell
2024-03-13 22:06   ` Christoph Hellwig
2024-03-13  1:48 ` [PATCHSET 06/10] mkfs: scale shards on ssds Darrick J. Wong
2024-03-13  2:12   ` [PATCH 1/2] mkfs: allow sizing allocation groups for concurrency Darrick J. Wong
2024-03-13  2:13   ` Darrick J. Wong [this message]
2024-03-13 18:17   ` [PATCHSET 06/10] mkfs: scale shards on ssds Bill O'Donnell
2024-03-13  1:48 ` [PATCHSET v29.4 07/10] xfs_scrub: scan metadata files in parallel Darrick J. Wong
2024-03-13  2:13   ` [PATCH 1/3] libfrog: rename XFROG_SCRUB_TYPE_* to XFROG_SCRUB_GROUP_* Darrick J. Wong
2024-03-13  2:13   ` [PATCH 2/3] libfrog: promote XFROG_SCRUB_DESCR_SUMMARY to a scrub type Darrick J. Wong
2024-03-13  2:13   ` [PATCH 3/3] xfs_scrub: scan whole-fs metadata files in parallel Darrick J. Wong
2024-03-13 18:19   ` [PATCHSET v29.4 07/10] xfs_scrub: scan " Bill O'Donnell
2024-03-13  1:49 ` [PATCHSET v29.4 08/10] xfs_repair: rebuild inode fork mappings Darrick J. Wong
2024-03-13  2:14   ` [PATCH 1/3] xfs_repair: push inode buf and dinode pointers all the way to inode fork processing Darrick J. Wong
2024-03-13 21:58     ` Bill O'Donnell
2024-03-13 22:10     ` Christoph Hellwig
2024-03-13  2:14   ` [PATCH 2/3] xfs_repair: sync bulkload data structures with kernel newbt code Darrick J. Wong
2024-03-13 22:11     ` Christoph Hellwig
2024-03-14 16:35     ` Bill O'Donnell
2024-03-13  2:14   ` [PATCH 3/3] xfs_repair: rebuild block mappings from rmapbt data Darrick J. Wong
2024-03-14  1:59     ` Christoph Hellwig
2024-03-14 23:56       ` Darrick J. Wong
2024-03-17 21:10         ` Christoph Hellwig
2024-03-14 17:13     ` Bill O'Donnell
2024-03-18 18:27     ` [PATCH v24.5.1 " Darrick J. Wong
2024-03-13  1:49 ` [PATCHSET 09/10] xfs_repair: support more than 4 billion records Darrick J. Wong
2024-03-13  2:14   ` [PATCH 1/8] xfs_db: add a bmbt inflation command Darrick J. Wong
2024-03-14  2:01     ` Christoph Hellwig
2024-03-14 23:57       ` Darrick J. Wong
2024-03-18 18:32     ` [PATCH v24.5.1 " Darrick J. Wong
2024-03-13  2:15   ` [PATCH 2/8] xfs_repair: slab and bag structs need to track more than 2^32 items Darrick J. Wong
2024-03-14  2:02     ` Christoph Hellwig
2024-03-13  2:15   ` [PATCH 3/8] xfs_repair: support more than 2^32 rmapbt records per AG Darrick J. Wong
2024-03-14  2:02     ` Christoph Hellwig
2024-03-13  2:15   ` [PATCH 4/8] xfs_repair: support more than 2^32 owners per physical block Darrick J. Wong
2024-03-14  2:03     ` Christoph Hellwig
2024-03-14 23:59       ` Darrick J. Wong
2024-03-18 18:32     ` [PATCH v24.5.1 " Darrick J. Wong
2024-03-13  2:15   ` [PATCH 5/8] xfs_repair: clean up lock resources Darrick J. Wong
2024-03-14  2:03     ` Christoph Hellwig
2024-03-13  2:16   ` [PATCH 6/8] xfs_repair: constrain attr fork extent count Darrick J. Wong
2024-03-14  2:03     ` Christoph Hellwig
2024-03-13  2:16   ` [PATCH 7/8] xfs_repair: don't create block maps for data files Darrick J. Wong
2024-03-14  2:05     ` Christoph Hellwig
2024-03-15  0:02       ` Darrick J. Wong
2024-03-17 21:11         ` Christoph Hellwig
2024-03-18 18:33     ` [PATCH v24.5.1 " Darrick J. Wong
2024-03-13  2:16   ` [PATCH 8/8] xfs_repair: support more than INT_MAX block maps Darrick J. Wong
2024-03-14  2:06     ` Christoph Hellwig
2024-03-15  0:03       ` Darrick J. Wong
2024-03-13  1:49 ` [PATCHSET v29.4 10/10] libxfs: prepare to sync with 6.9 Darrick J. Wong
2024-03-13  2:17   ` [PATCH 1/3] libxfs: actually set m_fsname Darrick J. Wong
2024-03-14  2:07     ` Christoph Hellwig
2024-03-13  2:17   ` [PATCH 2/3] libxfs: clean up xfs_da_unmount usage Darrick J. Wong
2024-03-14  2:08     ` Christoph Hellwig
2024-03-13  2:17   ` [PATCH 3/3] libfrog: create a new scrub group for things requiring full inode scans Darrick J. Wong
2024-03-14  2:08     ` Christoph Hellwig
2024-03-18 21:30 ` [PATCHSET v29.4] xfsprogs: various bug fixes for 6.8 Darrick J. Wong
2024-03-18 21:30   ` [PATCH 1/4] xfs_db: fix alignment checks in getbitval Darrick J. Wong
2024-03-18 21:30   ` [PATCH 2/4] xfs_scrub: fix threadcount estimates for phase 6 Darrick J. Wong
2024-03-18 21:30   ` [PATCH 3/4] xfs_scrub: don't fail while reporting media scan errors Darrick J. Wong
2024-03-18 21:31   ` [PATCH 4/4] xfs_io: add linux madvise advice codes Darrick J. Wong
  -- strict thread matches above, loose matches on Subject: below --
2024-04-17 21:17 [PATCHSET 08/11] mkfs: scale shards on ssds Darrick J. Wong
2024-04-17 21:42 ` [PATCH 2/2] mkfs: allow sizing internal logs for concurrency Darrick J. Wong
2024-03-26  2:56 [PATCHSET 06/18] mkfs: scale shards on ssds Darrick J. Wong
2024-03-26  3:23 ` [PATCH 2/2] mkfs: allow sizing internal logs for concurrency Darrick J. Wong
2023-12-31 19:40 [PATCHSET 02/40] mkfs: scale shards on ssds Darrick J. Wong
2023-12-31 22:05 ` [PATCH 2/2] mkfs: allow sizing internal logs for concurrency Darrick J. Wong
2024-01-05  4:52   ` Christoph Hellwig

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=171029433624.2064472.9402883298972245484.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=cem@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox