Mercurial > illumos > illumos-gate
changeset 4808:63629eaeb41a
6498144 ::kmastat could be even easier to read
6580855 spa_scrub() should be called with spa_namespace_lock held, not the config lock
author | ek110237 |
---|---|
date | Mon, 06 Aug 2007 15:11:21 -0700 |
parents | 661e1fe142fa |
children | 449081c7eb0a |
files | usr/src/cmd/mdb/common/modules/genunix/genunix.c usr/src/cmd/ztest/ztest.c usr/src/uts/common/fs/zfs/spa.c usr/src/uts/common/fs/zfs/vdev.c usr/src/uts/common/fs/zfs/zfs_ioctl.c |
diffstat | 5 files changed, 39 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/cmd/mdb/common/modules/genunix/genunix.c Mon Aug 06 15:02:44 2007 -0700 +++ b/usr/src/cmd/mdb/common/modules/genunix/genunix.c Mon Aug 06 15:11:21 2007 -0700 @@ -110,6 +110,10 @@ */ #define NINTR 16 +#define KILOS 10 +#define MEGS 20 +#define GIGS 30 + #ifndef STACK_BIAS #define STACK_BIAS 0 #endif @@ -1092,7 +1096,7 @@ { " buf", " size", "------", "%6u " }, { " buf", "in use", "------", "%6u " }, { " buf", " total", "------", "%6u " }, - { " memory", " in use", "---------", "%9u " }, + { " memory", " in use", "----------", "%9u%c " }, { " alloc", " succeed", "---------", "%9u " }, { "alloc", " fail", "-----", "%5u " }, { NULL, NULL, NULL, NULL } @@ -1101,9 +1105,9 @@ static datafmt_t vmemfmt[] = { { "vmem ", "name ", "-------------------------", "%-*s " }, - { " memory", " in use", "---------", "%9llu " }, - { " memory", " total", "----------", "%10llu " }, - { " memory", " import", "---------", "%9llu " }, + { " memory", " in use", "----------", "%9llu%c " }, + { " memory", " total", "-----------", "%10llu%c " }, + { " memory", " import", "----------", "%9llu%c " }, { " alloc", " succeed", "---------", "%9llu " }, { "alloc", " fail", "-----", "%5llu " }, { NULL, NULL, NULL, NULL } @@ -1196,7 +1200,9 @@ mdb_printf((dfp++)->fmt, cp->cache_bufsize); mdb_printf((dfp++)->fmt, total - avail); mdb_printf((dfp++)->fmt, total); - mdb_printf((dfp++)->fmt, meminuse >> kap->ka_shift); + mdb_printf((dfp++)->fmt, meminuse >> kap->ka_shift, + kap->ka_shift == GIGS ? 'G' : kap->ka_shift == MEGS ? 'M' : + kap->ka_shift == KILOS ? 'K' : 'B'); mdb_printf((dfp++)->fmt, alloc); mdb_printf((dfp++)->fmt, cp->cache_alloc_fail); mdb_printf("\n"); @@ -1218,9 +1224,11 @@ len = MIN(17, strlen(v->vm_name)); - mdb_printf("Total [%s]%*s %6s %6s %6s %9u %9u %5u\n", v->vm_name, + mdb_printf("Total [%s]%*s %6s %6s %6s %9u%c %9u %5u\n", v->vm_name, 17 - len, "", "", "", "", - kv->kv_meminuse >> kap->ka_shift, kv->kv_alloc, kv->kv_fail); + kv->kv_meminuse >> kap->ka_shift, + kap->ka_shift == GIGS ? 'G' : kap->ka_shift == MEGS ? 'M' : + kap->ka_shift == KILOS ? 'K' : 'B', kv->kv_alloc, kv->kv_fail); return (WALK_NEXT); } @@ -1246,9 +1254,15 @@ mdb_printf("%*s", ident, ""); mdb_printf((dfp++)->fmt, 25 - ident, v->vm_name); - mdb_printf((dfp++)->fmt, vkp->vk_mem_inuse.value.ui64); - mdb_printf((dfp++)->fmt, vkp->vk_mem_total.value.ui64); - mdb_printf((dfp++)->fmt, vkp->vk_mem_import.value.ui64 >> *shiftp); + mdb_printf((dfp++)->fmt, vkp->vk_mem_inuse.value.ui64 >> *shiftp, + *shiftp == GIGS ? 'G' : *shiftp == MEGS ? 'M' : + *shiftp == KILOS ? 'K' : 'B'); + mdb_printf((dfp++)->fmt, vkp->vk_mem_total.value.ui64 >> *shiftp, + *shiftp == GIGS ? 'G' : *shiftp == MEGS ? 'M' : + *shiftp == KILOS ? 'K' : 'B'); + mdb_printf((dfp++)->fmt, vkp->vk_mem_import.value.ui64 >> *shiftp, + *shiftp == GIGS ? 'G' : *shiftp == MEGS ? 'M' : + *shiftp == KILOS ? 'K' : 'B'); mdb_printf((dfp++)->fmt, vkp->vk_alloc.value.ui64); mdb_printf((dfp++)->fmt, vkp->vk_fail.value.ui64); @@ -1267,9 +1281,9 @@ ka.ka_shift = 0; if (mdb_getopts(argc, argv, - 'k', MDB_OPT_SETBITS, 10, &ka.ka_shift, - 'm', MDB_OPT_SETBITS, 20, &ka.ka_shift, - 'g', MDB_OPT_SETBITS, 30, &ka.ka_shift, NULL) != argc) + 'k', MDB_OPT_SETBITS, KILOS, &ka.ka_shift, + 'm', MDB_OPT_SETBITS, MEGS, &ka.ka_shift, + 'g', MDB_OPT_SETBITS, GIGS, &ka.ka_shift, NULL) != argc) return (DCMD_USAGE); for (dfp = kmemfmt; dfp->hdr1 != NULL; dfp++)
--- a/usr/src/cmd/ztest/ztest.c Mon Aug 06 15:02:44 2007 -0700 +++ b/usr/src/cmd/ztest/ztest.c Mon Aug 06 15:11:21 2007 -0700 @@ -2663,9 +2663,13 @@ { spa_t *spa = dmu_objset_spa(za->za_os); + mutex_enter(&spa_namespace_lock); (void) spa_scrub(spa, POOL_SCRUB_EVERYTHING, B_FALSE); + mutex_exit(&spa_namespace_lock); (void) poll(NULL, 0, 1000); /* wait a second, then force a restart */ + mutex_enter(&spa_namespace_lock); (void) spa_scrub(spa, POOL_SCRUB_EVERYTHING, B_FALSE); + mutex_exit(&spa_namespace_lock); } /*
--- a/usr/src/uts/common/fs/zfs/spa.c Mon Aug 06 15:02:44 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/spa.c Mon Aug 06 15:11:21 2007 -0700 @@ -2609,6 +2609,9 @@ uint64_t mintxg, maxtxg; vdev_t *rvd = spa->spa_root_vdev; + ASSERT(MUTEX_HELD(&spa_namespace_lock)); + ASSERT(!spa_config_held(spa, RW_WRITER)); + if ((uint_t)type >= POOL_SCRUB_TYPES) return (ENOTSUP); @@ -3247,8 +3250,8 @@ spa_open_ref(spa, FTAG); mutex_exit(&spa_namespace_lock); spa_async_suspend(spa); + mutex_enter(&spa_namespace_lock); VERIFY(spa_scrub(spa, POOL_SCRUB_NONE, B_TRUE) == 0); - mutex_enter(&spa_namespace_lock); spa_close(spa, FTAG); if (spa->spa_state != POOL_STATE_UNINITIALIZED) {
--- a/usr/src/uts/common/fs/zfs/vdev.c Mon Aug 06 15:02:44 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/vdev.c Mon Aug 06 15:11:21 2007 -0700 @@ -1689,8 +1689,7 @@ vdev_config_dirty(vd->vdev_top); if (vd->vdev_faulted) - VERIFY(spa_scrub(spa, POOL_SCRUB_RESILVER, - B_TRUE) == 0); + spa_async_request(spa, SPA_ASYNC_RESILVER); spa_event_notify(spa, vd, ESC_ZFS_VDEV_CLEAR); }
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c Mon Aug 06 15:02:44 2007 -0700 +++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c Mon Aug 06 15:11:21 2007 -0700 @@ -796,9 +796,9 @@ if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) return (error); - spa_config_enter(spa, RW_READER, FTAG); + mutex_enter(&spa_namespace_lock); error = spa_scrub(spa, zc->zc_cookie, B_FALSE); - spa_config_exit(spa, FTAG); + mutex_exit(&spa_namespace_lock); spa_close(spa, FTAG); @@ -2014,8 +2014,8 @@ { spa_t *spa; vdev_t *vd; + uint64_t txg; int error; - uint64_t txg; if ((error = spa_open(zc->zc_name, &spa, FTAG)) != 0) return (error);