]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFV r330973: 9164 assert: newds == os->os_dsl_dataset
authorAndriy Gapon <avg@FreeBSD.org>
Thu, 15 Mar 2018 08:49:21 +0000 (08:49 +0000)
committerAndriy Gapon <avg@FreeBSD.org>
Thu, 15 Mar 2018 08:49:21 +0000 (08:49 +0000)
commit289c14e8112e2ecf4dcc67580d291ea57e7f7f32
tree571b37c9f6b233e51cbc459b6a85a35d1f64aeef
parentd90930743f7c4bc31dd9e32f6c4e3f7574357cc3
parent695c9b66458eb297d0ab2832533e42294f621d86
MFV r330973: 9164 assert: newds == os->os_dsl_dataset

illumos/illumos-gate@5f5913bb83405db87f982abee80162a479d363af
https://github.com/illumos/illumos-gate/commit/5f5913bb83405db87f982abee80162a479d363af

https://www.illumos.org/issues/9164
  This issue has been reported by Alan Somers as
  https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=225877

  dmu_objset_refresh_ownership() first disowns a dataset (and releases
  it) and then owns it again. There is an assert that the new dataset
  object is the same as the old dataset object.  When running ZFS Test
  Suite on FreeBSD we see this panic from zpool_upgrade_007_pos test:

  panic: solaris assert: newds == os->os_dsl_dataset (0xfffff80045f4c000
  == 0xfffff80021ab4800)

  I see that the old dataset has dsl_dataset_evict_async() pending in
  ds_dbu.dbu_tqent and its ds_dbuf is NULL.

Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: Don Brady <don.brady@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Author: Andriy Gapon <avg@FreeBSD.org>

PR: 225877
Reported by: asomers
MFC after: 1 week
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c