9280 Assertion failure while running removal_with_ganging test with 4K devices
illumos/illumos-gate@243952c7ee Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: John Kennedy <john.kennedy@delphix.com> Approved by: Garrett D'Amore <garrett@damore.org> Author: Matt Ahrens <Matt.Ahrens@delphix.com>
This commit is contained in:
parent
a1773e8b7a
commit
a622bac50f
@ -162,7 +162,7 @@ typedef struct ztest_shared_opts {
|
||||
int zo_init;
|
||||
uint64_t zo_time;
|
||||
uint64_t zo_maxloops;
|
||||
uint64_t zo_metaslab_gang_bang;
|
||||
uint64_t zo_metaslab_force_ganging;
|
||||
} ztest_shared_opts_t;
|
||||
|
||||
static const ztest_shared_opts_t ztest_opts_defaults = {
|
||||
@ -184,10 +184,10 @@ static const ztest_shared_opts_t ztest_opts_defaults = {
|
||||
.zo_init = 1,
|
||||
.zo_time = 300, /* 5 minutes */
|
||||
.zo_maxloops = 50, /* max loops during spa_freeze() */
|
||||
.zo_metaslab_gang_bang = 32 << 10
|
||||
.zo_metaslab_force_ganging = 32 << 10
|
||||
};
|
||||
|
||||
extern uint64_t metaslab_gang_bang;
|
||||
extern uint64_t metaslab_force_ganging;
|
||||
extern uint64_t metaslab_df_alloc_threshold;
|
||||
extern uint64_t zfs_deadman_synctime_ms;
|
||||
extern int metaslab_preload_limit;
|
||||
@ -565,12 +565,12 @@ usage(boolean_t requested)
|
||||
const ztest_shared_opts_t *zo = &ztest_opts_defaults;
|
||||
|
||||
char nice_vdev_size[NN_NUMBUF_SZ];
|
||||
char nice_gang_bang[NN_NUMBUF_SZ];
|
||||
char nice_force_ganging[NN_NUMBUF_SZ];
|
||||
FILE *fp = requested ? stdout : stderr;
|
||||
|
||||
nicenum(zo->zo_vdev_size, nice_vdev_size, sizeof (nice_vdev_size));
|
||||
nicenum(zo->zo_metaslab_gang_bang, nice_gang_bang,
|
||||
sizeof (nice_gang_bang));
|
||||
nicenum(zo->zo_metaslab_force_ganging, nice_force_ganging,
|
||||
sizeof (nice_force_ganging));
|
||||
|
||||
(void) fprintf(fp, "Usage: %s\n"
|
||||
"\t[-v vdevs (default: %llu)]\n"
|
||||
@ -605,7 +605,7 @@ usage(boolean_t requested)
|
||||
zo->zo_raidz_parity, /* -R */
|
||||
zo->zo_datasets, /* -d */
|
||||
zo->zo_threads, /* -t */
|
||||
nice_gang_bang, /* -g */
|
||||
nice_force_ganging, /* -g */
|
||||
zo->zo_init, /* -i */
|
||||
(u_longlong_t)zo->zo_killrate, /* -k */
|
||||
zo->zo_pool, /* -p */
|
||||
@ -674,8 +674,8 @@ process_options(int argc, char **argv)
|
||||
zo->zo_threads = MAX(1, value);
|
||||
break;
|
||||
case 'g':
|
||||
zo->zo_metaslab_gang_bang = MAX(SPA_MINBLOCKSIZE << 1,
|
||||
value);
|
||||
zo->zo_metaslab_force_ganging =
|
||||
MAX(SPA_MINBLOCKSIZE << 1, value);
|
||||
break;
|
||||
case 'i':
|
||||
zo->zo_init = value;
|
||||
@ -6418,7 +6418,7 @@ main(int argc, char **argv)
|
||||
zs = ztest_shared;
|
||||
|
||||
if (fd_data_str) {
|
||||
metaslab_gang_bang = ztest_opts.zo_metaslab_gang_bang;
|
||||
metaslab_force_ganging = ztest_opts.zo_metaslab_force_ganging;
|
||||
metaslab_df_alloc_threshold =
|
||||
zs->zs_metaslab_df_alloc_threshold;
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
((flags) & (METASLAB_GANG_CHILD | METASLAB_GANG_HEADER))
|
||||
|
||||
uint64_t metaslab_aliquot = 512ULL << 10;
|
||||
uint64_t metaslab_gang_bang = SPA_MAXBLOCKSIZE + 1; /* force gang blocks */
|
||||
uint64_t metaslab_force_ganging = SPA_MAXBLOCKSIZE + 1; /* force gang blocks */
|
||||
|
||||
/*
|
||||
* Since we can touch multiple metaslabs (and their respective space maps)
|
||||
@ -3080,7 +3080,7 @@ metaslab_alloc_dva(spa_t *spa, metaslab_class_t *mc, uint64_t psize,
|
||||
/*
|
||||
* For testing, make some blocks above a certain size be gang blocks.
|
||||
*/
|
||||
if (psize >= metaslab_gang_bang && (ddi_get_lbolt() & 3) == 0) {
|
||||
if (psize >= metaslab_force_ganging && (ddi_get_lbolt() & 3) == 0) {
|
||||
metaslab_trace_add(zal, NULL, NULL, psize, d, TRACE_FORCE_GANG);
|
||||
return (SET_ERROR(ENOSPC));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user