Project

General

Profile

Bug #9164

assert: newds == os->os_dsl_dataset

Added by Andriy Gapon over 1 year ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
zfs - Zettabyte File System
Start date:
2018-02-21
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage

Description

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)

assfail3() at assfail3+0x2c/frame 0xfffffe002a621480
dmu_objset_refresh_ownership() at dmu_objset_refresh_ownership+0x161/frame
0xfffffe002a6215c0
zfs_ioc_userspace_upgrade() at zfs_ioc_userspace_upgrade+0x97/frame
0xfffffe002a621600
zfs_prop_set_special() at zfs_prop_set_special+0x465/frame 0xfffffe002a621670
zfs_set_prop_nvlist() at zfs_set_prop_nvlist+0x23f/frame 0xfffffe002a6216f0
zfs_ioc_set_prop() at zfs_ioc_set_prop+0x129/frame 0xfffffe002a621740
zfsdev_ioctl() at zfsdev_ioctl+0x76b/frame 0xfffffe002a6217e0

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

History

#2

Updated by Electric Monk over 1 year ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit 5f5913bb83405db87f982abee80162a479d363af

commit  5f5913bb83405db87f982abee80162a479d363af
Author: Andriy Gapon <avg@FreeBSD.org>
Date:   2018-03-14T15:55:08.000Z

    9164 assert: newds == os->os_dsl_dataset
    Reviewed by: Matt Ahrens <mahrens@delphix.com>
    Reviewed by: Don Brady <don.brady@delphix.com>
    Approved by: Richard Lowe <richlowe@richlowe.net>

Also available in: Atom PDF