Skip to content

Commit ebf8e3a

Browse files
committed
Illumos #1909: disk sync write perf regression when slog is used post oi_148
Reviewed by: Matt Ahrens <matt@delphix.com> Reviewed by: Eric Schrock <eric.schrock@delphix.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Bill Pijewski <wdp@joyent.com> Reviewed by: Richard Elling <richard.elling@richardelling.com> Reviewed by: Steve Gonczi <gonczi@comcast.net> Reviewed by: Garrett D'Amore <garrett.damore@gmail.com> Reviewed by: Dan McDonald <danmcd@nexenta.com> Reviewed by: Albert Lee <trisk@nexenta.com> Approved by: Eric Schrock <eric.schrock@delphix.com> Refererces to Illumos issue: https://www.illumos.org/issues/1909 Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #680
1 parent 409dc1a commit ebf8e3a

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

module/zfs/metaslab.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*/
2121
/*
2222
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23-
* Copyright (c) 2011 by Delphix. All rights reserved.
23+
* Copyright (c) 2012 by Delphix. All rights reserved.
2424
*/
2525

2626
#include <sys/zfs_context.h>
@@ -38,7 +38,7 @@
3838
* avoid having to load lots of space_maps in a given txg. There are,
3939
* however, some cases where we want to avoid "fast" ganging and instead
4040
* we want to do an exhaustive search of all metaslabs on this device.
41-
* Currently we don't allow any gang or dump device related allocations
41+
* Currently we don't allow any gang, zil, or dump device related allocations
4242
* to "fast" gang.
4343
*/
4444
#define CAN_FASTGANG(flags) \

module/zfs/zio.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
*/
2121
/*
2222
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23-
* Copyright (c) 2011 by Delphix. All rights reserved.
23+
* Copyright (c) 2012 by Delphix. All rights reserved.
2424
* Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
2525
*/
2626

@@ -2317,13 +2317,22 @@ zio_alloc_zil(spa_t *spa, uint64_t txg, blkptr_t *new_bp, blkptr_t *old_bp,
23172317

23182318
ASSERT(txg > spa_syncing_txg(spa));
23192319

2320-
if (use_slog)
2320+
/*
2321+
* ZIL blocks are always contiguous (i.e. not gang blocks) so we
2322+
* set the METASLAB_GANG_AVOID flag so that they don't "fast gang"
2323+
* when allocating them.
2324+
*/
2325+
if (use_slog) {
23212326
error = metaslab_alloc(spa, spa_log_class(spa), size,
2322-
new_bp, 1, txg, old_bp, METASLAB_HINTBP_AVOID);
2327+
new_bp, 1, txg, old_bp,
2328+
METASLAB_HINTBP_AVOID | METASLAB_GANG_AVOID);
2329+
}
23232330

2324-
if (error)
2331+
if (error) {
23252332
error = metaslab_alloc(spa, spa_normal_class(spa), size,
2326-
new_bp, 1, txg, old_bp, METASLAB_HINTBP_AVOID);
2333+
new_bp, 1, txg, old_bp,
2334+
METASLAB_HINTBP_AVOID | METASLAB_GANG_AVOID);
2335+
}
23272336

23282337
if (error == 0) {
23292338
BP_SET_LSIZE(new_bp, size);

0 commit comments

Comments
 (0)