diff options
author | mm <mm@FreeBSD.org> | 2012-08-19 09:34:04 +0000 |
---|---|---|
committer | mm <mm@FreeBSD.org> | 2012-08-19 09:34:04 +0000 |
commit | cb5fb23a856fd77e2df9317f14c941c325f37287 (patch) | |
tree | a85c950d10bbcfe62f968188bdbb77a8bcd0f1bd | |
parent | 5f16f826203771ebf06788b1e628defffe2fb8cc (diff) | |
download | FreeBSD-src-cb5fb23a856fd77e2df9317f14c941c325f37287.zip FreeBSD-src-cb5fb23a856fd77e2df9317f14c941c325f37287.tar.gz |
Update vendor-sys/illumos/dist to illumos-gate 13772:2579580ac955
References:
https://www.illumos.org/issues/3085 (zfs diff panics)
Obtained from: ssh://anonhg@hg.illumos.org/illumos-gate
-rw-r--r-- | uts/common/Makefile.files | 4 | ||||
-rw-r--r-- | uts/common/fs/zfs/dsl_dataset.c | 7 | ||||
-rw-r--r-- | uts/common/fs/zfs/spa_history.c | 4 |
3 files changed, 9 insertions, 6 deletions
diff --git a/uts/common/Makefile.files b/uts/common/Makefile.files index a2b4396..4213fa8 100644 --- a/uts/common/Makefile.files +++ b/uts/common/Makefile.files @@ -1846,7 +1846,7 @@ IDM_OBJS += $(IDM_SHARED_OBJS) \ VR_OBJS += vr.o -ATGE_OBJS += atge_main.o atge_l1e.o atge_mii.o atge_l1.o +ATGE_OBJS += atge_main.o atge_l1e.o atge_mii.o atge_l1.o atge_l1c.o YGE_OBJS = yge.o @@ -1921,7 +1921,7 @@ IXGBE_OBJS = ixgbe_82598.o ixgbe_82599.o ixgbe_api.o \ ixgbe_buf.o ixgbe_debug.o ixgbe_gld.o \ ixgbe_log.o ixgbe_main.o \ ixgbe_osdep.o ixgbe_rx.o ixgbe_stat.o \ - ixgbe_tx.o + ixgbe_tx.o ixgbe_x540.o ixgbe_mbx.o # # NIU 10G/1G driver module diff --git a/uts/common/fs/zfs/dsl_dataset.c b/uts/common/fs/zfs/dsl_dataset.c index 555797e..12ed3ca 100644 --- a/uts/common/fs/zfs/dsl_dataset.c +++ b/uts/common/fs/zfs/dsl_dataset.c @@ -3903,6 +3903,10 @@ dsl_dataset_user_release_sync(void *arg1, void *tag, dmu_tx_t *tx) VERIFY(error == 0 || error == ENOENT); zapobj = ds->ds_phys->ds_userrefs_obj; VERIFY(0 == zap_remove(mos, zapobj, ra->htag, tx)); + + spa_history_log_internal_ds(ds, "release", tx, + "tag = %s refs now = %lld", ra->htag, (longlong_t)refs); + if (ds->ds_userrefs == 0 && ds->ds_phys->ds_num_children == 1 && DS_IS_DEFER_DESTROY(ds)) { struct dsl_ds_destroyarg dsda = {0}; @@ -3913,9 +3917,6 @@ dsl_dataset_user_release_sync(void *arg1, void *tag, dmu_tx_t *tx) /* We already did the destroy_check */ dsl_dataset_destroy_sync(&dsda, tag, tx); } - - spa_history_log_internal_ds(ds, "release", tx, - "tag = %s refs now = %lld", ra->htag, (longlong_t)refs); } static int diff --git a/uts/common/fs/zfs/spa_history.c b/uts/common/fs/zfs/spa_history.c index f2c32f5..96970da 100644 --- a/uts/common/fs/zfs/spa_history.c +++ b/uts/common/fs/zfs/spa_history.c @@ -440,8 +440,10 @@ log_internal(nvlist_t *nvl, const char *operation, spa_t *spa, * If this is part of creating a pool, not everything is * initialized yet, so don't bother logging the internal events. */ - if (tx->tx_txg == TXG_INITIAL) + if (tx->tx_txg == TXG_INITIAL) { + fnvlist_free(nvl); return; + } msg = kmem_alloc(vsnprintf(NULL, 0, fmt, adx) + 1, KM_SLEEP); (void) vsprintf(msg, fmt, adx); |