Generated by Cython 0.24

Yellow lines hint at Python interaction.
Click on a line that starts with a "`+`" to see the C code that Cython generated for it.

Raw output: libzfs.c

     0001: # cython: c_string_type=unicode, c_string_encoding=ascii

     0002: #-

     0003: # Copyright (c) 2014 iXsystems, Inc.

     0004: # All rights reserved.

     0005: #

     0006: # Redistribution and use in source and binary forms, with or without

     0007: # modification, are permitted provided that the following conditions

     0008: # are met:

     0009: # 1. Redistributions of source code must retain the above copyright

     0010: #    notice, this list of conditions and the following disclaimer.

     0011: # 2. Redistributions in binary form must reproduce the above copyright

     0012: #    notice, this list of conditions and the following disclaimer in the

     0013: #    documentation and/or other materials provided with the distribution.

     0014: #

     0015: # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND

     0016: # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

     0017: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

     0018: # ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE

     0019: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL

     0020: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS

     0021: # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

     0022: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

     0023: # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY

     0024: # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

     0025: # SUCH DAMAGE.

     0026: #

     0027:

    +0028: import os

      __pyx_t_1 = __Pyx_Import(__pyx_n_s_os, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 28, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_os, __pyx_t_1) < 0) __PYX_ERR(1, 28, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0029: import stat

      __pyx_t_1 = __Pyx_Import(__pyx_n_s_stat, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 29, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_stat, __pyx_t_1) < 0) __PYX_ERR(1, 29, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0030: import enum

      __pyx_t_1 = __Pyx_Import(__pyx_n_s_enum, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 30, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_enum, __pyx_t_1) < 0) __PYX_ERR(1, 30, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0031: import errno

      __pyx_t_1 = __Pyx_Import(__pyx_n_s_errno, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 31, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_errno, __pyx_t_1) < 0) __PYX_ERR(1, 31, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0032: import threading

      __pyx_t_1 = __Pyx_Import(__pyx_n_s_threading, 0, -1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 32, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_threading, __pyx_t_1) < 0) __PYX_ERR(1, 32, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     0033: import cython

     0034: cimport libzfs

     0035: cimport zfs

     0036: cimport nvpair

    +0037: from datetime import datetime

      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_n_s_datetime);
      __Pyx_GIVEREF(__pyx_n_s_datetime);
      PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_datetime);
      __pyx_t_2 = __Pyx_Import(__pyx_n_s_datetime, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_datetime, __pyx_t_1) < 0) __PYX_ERR(1, 37, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0038: from libc.errno cimport errno

     0039: from libc.stdint cimport uintptr_t

     0040: from libc.string cimport memset, strncpy

     0041: from libc.stdlib cimport free, realloc

     0042:

     0043:

     0044: include "nvpair.pxi"

     0045: include "converter.pxi"

     0046:

     0047:

    +0048: class DatasetType(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DatasetType, __pyx_n_s_DatasetType, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DatasetType, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_DatasetType, __pyx_t_4) < 0) __PYX_ERR(1, 48, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0049:     FILESYSTEM = zfs.ZFS_TYPE_FILESYSTEM

      __pyx_t_4 = __Pyx_PyInt_From_zfs_type_t(ZFS_TYPE_FILESYSTEM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 49, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FILESYSTEM, __pyx_t_4) < 0) __PYX_ERR(1, 49, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0050:     VOLUME = zfs.ZFS_TYPE_VOLUME

      __pyx_t_4 = __Pyx_PyInt_From_zfs_type_t(ZFS_TYPE_VOLUME); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VOLUME, __pyx_t_4) < 0) __PYX_ERR(1, 50, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0051:     SNAPSHOT = zfs.ZFS_TYPE_SNAPSHOT

      __pyx_t_4 = __Pyx_PyInt_From_zfs_type_t(ZFS_TYPE_SNAPSHOT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 51, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SNAPSHOT, __pyx_t_4) < 0) __PYX_ERR(1, 51, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0052:     BOOKMARK = zfs.ZFS_TYPE_BOOKMARK

      __pyx_t_4 = __Pyx_PyInt_From_zfs_type_t(ZFS_TYPE_BOOKMARK); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 52, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BOOKMARK, __pyx_t_4) < 0) __PYX_ERR(1, 52, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0053:

     0054:

    +0055: class Error(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_Error, __pyx_n_s_Error, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_Error, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_Error, __pyx_t_4) < 0) __PYX_ERR(1, 55, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0056:     SUCCESS = libzfs.EZFS_SUCCESS

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_SUCCESS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 56, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SUCCESS, __pyx_t_4) < 0) __PYX_ERR(1, 56, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0057:     NOMEM = libzfs.EZFS_NOMEM

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOMEM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 57, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOMEM, __pyx_t_4) < 0) __PYX_ERR(1, 57, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0058:     BADPROP = libzfs.EZFS_BADPROP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADPROP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 58, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADPROP, __pyx_t_4) < 0) __PYX_ERR(1, 58, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0059:     PROPREADONLY = libzfs.EZFS_PROPREADONLY

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PROPREADONLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 59, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROPREADONLY, __pyx_t_4) < 0) __PYX_ERR(1, 59, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0060:     PROPTYPE = libzfs.EZFS_PROPTYPE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PROPTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 60, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROPTYPE, __pyx_t_4) < 0) __PYX_ERR(1, 60, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0061:     PROPNONINHERIT = libzfs.EZFS_PROPNONINHERIT

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PROPNONINHERIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 61, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROPNONINHERIT, __pyx_t_4) < 0) __PYX_ERR(1, 61, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0062:     PROPSPACE = libzfs.EZFS_PROPSPACE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PROPSPACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 62, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROPSPACE, __pyx_t_4) < 0) __PYX_ERR(1, 62, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0063:     BADTYPE = libzfs.EZFS_BADTYPE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADTYPE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 63, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADTYPE, __pyx_t_4) < 0) __PYX_ERR(1, 63, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0064:     BUSY = libzfs.EZFS_BUSY

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BUSY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 64, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BUSY, __pyx_t_4) < 0) __PYX_ERR(1, 64, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0065:     EXISTS = libzfs.EZFS_EXISTS

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_EXISTS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_EXISTS, __pyx_t_4) < 0) __PYX_ERR(1, 65, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0066:     NOENT = libzfs.EZFS_NOENT

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOENT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 66, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOENT, __pyx_t_4) < 0) __PYX_ERR(1, 66, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0067:     BADSTREAM = libzfs.EZFS_BADSTREAM

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADSTREAM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 67, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADSTREAM, __pyx_t_4) < 0) __PYX_ERR(1, 67, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0068:     DSREADONLY = libzfs.EZFS_DSREADONLY

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_DSREADONLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 68, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DSREADONLY, __pyx_t_4) < 0) __PYX_ERR(1, 68, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0069:     VOLTOOBIG = libzfs.EZFS_VOLTOOBIG

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_VOLTOOBIG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 69, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VOLTOOBIG, __pyx_t_4) < 0) __PYX_ERR(1, 69, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0070:     INVALIDNAME = libzfs.EZFS_INVALIDNAME

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_INVALIDNAME); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 70, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_INVALIDNAME, __pyx_t_4) < 0) __PYX_ERR(1, 70, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0071:     BADRESTORE = libzfs.EZFS_BADRESTORE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADRESTORE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 71, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADRESTORE, __pyx_t_4) < 0) __PYX_ERR(1, 71, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0072:     BADBACKUP = libzfs.EZFS_BADBACKUP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADBACKUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 72, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADBACKUP, __pyx_t_4) < 0) __PYX_ERR(1, 72, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0073:     BADTARGET = libzfs.EZFS_BADTARGET

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADTARGET); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 73, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADTARGET, __pyx_t_4) < 0) __PYX_ERR(1, 73, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0074:     NODEVICE = libzfs.EZFS_NODEVICE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NODEVICE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 74, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NODEVICE, __pyx_t_4) < 0) __PYX_ERR(1, 74, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0075:     BADDEV = libzfs.EZFS_BADDEV

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADDEV); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 75, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADDEV, __pyx_t_4) < 0) __PYX_ERR(1, 75, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0076:     NOREPLICAS = libzfs.EZFS_NOREPLICAS

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOREPLICAS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 76, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOREPLICAS, __pyx_t_4) < 0) __PYX_ERR(1, 76, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0077:     RESILVERING = libzfs.EZFS_RESILVERING

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_RESILVERING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 77, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RESILVERING, __pyx_t_4) < 0) __PYX_ERR(1, 77, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0078:     BADVERSION = libzfs.EZFS_BADVERSION

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADVERSION); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 78, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADVERSION, __pyx_t_4) < 0) __PYX_ERR(1, 78, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0079:     POOLUNAVAIL = libzfs.EZFS_POOLUNAVAIL

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POOLUNAVAIL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 79, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_POOLUNAVAIL, __pyx_t_4) < 0) __PYX_ERR(1, 79, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0080:     DEVOVERFLOW = libzfs.EZFS_DEVOVERFLOW

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_DEVOVERFLOW); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 80, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DEVOVERFLOW, __pyx_t_4) < 0) __PYX_ERR(1, 80, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0081:     BADPATH = libzfs.EZFS_BADPATH

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADPATH); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 81, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADPATH, __pyx_t_4) < 0) __PYX_ERR(1, 81, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0082:     CROSSTARGET = libzfs.EZFS_CROSSTARGET

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_CROSSTARGET); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 82, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CROSSTARGET, __pyx_t_4) < 0) __PYX_ERR(1, 82, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0083:     ZONED = libzfs.EZFS_ZONED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_ZONED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 83, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ZONED, __pyx_t_4) < 0) __PYX_ERR(1, 83, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0084:     MOUNTFAILED = libzfs.EZFS_MOUNTFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_MOUNTFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 84, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_MOUNTFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 84, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0085:     UMOUNTFAILED = libzfs.EZFS_UMOUNTFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_UMOUNTFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 85, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UMOUNTFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 85, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0086:     UNSHARENFSFAILED = libzfs.EZFS_UNSHARENFSFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_UNSHARENFSFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 86, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNSHARENFSFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 86, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0087:     SHARENFSFAILED = libzfs.EZFS_SHARENFSFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_SHARENFSFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 87, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SHARENFSFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 87, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0088:     PERM = libzfs.EZFS_PERM

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PERM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 88, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PERM, __pyx_t_4) < 0) __PYX_ERR(1, 88, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0089:     NOSPC = libzfs.EZFS_NOSPC

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOSPC); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 89, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOSPC, __pyx_t_4) < 0) __PYX_ERR(1, 89, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0090:     FAULT = libzfs.EZFS_FAULT

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_FAULT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 90, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FAULT, __pyx_t_4) < 0) __PYX_ERR(1, 90, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0091:     IO = libzfs.EZFS_IO

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_IO); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 91, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_IO, __pyx_t_4) < 0) __PYX_ERR(1, 91, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0092:     INTR = libzfs.EZFS_INTR

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_INTR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 92, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_INTR, __pyx_t_4) < 0) __PYX_ERR(1, 92, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0093:     ISSPARE = libzfs.EZFS_ISSPARE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_ISSPARE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 93, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ISSPARE, __pyx_t_4) < 0) __PYX_ERR(1, 93, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0094:     INVALCONFIG = libzfs.EZFS_INVALCONFIG

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_INVALCONFIG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 94, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_INVALCONFIG, __pyx_t_4) < 0) __PYX_ERR(1, 94, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0095:     RECURSIVE = libzfs.EZFS_RECURSIVE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_RECURSIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 95, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RECURSIVE, __pyx_t_4) < 0) __PYX_ERR(1, 95, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0096:     NOHISTORY = libzfs.EZFS_NOHISTORY

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOHISTORY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 96, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOHISTORY, __pyx_t_4) < 0) __PYX_ERR(1, 96, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0097:     POOLPROPS = libzfs.EZFS_POOLPROPS

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POOLPROPS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 97, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_POOLPROPS, __pyx_t_4) < 0) __PYX_ERR(1, 97, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0098:     POOL_NOTSUP = libzfs.EZFS_POOL_NOTSUP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POOL_NOTSUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 98, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_POOL_NOTSUP, __pyx_t_4) < 0) __PYX_ERR(1, 98, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0099:     INVALARG = libzfs.EZFS_POOL_INVALARG

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POOL_INVALARG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 99, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_INVALARG, __pyx_t_4) < 0) __PYX_ERR(1, 99, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0100:     NAMETOOLONG = libzfs.EZFS_NAMETOOLONG

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NAMETOOLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NAMETOOLONG, __pyx_t_4) < 0) __PYX_ERR(1, 100, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0101:     OPENFAILED = libzfs.EZFS_OPENFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_OPENFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_OPENFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 101, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0102:     NOCAP = libzfs.EZFS_NOCAP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOCAP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 102, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOCAP, __pyx_t_4) < 0) __PYX_ERR(1, 102, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0103:     LABELFAILED = libzfs.EZFS_LABELFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_LABELFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 103, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_LABELFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 103, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0104:     BADWHO = libzfs.EZFS_BADWHO

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADWHO); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 104, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADWHO, __pyx_t_4) < 0) __PYX_ERR(1, 104, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0105:     BADPERM = libzfs.EZFS_BADPERM

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADPERM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 105, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADPERM, __pyx_t_4) < 0) __PYX_ERR(1, 105, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0106:     BADPERMSET = libzfs.EZFS_BADPERMSET

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADPERMSET); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADPERMSET, __pyx_t_4) < 0) __PYX_ERR(1, 106, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0107:     NODELEGATION = libzfs.EZFS_NODELEGATION

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NODELEGATION); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 107, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NODELEGATION, __pyx_t_4) < 0) __PYX_ERR(1, 107, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0108:     UNSHARESMBFAILED = libzfs.EZFS_UNSHARESMBFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_UNSHARESMBFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 108, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNSHARESMBFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 108, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0109:     SHARESMBFAILED = libzfs.EZFS_SHARESMBFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_SHARESMBFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 109, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SHARESMBFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 109, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0110:     BADCACHE = libzfs.EZFS_BADCACHE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_BADCACHE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 110, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BADCACHE, __pyx_t_4) < 0) __PYX_ERR(1, 110, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0111:     ISL2CACHE = libzfs.EZFS_ISL2CACHE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_ISL2CACHE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 111, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ISL2CACHE, __pyx_t_4) < 0) __PYX_ERR(1, 111, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0112:     VDEVNOTSUP = libzfs.EZFS_VDEVNOTSUP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_VDEVNOTSUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 112, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VDEVNOTSUP, __pyx_t_4) < 0) __PYX_ERR(1, 112, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0113:     NOTSUP = libzfs.EZFS_NOTSUP

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NOTSUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 113, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NOTSUP, __pyx_t_4) < 0) __PYX_ERR(1, 113, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0114:     SPARE = libzfs.EZFS_ACTIVE_SPARE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_ACTIVE_SPARE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 114, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SPARE, __pyx_t_4) < 0) __PYX_ERR(1, 114, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0115:     LOGS = libzfs.EZFS_UNPLAYED_LOGS

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_UNPLAYED_LOGS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 115, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_LOGS, __pyx_t_4) < 0) __PYX_ERR(1, 115, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0116:     RELE = libzfs.EZFS_REFTAG_RELE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_REFTAG_RELE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 116, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RELE, __pyx_t_4) < 0) __PYX_ERR(1, 116, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0117:     HOLD = libzfs.EZFS_REFTAG_HOLD

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_REFTAG_HOLD); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 117, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_HOLD, __pyx_t_4) < 0) __PYX_ERR(1, 117, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0118:     TAGTOOLONG = libzfs.EZFS_TAGTOOLONG

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_TAGTOOLONG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 118, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_TAGTOOLONG, __pyx_t_4) < 0) __PYX_ERR(1, 118, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0119:     PIPEFAILED = libzfs.EZFS_PIPEFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_PIPEFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PIPEFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 119, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0120:     THREADCREATEFAILED = libzfs.EZFS_THREADCREATEFAILED

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_THREADCREATEFAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_THREADCREATEFAILED, __pyx_t_4) < 0) __PYX_ERR(1, 120, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0121:     ONLINE = libzfs.EZFS_POSTSPLIT_ONLINE

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POSTSPLIT_ONLINE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 121, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ONLINE, __pyx_t_4) < 0) __PYX_ERR(1, 121, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0122:     SCRUBBING = libzfs.EZFS_SCRUBBING

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_SCRUBBING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 122, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SCRUBBING, __pyx_t_4) < 0) __PYX_ERR(1, 122, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0123:     SCRUB = libzfs.EZFS_NO_SCRUB

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_NO_SCRUB); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SCRUB, __pyx_t_4) < 0) __PYX_ERR(1, 123, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0124:     DIFF = libzfs.EZFS_DIFF

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_DIFF); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 124, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DIFF, __pyx_t_4) < 0) __PYX_ERR(1, 124, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0125:     DIFFDATA = libzfs.EZFS_DIFFDATA

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_DIFFDATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 125, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DIFFDATA, __pyx_t_4) < 0) __PYX_ERR(1, 125, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0126:     POOLREADONLY = libzfs.EZFS_POOLREADONLY

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_POOLREADONLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 126, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_POOLREADONLY, __pyx_t_4) < 0) __PYX_ERR(1, 126, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0127:     UNKNOWN = libzfs.EZFS_UNKNOWN

      __pyx_t_4 = __Pyx_PyInt_From_int(EZFS_UNKNOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNKNOWN, __pyx_t_4) < 0) __PYX_ERR(1, 127, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0128:

     0129:

    +0130: class PropertySource(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PropertySource, __pyx_n_s_PropertySource, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PropertySource, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_PropertySource, __pyx_t_4) < 0) __PYX_ERR(1, 130, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0131:     NONE = zfs.ZPROP_SRC_NONE

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 131, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(1, 131, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0132:     DEFAULT = zfs.ZPROP_SRC_DEFAULT

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_DEFAULT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 132, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DEFAULT, __pyx_t_4) < 0) __PYX_ERR(1, 132, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0133:     TEMPORARY = zfs.ZPROP_SRC_TEMPORARY

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_TEMPORARY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_TEMPORARY, __pyx_t_4) < 0) __PYX_ERR(1, 133, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0134:     LOCAL = zfs.ZPROP_SRC_LOCAL

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_LOCAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 134, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_LOCAL, __pyx_t_4) < 0) __PYX_ERR(1, 134, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0135:     INHERITED = zfs.ZPROP_SRC_INHERITED

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_INHERITED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 135, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_INHERITED, __pyx_t_4) < 0) __PYX_ERR(1, 135, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0136:     RECEIVED = zfs.ZPROP_SRC_RECEIVED

      __pyx_t_4 = __Pyx_PyInt_From_zprop_source_t(ZPROP_SRC_RECEIVED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 136, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RECEIVED, __pyx_t_4) < 0) __PYX_ERR(1, 136, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0137:

     0138:

    +0139: class VDevState(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_VDevState, __pyx_n_s_VDevState, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_VDevState, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_VDevState, __pyx_t_4) < 0) __PYX_ERR(1, 139, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0140:     UNKNOWN = zfs.VDEV_STATE_UNKNOWN

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_UNKNOWN); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 140, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNKNOWN, __pyx_t_4) < 0) __PYX_ERR(1, 140, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0141:     CLOSED = zfs.VDEV_STATE_CLOSED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_CLOSED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 141, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CLOSED, __pyx_t_4) < 0) __PYX_ERR(1, 141, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0142:     OFFLINE = zfs.VDEV_STATE_OFFLINE

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_OFFLINE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_OFFLINE, __pyx_t_4) < 0) __PYX_ERR(1, 142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0143:     REMOVED = zfs.VDEV_STATE_REMOVED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_REMOVED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_REMOVED, __pyx_t_4) < 0) __PYX_ERR(1, 143, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0144:     CANT_OPEN = zfs.VDEV_STATE_CANT_OPEN

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_CANT_OPEN); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CANT_OPEN, __pyx_t_4) < 0) __PYX_ERR(1, 144, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0145:     FAULTED = zfs.VDEV_STATE_FAULTED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_FAULTED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FAULTED, __pyx_t_4) < 0) __PYX_ERR(1, 145, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0146:     DEGRADED = zfs.VDEV_STATE_DEGRADED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_DEGRADED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DEGRADED, __pyx_t_4) < 0) __PYX_ERR(1, 146, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0147:     HEALTHY = zfs.VDEV_STATE_HEALTHY

      __pyx_t_4 = __Pyx_PyInt_From_vdev_state_t(VDEV_STATE_HEALTHY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 147, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_HEALTHY, __pyx_t_4) < 0) __PYX_ERR(1, 147, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0148:

     0149:

    +0150: class VDevAuxState(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_VDevAuxState, __pyx_n_s_VDevAuxState, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_VDevAuxState, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_VDevAuxState, __pyx_t_4) < 0) __PYX_ERR(1, 150, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0151:     NONE = zfs.VDEV_AUX_NONE

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(1, 151, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0152:     OPEN_FAILED = zfs.VDEV_AUX_OPEN_FAILED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_OPEN_FAILED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_OPEN_FAILED, __pyx_t_4) < 0) __PYX_ERR(1, 152, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0153:     CORRUPT_DATA = zfs.VDEV_AUX_CORRUPT_DATA

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_CORRUPT_DATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_DATA, __pyx_t_4) < 0) __PYX_ERR(1, 153, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0154:     NO_REPLICAS = zfs.VDEV_AUX_NO_REPLICAS

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_NO_REPLICAS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 154, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NO_REPLICAS, __pyx_t_4) < 0) __PYX_ERR(1, 154, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0155:     BAD_GUID_SUM = zfs.VDEV_AUX_BAD_GUID_SUM

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_BAD_GUID_SUM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 155, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BAD_GUID_SUM, __pyx_t_4) < 0) __PYX_ERR(1, 155, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0156:     TOO_SMALL = zfs.VDEV_AUX_TOO_SMALL

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_TOO_SMALL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 156, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_TOO_SMALL, __pyx_t_4) < 0) __PYX_ERR(1, 156, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0157:     BAD_LABEL = zfs.VDEV_AUX_BAD_LABEL

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_BAD_LABEL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BAD_LABEL, __pyx_t_4) < 0) __PYX_ERR(1, 157, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0158:     VERSION_NEWER = zfs.VDEV_AUX_VERSION_NEWER

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_VERSION_NEWER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VERSION_NEWER, __pyx_t_4) < 0) __PYX_ERR(1, 158, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0159:     VERSION_OLDER = zfs.VDEV_AUX_VERSION_OLDER

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_VERSION_OLDER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 159, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VERSION_OLDER, __pyx_t_4) < 0) __PYX_ERR(1, 159, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0160:     UNSUP_FEAT = zfs.VDEV_AUX_UNSUP_FEAT

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_UNSUP_FEAT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 160, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNSUP_FEAT, __pyx_t_4) < 0) __PYX_ERR(1, 160, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0161:     SPARED = zfs.VDEV_AUX_SPARED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_SPARED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 161, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SPARED, __pyx_t_4) < 0) __PYX_ERR(1, 161, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0162:     ERR_EXCEEDED = zfs.VDEV_AUX_ERR_EXCEEDED

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_ERR_EXCEEDED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ERR_EXCEEDED, __pyx_t_4) < 0) __PYX_ERR(1, 162, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0163:     IO_FAILURE = zfs.VDEV_AUX_IO_FAILURE

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_IO_FAILURE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 163, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_IO_FAILURE, __pyx_t_4) < 0) __PYX_ERR(1, 163, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0164:     BAD_LOG = zfs.VDEV_AUX_BAD_LOG

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_BAD_LOG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 164, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BAD_LOG, __pyx_t_4) < 0) __PYX_ERR(1, 164, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0165:     EXTERNAL = zfs.VDEV_AUX_EXTERNAL

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_EXTERNAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 165, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_EXTERNAL, __pyx_t_4) < 0) __PYX_ERR(1, 165, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0166:     SPLIT_POOL = zfs.VDEV_AUX_SPLIT_POOL

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_SPLIT_POOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SPLIT_POOL, __pyx_t_4) < 0) __PYX_ERR(1, 166, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0167:     ASHIFT_TOO_BIG = zfs.VDEV_AUX_ASHIFT_TOO_BIG

      __pyx_t_4 = __Pyx_PyInt_From_vdev_aux_t(VDEV_AUX_ASHIFT_TOO_BIG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ASHIFT_TOO_BIG, __pyx_t_4) < 0) __PYX_ERR(1, 167, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0168:

     0169:

    +0170: class PoolState(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PoolState, __pyx_n_s_PoolState, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PoolState, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_PoolState, __pyx_t_4) < 0) __PYX_ERR(1, 170, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0171:     ACTIVE = zfs.POOL_STATE_ACTIVE

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_ACTIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 171, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ACTIVE, __pyx_t_4) < 0) __PYX_ERR(1, 171, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0172:     EXPORTED = zfs.POOL_STATE_EXPORTED

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_EXPORTED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 172, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_EXPORTED, __pyx_t_4) < 0) __PYX_ERR(1, 172, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0173:     DESTROYED = zfs.POOL_STATE_DESTROYED

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_DESTROYED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 173, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DESTROYED, __pyx_t_4) < 0) __PYX_ERR(1, 173, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0174:     SPARE = zfs.POOL_STATE_SPARE

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_SPARE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SPARE, __pyx_t_4) < 0) __PYX_ERR(1, 174, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0175:     L2CACHE = zfs.POOL_STATE_L2CACHE

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_L2CACHE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_L2CACHE, __pyx_t_4) < 0) __PYX_ERR(1, 175, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0176:     UNINITIALIZED = zfs.POOL_STATE_UNINITIALIZED

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_UNINITIALIZED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 176, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNINITIALIZED, __pyx_t_4) < 0) __PYX_ERR(1, 176, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0177:     UNAVAIL = zfs.POOL_STATE_UNAVAIL

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_UNAVAIL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 177, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNAVAIL, __pyx_t_4) < 0) __PYX_ERR(1, 177, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0178:     POTENTIALLY_ACTIVE = zfs.POOL_STATE_POTENTIALLY_ACTIVE

      __pyx_t_4 = __Pyx_PyInt_From_pool_state_t(POOL_STATE_POTENTIALLY_ACTIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_POTENTIALLY_ACTIVE, __pyx_t_4) < 0) __PYX_ERR(1, 178, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0179:

     0180:

    +0181: class ScanFunction(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_ScanFunction, __pyx_n_s_ScanFunction, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ScanFunction, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_ScanFunction, __pyx_t_4) < 0) __PYX_ERR(1, 181, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0182:     NONE = zfs.POOL_SCAN_NONE

      __pyx_t_4 = __Pyx_PyInt_From_pool_scan_func_t(POOL_SCAN_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(1, 182, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0183:     SCRUB = zfs.POOL_SCAN_SCRUB

      __pyx_t_4 = __Pyx_PyInt_From_pool_scan_func_t(POOL_SCAN_SCRUB); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 183, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SCRUB, __pyx_t_4) < 0) __PYX_ERR(1, 183, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0184:     RESILVER = zfs.POOL_SCAN_RESILVER

      __pyx_t_4 = __Pyx_PyInt_From_pool_scan_func_t(POOL_SCAN_RESILVER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 184, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RESILVER, __pyx_t_4) < 0) __PYX_ERR(1, 184, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0185:

     0186:

    +0187: class PoolStatus(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_PoolStatus, __pyx_n_s_PoolStatus, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_PoolStatus, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_PoolStatus, __pyx_t_4) < 0) __PYX_ERR(1, 187, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0188:     CORRUPT_CACHE = libzfs.ZPOOL_STATUS_CORRUPT_CACHE

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_CORRUPT_CACHE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 188, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_CACHE, __pyx_t_4) < 0) __PYX_ERR(1, 188, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0189:     MISSING_DEV_R = libzfs.ZPOOL_STATUS_MISSING_DEV_R

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_MISSING_DEV_R); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 189, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_MISSING_DEV_R, __pyx_t_4) < 0) __PYX_ERR(1, 189, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0190:     MISSING_DEV_NR = libzfs.ZPOOL_STATUS_MISSING_DEV_NR

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_MISSING_DEV_NR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_MISSING_DEV_NR, __pyx_t_4) < 0) __PYX_ERR(1, 190, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0191:     CORRUPT_LABEL_R = libzfs.ZPOOL_STATUS_CORRUPT_LABEL_R

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_CORRUPT_LABEL_R); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 191, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_LABEL_R, __pyx_t_4) < 0) __PYX_ERR(1, 191, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0192:     CORRUPT_LABEL_NR = libzfs.ZPOOL_STATUS_CORRUPT_LABEL_NR

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_CORRUPT_LABEL_NR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 192, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_LABEL_NR, __pyx_t_4) < 0) __PYX_ERR(1, 192, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0193:     BAD_GUID_SUM = libzfs.ZPOOL_STATUS_BAD_GUID_SUM

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_BAD_GUID_SUM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 193, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BAD_GUID_SUM, __pyx_t_4) < 0) __PYX_ERR(1, 193, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0194:     CORRUPT_POOL = libzfs.ZPOOL_STATUS_CORRUPT_POOL

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_CORRUPT_POOL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 194, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_POOL, __pyx_t_4) < 0) __PYX_ERR(1, 194, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0195:     CORRUPT_DATA = libzfs.ZPOOL_STATUS_CORRUPT_DATA

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_CORRUPT_DATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 195, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CORRUPT_DATA, __pyx_t_4) < 0) __PYX_ERR(1, 195, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0196:     FAILING_DEV = libzfs.ZPOOL_STATUS_FAILING_DEV

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_FAILING_DEV); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FAILING_DEV, __pyx_t_4) < 0) __PYX_ERR(1, 196, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0197:     VERSION_NEWER = libzfs.ZPOOL_STATUS_VERSION_NEWER

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_VERSION_NEWER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 197, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VERSION_NEWER, __pyx_t_4) < 0) __PYX_ERR(1, 197, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0198:     HOSTID_MISMATCH = libzfs.ZPOOL_STATUS_HOSTID_MISMATCH

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_HOSTID_MISMATCH); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_HOSTID_MISMATCH, __pyx_t_4) < 0) __PYX_ERR(1, 198, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0199:     IO_FAILURE_WAIT = libzfs.ZPOOL_STATUS_IO_FAILURE_WAIT

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_IO_FAILURE_WAIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 199, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_IO_FAILURE_WAIT, __pyx_t_4) < 0) __PYX_ERR(1, 199, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0200:     IO_FAILURE_CONTINUE = libzfs.ZPOOL_STATUS_IO_FAILURE_CONTINUE

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_IO_FAILURE_CONTINUE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 200, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_IO_FAILURE_CONTINUE, __pyx_t_4) < 0) __PYX_ERR(1, 200, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0201:     BAD_LOG = libzfs.ZPOOL_STATUS_BAD_LOG

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_BAD_LOG); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 201, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BAD_LOG, __pyx_t_4) < 0) __PYX_ERR(1, 201, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0202:     UNSUP_FEAT_READ = libzfs.ZPOOL_STATUS_UNSUP_FEAT_READ

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_UNSUP_FEAT_READ); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNSUP_FEAT_READ, __pyx_t_4) < 0) __PYX_ERR(1, 202, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0203:     UNSUP_FEAT_WRITE = libzfs.ZPOOL_STATUS_UNSUP_FEAT_WRITE

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_UNSUP_FEAT_WRITE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 203, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_UNSUP_FEAT_WRITE, __pyx_t_4) < 0) __PYX_ERR(1, 203, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0204:     FAULTED_DEV_R = libzfs.ZPOOL_STATUS_FAULTED_DEV_R

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_FAULTED_DEV_R); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 204, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FAULTED_DEV_R, __pyx_t_4) < 0) __PYX_ERR(1, 204, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0205:     FAULTED_DEV_NR = libzfs.ZPOOL_STATUS_FAULTED_DEV_NR

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_FAULTED_DEV_NR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 205, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FAULTED_DEV_NR, __pyx_t_4) < 0) __PYX_ERR(1, 205, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0206:     VERSION_OLDER = libzfs.ZPOOL_STATUS_VERSION_OLDER

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_VERSION_OLDER); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 206, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VERSION_OLDER, __pyx_t_4) < 0) __PYX_ERR(1, 206, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0207:     FEAT_DISABLED = libzfs.ZPOOL_STATUS_FEAT_DISABLED

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_FEAT_DISABLED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 207, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FEAT_DISABLED, __pyx_t_4) < 0) __PYX_ERR(1, 207, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0208:     RESILVERING = libzfs.ZPOOL_STATUS_RESILVERING

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_RESILVERING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 208, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RESILVERING, __pyx_t_4) < 0) __PYX_ERR(1, 208, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0209:     OFFLINE_DEV = libzfs.ZPOOL_STATUS_OFFLINE_DEV

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_OFFLINE_DEV); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 209, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_OFFLINE_DEV, __pyx_t_4) < 0) __PYX_ERR(1, 209, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0210:     REMOVED_DEV = libzfs.ZPOOL_STATUS_REMOVED_DEV

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_REMOVED_DEV); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 210, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_REMOVED_DEV, __pyx_t_4) < 0) __PYX_ERR(1, 210, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0211:     NON_NATIVE_ASHIFT = libzfs.ZPOOL_STATUS_NON_NATIVE_ASHIFT

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_NON_NATIVE_ASHIFT); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NON_NATIVE_ASHIFT, __pyx_t_4) < 0) __PYX_ERR(1, 211, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0212:     OK = libzfs.ZPOOL_STATUS_OK

      __pyx_t_4 = __Pyx_PyInt_From_zpool_status_t(ZPOOL_STATUS_OK); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 212, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_OK, __pyx_t_4) < 0) __PYX_ERR(1, 212, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0213:

     0214:

    +0215: class ScanState(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_ScanState, __pyx_n_s_ScanState, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ScanState, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_ScanState, __pyx_t_4) < 0) __PYX_ERR(1, 215, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0216:     NONE = zfs.DSS_NONE

      __pyx_t_4 = __Pyx_PyInt_From_dsl_scan_state_t(DSS_NONE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 216, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(1, 216, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0217:     SCANNING = zfs.DSS_SCANNING

      __pyx_t_4 = __Pyx_PyInt_From_dsl_scan_state_t(DSS_SCANNING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 217, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SCANNING, __pyx_t_4) < 0) __PYX_ERR(1, 217, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0218:     FINISHED = zfs.DSS_FINISHED

      __pyx_t_4 = __Pyx_PyInt_From_dsl_scan_state_t(DSS_FINISHED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FINISHED, __pyx_t_4) < 0) __PYX_ERR(1, 218, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0219:     CANCELED = zfs.DSS_CANCELED

      __pyx_t_4 = __Pyx_PyInt_From_dsl_scan_state_t(DSS_CANCELED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 219, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CANCELED, __pyx_t_4) < 0) __PYX_ERR(1, 219, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0220:

     0221:

    +0222: class ZIOType(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_ZIOType, __pyx_n_s_ZIOType, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ZIOType, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_ZIOType, __pyx_t_4) < 0) __PYX_ERR(1, 222, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0223:     NONE = zfs.ZIO_TYPE_NULL

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 223, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_NONE, __pyx_t_4) < 0) __PYX_ERR(1, 223, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0224:     READ = zfs.ZIO_TYPE_READ

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_READ); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 224, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_READ, __pyx_t_4) < 0) __PYX_ERR(1, 224, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0225:     WRITE = zfs.ZIO_TYPE_WRITE

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_WRITE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_WRITE, __pyx_t_4) < 0) __PYX_ERR(1, 225, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0226:     FREE = zfs.ZIO_TYPE_FREE

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_FREE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 226, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FREE, __pyx_t_4) < 0) __PYX_ERR(1, 226, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0227:     CLAIM = zfs.ZIO_TYPE_CLAIM

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_CLAIM); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CLAIM, __pyx_t_4) < 0) __PYX_ERR(1, 227, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0228:     IOCTL = zfs.ZIO_TYPE_IOCTL

      __pyx_t_4 = __Pyx_PyInt_From_zio_type_t(ZIO_TYPE_IOCTL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 228, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_IOCTL, __pyx_t_4) < 0) __PYX_ERR(1, 228, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0229:

     0230:

    +0231: class FeatureState(enum.Enum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_FeatureState, __pyx_n_s_FeatureState, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_FeatureState, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_FeatureState, __pyx_t_4) < 0) __PYX_ERR(1, 231, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0232:     DISABLED = 0

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DISABLED, __pyx_int_0) < 0) __PYX_ERR(1, 232, __pyx_L1_error)

    +0233:     ENABLED = 1

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ENABLED, __pyx_int_1) < 0) __PYX_ERR(1, 233, __pyx_L1_error)

    +0234:     ACTIVE = 2

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ACTIVE, __pyx_int_2) < 0) __PYX_ERR(1, 234, __pyx_L1_error)

     0235:

     0236:

    +0237: class SendFlag(enum.Enum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SendFlag, __pyx_n_s_SendFlag, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SendFlag, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_SendFlag, __pyx_t_4) < 0) __PYX_ERR(1, 237, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0238:     VERBOSE = 0

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_VERBOSE, __pyx_int_0) < 0) __PYX_ERR(1, 238, __pyx_L1_error)

    +0239:     REPLICATE = 1

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_REPLICATE, __pyx_int_1) < 0) __PYX_ERR(1, 239, __pyx_L1_error)

    +0240:     DOALL = 2

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DOALL, __pyx_int_2) < 0) __PYX_ERR(1, 240, __pyx_L1_error)

    +0241:     FROMORIGIN = 3

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FROMORIGIN, __pyx_int_3) < 0) __PYX_ERR(1, 241, __pyx_L1_error)

    +0242:     DEDUP = 3

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DEDUP, __pyx_int_3) < 0) __PYX_ERR(1, 242, __pyx_L1_error)

    +0243:     PROPS = 4

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROPS, __pyx_int_4) < 0) __PYX_ERR(1, 243, __pyx_L1_error)

    +0244:     DRYRUN = 5

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DRYRUN, __pyx_int_5) < 0) __PYX_ERR(1, 244, __pyx_L1_error)

    +0245:     PARSABLE = 6

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PARSABLE, __pyx_int_6) < 0) __PYX_ERR(1, 245, __pyx_L1_error)

    +0246:     PROGRESS = 7

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_PROGRESS, __pyx_int_7) < 0) __PYX_ERR(1, 246, __pyx_L1_error)

    +0247:     LARGEBLOCK = 8

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_LARGEBLOCK, __pyx_int_8) < 0) __PYX_ERR(1, 247, __pyx_L1_error)

    +0248:     EMBED_DATA = 9

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_EMBED_DATA, __pyx_int_9) < 0) __PYX_ERR(1, 248, __pyx_L1_error)

     0249:

     0250:

    +0251: class DiffRecordType(enum.Enum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DiffRecordType, __pyx_n_s_DiffRecordType, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DiffRecordType, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_DiffRecordType, __pyx_t_4) < 0) __PYX_ERR(1, 251, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0252:     ADD = '+'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_ADD, __pyx_kp_s__79) < 0) __PYX_ERR(1, 252, __pyx_L1_error)

    +0253:     REMOVE = '-'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_REMOVE, __pyx_kp_s__3) < 0) __PYX_ERR(1, 253, __pyx_L1_error)

    +0254:     MODIFY = 'M'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_MODIFY, __pyx_n_s_M) < 0) __PYX_ERR(1, 254, __pyx_L1_error)

    +0255:     RENAME = 'R'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_RENAME, __pyx_n_s_R) < 0) __PYX_ERR(1, 255, __pyx_L1_error)

     0256:

     0257:

    +0258: class DiffFileType(enum.Enum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DiffFileType, __pyx_n_s_DiffFileType, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DiffFileType, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_DiffFileType, __pyx_t_4) < 0) __PYX_ERR(1, 258, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0259:     BLOCK = 'B'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_BLOCK, __pyx_n_s_B) < 0) __PYX_ERR(1, 259, __pyx_L1_error)

    +0260:     CHAR = 'C'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_CHAR, __pyx_n_s_C) < 0) __PYX_ERR(1, 260, __pyx_L1_error)

    +0261:     FILE = 'F'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_FILE, __pyx_n_s_F) < 0) __PYX_ERR(1, 261, __pyx_L1_error)

    +0262:     DIRECTORY = '/'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_DIRECTORY, __pyx_kp_s__80) < 0) __PYX_ERR(1, 262, __pyx_L1_error)

    +0263:     SYMLINK = '@'

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SYMLINK, __pyx_kp_s__58) < 0) __PYX_ERR(1, 263, __pyx_L1_error)

    +0264:     SOCKET = '='

      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_SOCKET, __pyx_kp_s__14) < 0) __PYX_ERR(1, 264, __pyx_L1_error)

     0265:

     0266:

     0267: IF FREEBSD_VERSION >= 1003509:

    +0268:     cdef enum:

    enum  {

    +0269:         MAX_DATASET_NAME_LEN = zfs.ZFS_MAX_DATASET_NAME_LEN

      __pyx_e_6libzfs_MAX_DATASET_NAME_LEN = ZFS_MAX_DATASET_NAME_LEN
    };

     0270: ELSE:

     0271:     cdef enum:

     0272:         MAX_DATASET_NAME_LEN = libzfs.ZFS_MAXNAMELEN

     0273:

     0274:

    +0275: cdef struct iter_state:

    struct __pyx_t_6libzfs_iter_state {
      uintptr_t *array;
      size_t length;
      size_t alloc;
    };

     0276:     uintptr_t *array

     0277:     size_t length

     0278:     size_t alloc

     0279:

     0280:

    +0281: cdef struct prop_iter_state:

    struct __pyx_t_6libzfs_prop_iter_state {
      zfs_type_t type;
      void *props;
    };

     0282:     zfs.zfs_type_t type

     0283:     void *props

     0284:

     0285:

    +0286: class DiffRecord(object):

      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_builtin_object);
      __Pyx_GIVEREF(__pyx_builtin_object);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_object);
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_DiffRecord, __pyx_n_s_DiffRecord, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_DiffRecord, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_DiffRecord, __pyx_t_4) < 0) __PYX_ERR(1, 286, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0287:     def __init__(self, raw):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_10DiffRecord_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6libzfs_10DiffRecord_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_self = 0;
      PyObject *__pyx_v_raw = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_raw,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_raw)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(1, 287, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 287, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_self = values[0];
        __pyx_v_raw = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 287, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.DiffRecord.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10DiffRecord___init__(__pyx_self, __pyx_v_self, __pyx_v_raw);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10DiffRecord___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_raw) {
      PyObject *__pyx_v_timestamp = NULL;
      PyObject *__pyx_v_cmd = NULL;
      PyObject *__pyx_v_typ = NULL;
      PyObject *__pyx_v_rest = NULL;
      PyObject *__pyx_v_paths = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.DiffRecord.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_timestamp);
      __Pyx_XDECREF(__pyx_v_cmd);
      __Pyx_XDECREF(__pyx_v_typ);
      __Pyx_XDECREF(__pyx_v_rest);
      __Pyx_XDECREF(__pyx_v_paths);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__81 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_raw, __pyx_n_s_timestamp, __pyx_n_s_cmd, __pyx_n_s_typ, __pyx_n_s_rest, __pyx_n_s_paths); if (unlikely(!__pyx_tuple__81)) __PYX_ERR(1, 287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__81);
      __Pyx_GIVEREF(__pyx_tuple__81);
    /* … */
      __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_10DiffRecord_1__init__, 0, __pyx_n_s_DiffRecord___init, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__82)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(1, 287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__81, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_init, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(1, 287, __pyx_L1_error)

    +0288:         timestamp, cmd, typ, rest = raw.split(maxsplit=3)

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_raw, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maxsplit, __pyx_int_3) < 0) __PYX_ERR(1, 288, __pyx_L1_error)
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 288, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 4)) {
          if (size > 4) __Pyx_RaiseTooManyValuesError(4);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(1, 288, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
          __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1);
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2);
          __pyx_t_5 = PyTuple_GET_ITEM(sequence, 3);
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
          __pyx_t_1 = PyList_GET_ITEM(sequence, 1);
          __pyx_t_4 = PyList_GET_ITEM(sequence, 2);
          __pyx_t_5 = PyList_GET_ITEM(sequence, 3);
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_5);
        #else
        {
          Py_ssize_t i;
          PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_4,&__pyx_t_5};
          for (i=0; i < 4; i++) {
            PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) __PYX_ERR(1, 288, __pyx_L1_error)
            __Pyx_GOTREF(item);
            *(temps[i]) = item;
          }
        }
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        PyObject** temps[4] = {&__pyx_t_2,&__pyx_t_1,&__pyx_t_4,&__pyx_t_5};
        __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 288, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
        for (index=0; index < 4; index++) {
          PyObject* item = __pyx_t_7(__pyx_t_6); if (unlikely(!item)) goto __pyx_L3_unpacking_failed;
          __Pyx_GOTREF(item);
          *(temps[index]) = item;
        }
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) __PYX_ERR(1, 288, __pyx_L1_error)
        __pyx_t_7 = NULL;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        goto __pyx_L4_unpacking_done;
        __pyx_L3_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(1, 288, __pyx_L1_error)
        __pyx_L4_unpacking_done:;
      }
      __pyx_v_timestamp = __pyx_t_2;
      __pyx_t_2 = 0;
      __pyx_v_cmd = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_v_typ = __pyx_t_4;
      __pyx_t_4 = 0;
      __pyx_v_rest = __pyx_t_5;
      __pyx_t_5 = 0;

    +0289:         paths = rest.split('->', maxsplit=2)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_rest, __pyx_n_s_split); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_maxsplit, __pyx_int_2) < 0) __PYX_ERR(1, 289, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__10, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_v_paths = __pyx_t_4;
      __pyx_t_4 = 0;
    /* … */
      __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s__9); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(1, 289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__10);
      __Pyx_GIVEREF(__pyx_tuple__10);

    +0290:         self.raw = raw

      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_raw, __pyx_v_raw) < 0) __PYX_ERR(1, 290, __pyx_L1_error)

    +0291:         self.timestamp = datetime.utcfromtimestamp(float(timestamp))

      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_utcfromtimestamp); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_v_timestamp); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 291, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 291, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 291, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_timestamp, __pyx_t_4) < 0) __PYX_ERR(1, 291, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0292:         self.cmd = DiffRecordType(cmd)

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DiffRecordType); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_cmd);
        __Pyx_GIVEREF(__pyx_v_cmd);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_cmd);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 292, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cmd, __pyx_t_4) < 0) __PYX_ERR(1, 292, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0293:         self.type = DiffFileType(typ)

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_DiffFileType); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 293, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_typ); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      } else {
        __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_v_typ);
        __Pyx_GIVEREF(__pyx_v_typ);
        PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_typ);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 293, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_type, __pyx_t_4) < 0) __PYX_ERR(1, 293, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0294:         self.path = paths[0].strip()

      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_paths, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 294, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strip); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 294, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 294, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 294, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_path, __pyx_t_4) < 0) __PYX_ERR(1, 294, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0295:

    +0296:         if self.cmd == DiffRecordType.RENAME:

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cmd); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 296, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DiffRecordType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 296, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_RENAME); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 296, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 296, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(1, 296, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_8) {
    /* … */
      }

    +0297:             self.oldpath = paths[1].strip()

        __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_paths, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 297, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strip); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 297, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (__pyx_t_3) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 297, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 297, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_oldpath, __pyx_t_2) < 0) __PYX_ERR(1, 297, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0298:

    +0299:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_3__str__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_10DiffRecord_3__str__ = {"__str__", (PyCFunction)__pyx_pw_6libzfs_10DiffRecord_3__str__, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_3__str__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10DiffRecord_2__str__(__pyx_self, ((PyObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10DiffRecord_2__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.DiffRecord.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__83 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__83)) __PYX_ERR(1, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__83);
      __Pyx_GIVEREF(__pyx_tuple__83);
    /* … */
      __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_10DiffRecord_3__str__, 0, __pyx_n_s_DiffRecord___str, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__84)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_str, __pyx_t_4) < 0) __PYX_ERR(1, 299, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__83, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_str, 299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(1, 299, __pyx_L1_error)

    +0300:         return self.raw

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_raw); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0301:

    +0302:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_5__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_10DiffRecord_5__repr__ = {"__repr__", (PyCFunction)__pyx_pw_6libzfs_10DiffRecord_5__repr__, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_5__repr__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10DiffRecord_4__repr__(__pyx_self, ((PyObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10DiffRecord_4__repr__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.DiffRecord.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__85 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__85)) __PYX_ERR(1, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__85);
      __Pyx_GIVEREF(__pyx_tuple__85);
    /* … */
      __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_10DiffRecord_5__repr__, 0, __pyx_n_s_DiffRecord___repr, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__86)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_repr, __pyx_t_4) < 0) __PYX_ERR(1, 302, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__85, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_repr, 302, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(1, 302, __pyx_L1_error)

    +0303:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_self);
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     0304:

    +0305:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_7__getstate__(PyObject *__pyx_self, PyObject *__pyx_v_self); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_10DiffRecord_7__getstate__ = {"__getstate__", (PyCFunction)__pyx_pw_6libzfs_10DiffRecord_7__getstate__, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_10DiffRecord_7__getstate__(PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10DiffRecord_6__getstate__(__pyx_self, ((PyObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10DiffRecord_6__getstate__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.DiffRecord.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(1, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__87);
      __Pyx_GIVEREF(__pyx_tuple__87);
    /* … */
      __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_10DiffRecord_7__getstate__, 0, __pyx_n_s_DiffRecord___getstate, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__88)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_getstate, __pyx_t_4) < 0) __PYX_ERR(1, 305, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__87, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_getstate, 305, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(1, 305, __pyx_L1_error)

    +0306:         return {

      __Pyx_XDECREF(__pyx_r);

    +0307:             'timestamp': self.timestamp,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_timestamp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_timestamp, __pyx_t_2) < 0) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0308:             'cmd': self.cmd.name,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cmd, __pyx_t_3) < 0) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +0309:             'type': self.type.name,

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 309, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0310:             'path': self.path,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 310, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_path, __pyx_t_2) < 0) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0311:             'oldpath': getattr(self, 'oldpath', None)

      __pyx_t_2 = __Pyx_GetAttr3(__pyx_v_self, __pyx_n_s_oldpath, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_oldpath, __pyx_t_2) < 0) __PYX_ERR(1, 307, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0312:         }

     0313:

     0314:

     0315:

     0316: IF FREEBSD_VERSION >= 1000000:

    +0317:     class SendFlags(enum.IntEnum):

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_SendFlags, __pyx_n_s_SendFlags, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_SendFlags, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_SendFlags, __pyx_t_4) < 0) __PYX_ERR(1, 317, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0318:         EMBED_DATA = libzfs.LZC_SEND_FLAG_EMBED_DATA

      __pyx_t_4 = __Pyx_PyInt_From_enum__lzc_send_flags(LZC_SEND_FLAG_EMBED_DATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 318, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_EMBED_DATA, __pyx_t_4) < 0) __PYX_ERR(1, 318, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     0319:

     0320:

    +0321: class ZFSException(RuntimeError):

      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __Pyx_GIVEREF(__pyx_builtin_RuntimeError);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_builtin_RuntimeError);
      __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_n_s_ZFSException, __pyx_n_s_ZFSException, (PyObject *) NULL, __pyx_n_s_libzfs, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    /* … */
      __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_n_s_ZFSException, __pyx_t_2, __pyx_t_5, NULL, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_ZFSException, __pyx_t_4) < 0) __PYX_ERR(1, 321, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0322:     def __init__(self, code, message):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSException_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_12ZFSException_1__init__ = {"__init__", (PyCFunction)__pyx_pw_6libzfs_12ZFSException_1__init__, METH_VARARGS|METH_KEYWORDS, 0};
    static PyObject *__pyx_pw_6libzfs_12ZFSException_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_self = 0;
      PyObject *__pyx_v_code = 0;
      PyObject *__pyx_v_message = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_code,&__pyx_n_s_message,0};
        PyObject* values[3] = {0,0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_code)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(1, 322, __pyx_L3_error)
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(1, 322, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 322, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
          values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        }
        __pyx_v_self = values[0];
        __pyx_v_code = values[1];
        __pyx_v_message = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 322, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_12ZFSException___init__(__pyx_self, __pyx_v_self, __pyx_v_code, __pyx_v_message);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSException___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_code, PyObject *__pyx_v_message) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZFSException.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__89 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_code, __pyx_n_s_message); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(1, 322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__89);
      __Pyx_GIVEREF(__pyx_tuple__89);
    /* … */
      __pyx_t_4 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_12ZFSException_1__init__, 0, __pyx_n_s_ZFSException___init, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__90)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 322, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyObject_SetItem(__pyx_t_5, __pyx_n_s_init, __pyx_t_4) < 0) __PYX_ERR(1, 322, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_codeobj__90 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__89, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_init, 322, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__90)) __PYX_ERR(1, 322, __pyx_L1_error)

    +0323:         super(ZFSException, self).__init__(message)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __Pyx_INCREF(__pyx_v_self);
      __Pyx_GIVEREF(__pyx_v_self);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_self);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 323, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 323, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_INCREF(__pyx_v_message);
        __Pyx_GIVEREF(__pyx_v_message);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_message);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 323, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0324:         self.code = code

      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_code, __pyx_v_code) < 0) __PYX_ERR(1, 324, __pyx_L1_error)

     0325:

     0326:

    +0327: cdef class ZFS(object):

    struct __pyx_obj_6libzfs_ZFS {
      PyObject_HEAD
      struct __pyx_vtabstruct_6libzfs_ZFS *__pyx_vtab;
      libzfs_handle_t *handle;
      int history;
      char *history_prefix;
      PyObject *proptypes;
    };
    /* … */
    struct __pyx_vtabstruct_6libzfs_ZFS {
      int (*__pyx___iterate_props)(int, void *);
      int (*__pyx___iterate_pools)(zpool_handle_t *, void *);
      PyObject *(*get_error)(struct __pyx_obj_6libzfs_ZFS *);
      struct __pyx_obj_6libzfs_ZFSVdev *(*make_vdev_tree)(struct __pyx_obj_6libzfs_ZFS *, PyObject *);
    };
    static struct __pyx_vtabstruct_6libzfs_ZFS *__pyx_vtabptr_6libzfs_ZFS;

     0328:     cdef libzfs.libzfs_handle_t* handle

     0329:     cdef int history

     0330:     cdef char *history_prefix

     0331:     cdef object proptypes

     0332:

    +0333:     def __cinit__(self, history=False, history_prefix=''):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_3ZFS_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_3ZFS_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_history = 0;
      PyObject *__pyx_v_history_prefix = 0;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_history,&__pyx_n_s_history_prefix,0};
        PyObject* values[2] = {0,0};
        values[0] = ((PyObject *)Py_False);
        values[1] = ((PyObject *)__pyx_kp_s__11);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_history);
              if (value) { values[0] = value; kw_args--; }
            }
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_history_prefix);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(1, 333, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_history = values[0];
        __pyx_v_history_prefix = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 333, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return -1;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS___cinit__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_history, __pyx_v_history_prefix);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_3ZFS___cinit__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_history, PyObject *__pyx_v_history_prefix) {
      zfs_type_t __pyx_v_c_type;
      struct __pyx_t_6libzfs_prop_iter_state __pyx_v_iter;
      PyObject *__pyx_v_t = NULL;
      PyObject *__pyx_v_proptypes = NULL;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__cinit__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_13);
      __Pyx_AddTraceback("libzfs.ZFS.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_t);
      __Pyx_XDECREF(__pyx_v_proptypes);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0334:         cdef zfs.zfs_type_t c_type

     0335:         cdef prop_iter_state iter

     0336:

    +0337:         self.handle = libzfs.libzfs_init()

      __pyx_v_self->handle = libzfs_init();

    +0338:         if isinstance(history, bool):

      __pyx_t_1 = ((PyObject*)&PyBool_Type);
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_2 = PyObject_IsInstance(__pyx_v_history, __pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(1, 338, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
        goto __pyx_L3;
      }

    +0339:             self.history = history

        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_history); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 339, __pyx_L1_error)
        __pyx_v_self->history = __pyx_t_4;

     0340:         else:

    +0341:             raise ZFSException(Error.BADTYPE, 'history is a boolean parameter')

      /*else*/ {
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_BADTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_7);
        __Pyx_INCREF(__pyx_kp_s_history_is_a_boolean_parameter);
        __Pyx_GIVEREF(__pyx_kp_s_history_is_a_boolean_parameter);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_s_history_is_a_boolean_parameter);
        __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 341, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 341, __pyx_L1_error)
      }
      __pyx_L3:;

     0342:

    +0343:         if self.history:

      __pyx_t_3 = (__pyx_v_self->history != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +0344:             if isinstance(history_prefix, str):

        __pyx_t_3 = PyString_Check(__pyx_v_history_prefix);
        __pyx_t_2 = (__pyx_t_3 != 0);
        if (__pyx_t_2) {
    /* … */
          goto __pyx_L5;
        }

    +0345:                 self.history_prefix = history_prefix

          __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_v_history_prefix); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(1, 345, __pyx_L1_error)
          __pyx_v_self->history_prefix = __pyx_t_10;

     0346:             else:

    +0347:                 raise ZFSException(Error.BADTYPE, 'history_prefix is a string parameter')

        /*else*/ {
          __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 347, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 347, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_BADTYPE); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 347, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = NULL;
          __pyx_t_8 = 0;
          if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_9)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_9);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
              __pyx_t_8 = 1;
            }
          }
          __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 347, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          if (__pyx_t_9) {
            __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
          }
          __Pyx_GIVEREF(__pyx_t_7);
          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_t_7);
          __Pyx_INCREF(__pyx_kp_s_history_prefix_is_a_string_param);
          __Pyx_GIVEREF(__pyx_kp_s_history_prefix_is_a_string_param);
          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_kp_s_history_prefix_is_a_string_param);
          __pyx_t_7 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 347, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_Raise(__pyx_t_1, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __PYX_ERR(1, 347, __pyx_L1_error)
        }
        __pyx_L5:;

     0348:

     0349:         # Cache all the proptypes upfront

    +0350:         self.proptypes = {}

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 350, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->proptypes);
      __Pyx_DECREF(__pyx_v_self->proptypes);
      __pyx_v_self->proptypes = __pyx_t_1;
      __pyx_t_1 = 0;

     0351:

    +0352:         for t in DatasetType.__members__.values():

      __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_members); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_values); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 352, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 352, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_8 = 0;
        __pyx_t_11 = NULL;
      } else {
        __pyx_t_8 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 352, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_11 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 352, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_11)) {
          if (likely(PyList_CheckExact(__pyx_t_5))) {
            if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_5)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 352, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 352, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_1); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 352, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 352, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_11(__pyx_t_5);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 352, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +0353:             proptypes = self.proptypes.setdefault(t, [])

        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->proptypes, __pyx_n_s_setdefault); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = NULL;
        __pyx_t_12 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
            __pyx_t_12 = 1;
          }
        }
        __pyx_t_13 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_13);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_INCREF(__pyx_v_t);
        __Pyx_GIVEREF(__pyx_v_t);
        PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_t);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_proptypes, __pyx_t_1);
        __pyx_t_1 = 0;

    +0354:             c_type = <zfs.zfs_type_t>t

        __pyx_t_14 = ((zfs_type_t)__Pyx_PyInt_As_zfs_type_t(__pyx_v_t)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 354, __pyx_L1_error)
        __pyx_v_c_type = ((zfs_type_t)__pyx_t_14);

    +0355:             iter.type = c_type

        __pyx_v_iter.type = __pyx_v_c_type;

    +0356:             iter.props = <void *>proptypes

        __pyx_v_iter.props = ((void *)__pyx_v_proptypes);

    +0357:             with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L12;
              }
              __pyx_L12:;
            }
        }

    +0358:                 libzfs.zprop_iter(self.__iterate_props, <void*>&iter, True, True, c_type)

              zprop_iter(((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->__pyx___iterate_props, ((void *)(&__pyx_v_iter)), 1, 1, __pyx_v_c_type);
            }

     0359:

    +0360:     def __dealloc__(self):

    /* Python wrapper */
    static void __pyx_pw_6libzfs_3ZFS_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
    static void __pyx_pw_6libzfs_3ZFS_3__dealloc__(PyObject *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
      __pyx_pf_6libzfs_3ZFS_2__dealloc__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    static void __pyx_pf_6libzfs_3ZFS_2__dealloc__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__", 0);
    /* … */
      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    +0361:         libzfs.libzfs_fini(self.handle)

      libzfs_fini(__pyx_v_self->handle);

     0362:

    +0363:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_5__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_5__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_4__getstate__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_4__getstate__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      PyObject *__pyx_v_p = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFS.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_p);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0364:         return [p.__getstate__() for p in self.pools]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_pools); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
        __pyx_t_5 = NULL;
      } else {
        __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 364, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 364, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_5)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 364, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 364, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_5(__pyx_t_3);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 364, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XDECREF_SET(__pyx_v_p, __pyx_t_2);
        __pyx_t_2 = 0;
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_p, __pyx_n_s_getstate); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 364, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 364, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 364, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0365:

     0366:     @staticmethod

    +0367:     cdef int __iterate_props(int proptype, void *arg) nogil:

    static int __pyx_f_6libzfs_3ZFS___iterate_props(int __pyx_v_proptype, void *__pyx_v_arg) {
      struct __pyx_t_6libzfs_prop_iter_state *__pyx_v_iter;
      PyObject *__pyx_v_proptypes = NULL;
      int __pyx_r;
      #ifdef WITH_THREAD
      PyGILState_STATE __pyx_gilstate_save;
      #endif
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__iterate_props", 1);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_WriteUnraisable("libzfs.ZFS.__iterate_props", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_proptypes);
      #ifdef WITH_THREAD
      PyGILState_Release(__pyx_gilstate_save);
      #endif
      return __pyx_r;
    }

    +0368:         cdef prop_iter_state *iter

      /*try:*/ {
    /* … */
      /*finally:*/ {
        __pyx_L3_return: {
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L0;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L1_error;
        }
      }

     0369:

    +0370:         iter = <prop_iter_state *>arg

        __pyx_v_iter = ((struct __pyx_t_6libzfs_prop_iter_state *)__pyx_v_arg);

    +0371:         if not zfs.zfs_prop_valid_for_type(proptype, iter.type):

        __pyx_t_1 = ((!(zfs_prop_valid_for_type(__pyx_v_proptype, __pyx_v_iter->type) != 0)) != 0);
        if (__pyx_t_1) {
    /* … */
        }

    +0372:             return zfs.ZPROP_CONT

          __pyx_r = ZPROP_CONT;
          goto __pyx_L3_return;

     0373:

    +0374:         with gil:

        {
            #ifdef WITH_THREAD
            PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              __pyx_L7_return: {
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L3_return;
              }
              __pyx_L8_error: {
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L4_error;
              }
            }
        }
      }

    +0375:             proptypes = <object>iter.props

              __pyx_t_2 = ((PyObject *)__pyx_v_iter->props);
              __Pyx_INCREF(__pyx_t_2);
              __pyx_v_proptypes = __pyx_t_2;
              __pyx_t_2 = 0;

    +0376:             proptypes.append(proptype)

              __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_proptype); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 376, __pyx_L8_error)
              __Pyx_GOTREF(__pyx_t_2);
              __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_proptypes, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) __PYX_ERR(1, 376, __pyx_L8_error)
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0377:             return zfs.ZPROP_CONT

              __pyx_r = ZPROP_CONT;
              goto __pyx_L7_return;
            }

     0378:

     0379:     @staticmethod

    +0380:     cdef int __iterate_pools(libzfs.zpool_handle_t *handle, void *arg) nogil:

    static int __pyx_f_6libzfs_3ZFS___iterate_pools(zpool_handle_t *__pyx_v_handle, void *__pyx_v_arg) {
      PyObject *__pyx_v_pools = NULL;
      int __pyx_r;
      #ifdef WITH_THREAD
      PyGILState_STATE __pyx_gilstate_save;
      #endif
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__iterate_pools", 1);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_WriteUnraisable("libzfs.ZFS.__iterate_pools", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_pools);
      #ifdef WITH_THREAD
      PyGILState_Release(__pyx_gilstate_save);
      #endif
      return __pyx_r;
    }

    +0381:         with gil:

      /*try:*/ {
        {
            #ifdef WITH_THREAD
            PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L8;
              }
              __pyx_L7_error: {
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L4_error;
              }
              __pyx_L8:;
            }
        }
      }
      /*finally:*/ {
        /*normal exit:*/{
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L5;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L1_error;
        }
        __pyx_L5:;
      }

    +0382:             pools = <object>arg

              __pyx_t_1 = ((PyObject *)__pyx_v_arg);
              __Pyx_INCREF(__pyx_t_1);
              __pyx_v_pools = __pyx_t_1;
              __pyx_t_1 = 0;

    +0383:             pools.append(<uintptr_t>handle)

              __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 383, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_pools, __pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(1, 383, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            }

     0384:

    +0385:     cdef object get_error(self):

    static PyObject *__pyx_f_6libzfs_3ZFS_get_error(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_error", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFS.get_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0386:         return ZFSException(

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);

    +0387:             Error(libzfs.libzfs_errno(self.handle)),

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyInt_From_int(libzfs_errno(__pyx_v_self->handle)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 387, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 387, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0388:             libzfs.libzfs_error_description(self.handle)

      __pyx_t_4 = __Pyx_PyUnicode_FromString(libzfs_error_description(__pyx_v_self->handle)); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 388, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_5 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_8, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_8, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0389:         )

     0390:

    +0391:     cdef ZFSVdev make_vdev_tree(self, topology):

    static struct __pyx_obj_6libzfs_ZFSVdev *__pyx_f_6libzfs_3ZFS_make_vdev_tree(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_topology) {
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_root = 0;
      PyObject *__pyx_v_i = NULL;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("make_vdev_tree", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFS.make_vdev_tree", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_root);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF((PyObject *)__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0392:         cdef ZFSVdev root

    +0393:         root = ZFSVdev(self, 'root')

      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __Pyx_INCREF(__pyx_n_s_root);
      __Pyx_GIVEREF(__pyx_n_s_root);
      PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_root);
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 393, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_root = ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2);
      __pyx_t_2 = 0;

    +0394:         root.children = topology.get('data', [])

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_n_s_data);
      __Pyx_GIVEREF(__pyx_n_s_data);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_n_s_data);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 394, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_root), __pyx_n_s_children, __pyx_t_2) < 0) __PYX_ERR(1, 394, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0395:

    +0396:         if 'cache' in topology:

      __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_cache, __pyx_v_topology, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 396, __pyx_L1_error)
      __pyx_t_8 = (__pyx_t_7 != 0);
      if (__pyx_t_8) {
    /* … */
      }

    +0397:             root.nvlist['l2cache'] = [(<ZFSVdev>i).nvlist for i in topology['cache']]

        __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = PyObject_GetItem(__pyx_v_topology, __pyx_n_s_cache); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 397, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
          __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6); __pyx_t_5 = 0;
          __pyx_t_9 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 397, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 397, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        for (;;) {
          if (likely(!__pyx_t_9)) {
            if (likely(PyList_CheckExact(__pyx_t_6))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_6)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 397, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 397, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_6, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 397, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            }
          } else {
            __pyx_t_1 = __pyx_t_9(__pyx_t_6);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 397, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_1);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
          __pyx_t_1 = 0;
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_i)->nvlist))) __PYX_ERR(1, 397, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_root->nvlist), __pyx_n_s_l2cache, __pyx_t_2) < 0)) __PYX_ERR(1, 397, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0398:

    +0399:         if 'spare' in topology:

      __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_spare, __pyx_v_topology, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(1, 399, __pyx_L1_error)
      __pyx_t_7 = (__pyx_t_8 != 0);
      if (__pyx_t_7) {
    /* … */
      }

    +0400:             root.nvlist['spares'] = [(<ZFSVdev>i).nvlist for i in topology['spare']]

        __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 400, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_6 = PyObject_GetItem(__pyx_v_topology, __pyx_n_s_spare); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 400, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
          __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
          __pyx_t_9 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 400, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 400, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        for (;;) {
          if (likely(!__pyx_t_9)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 400, __pyx_L1_error)
              #else
              __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 400, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 400, __pyx_L1_error)
              #else
              __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 400, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_6);
              #endif
            }
          } else {
            __pyx_t_6 = __pyx_t_9(__pyx_t_1);
            if (unlikely(!__pyx_t_6)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 400, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
          __pyx_t_6 = 0;
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_i)->nvlist))) __PYX_ERR(1, 400, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_root->nvlist), __pyx_n_s_spares, __pyx_t_2) < 0)) __PYX_ERR(1, 400, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0401:

    +0402:         if 'log' in topology:

      __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_log, __pyx_v_topology, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 402, __pyx_L1_error)
      __pyx_t_8 = (__pyx_t_7 != 0);
      if (__pyx_t_8) {
    /* … */
      }

    +0403:             for i in topology['log']:

        __pyx_t_2 = PyObject_GetItem(__pyx_v_topology, __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 403, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
          __pyx_t_9 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 403, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 403, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (likely(!__pyx_t_9)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 403, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 403, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 403, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 403, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_9(__pyx_t_1);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 403, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
          __pyx_t_2 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0404:                 (<ZFSVdev>i).nvlist['is_log'] = 1L

          if (unlikely(PyObject_SetItem(((PyObject *)((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_i)->nvlist), __pyx_n_s_is_log, __pyx_int_1L) < 0)) __PYX_ERR(1, 404, __pyx_L1_error)

    +0405:                 root.add_child_vdev(i)

          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_root), __pyx_n_s_add_child_vdev); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 405, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_3 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_3)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_3);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_3) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_i); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 405, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
          } else {
            __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 405, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
            __Pyx_INCREF(__pyx_v_i);
            __Pyx_GIVEREF(__pyx_v_i);
            PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_i);
            __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 405, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0406:

    +0407:         return root

      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __Pyx_INCREF(((PyObject *)__pyx_v_root));
      __pyx_r = __pyx_v_root;
      goto __pyx_L0;

     0408:

     0409:     property errno:

    +0410:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_5errno_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_5errno_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_5errno___get__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_5errno___get__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFS.errno.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0411:             return Error(libzfs.libzfs_errno(self.handle))

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_int(libzfs_errno(__pyx_v_self->handle)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 411, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 411, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 411, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0412:

     0413:     property errstr:

    +0414:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_6errstr_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_6errstr_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_6errstr___get__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_6errstr___get__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFS.errstr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_3ZFS_5pools_2generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

    +0415:             return libzfs.libzfs_error_description(self.handle)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(libzfs_error_description(__pyx_v_self->handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 415, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0416:

     0417:     property pools:

    +0418:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_5pools_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_5pools_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_5pools___get__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_5pools___get__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_2___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_2___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_2___get__(__pyx_ptype_6libzfs___pyx_scope_struct_2___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_3ZFS_5pools_2generator2, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFS___get); if (unlikely(!gen)) __PYX_ERR(1, 418, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFS.pools.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_3ZFS_5pools_2generator2(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 418, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_3ZFS_8datasets_2generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_2___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_h;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool;
      PyObject *__pyx_v_pools;
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
    };

     0419:             cdef ZFSPool pool

    +0420:             pools = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 420, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_pools = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

     0421:

    +0422:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +0423:                 libzfs.zpool_iter(self.handle, self.__iterate_pools, <void*>pools)

            zpool_iter(__pyx_cur_scope->__pyx_v_self->handle, ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->__pyx___iterate_pools, ((void *)__pyx_cur_scope->__pyx_v_pools));
          }

     0424:

    +0425:             for h in pools:

      __pyx_t_1 = __pyx_cur_scope->__pyx_v_pools; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
      for (;;) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 425, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 425, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_h);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_h, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;
    /* … */
        __pyx_L7_continue:;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0426:                 pool = ZFSPool.__new__(ZFSPool)

        __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSPool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 426, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSPool)))) __PYX_ERR(1, 426, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_pool, ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3));
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;

    +0427:                 pool.root = self

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pool->root);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool->root));
        __pyx_cur_scope->__pyx_v_pool->root = __pyx_cur_scope->__pyx_v_self;

    +0428:                 pool.handle = <libzfs.zpool_handle_t*><uintptr_t>h

        __pyx_t_4 = __Pyx_PyInt_As_size_t(__pyx_cur_scope->__pyx_v_h); if (unlikely((__pyx_t_4 == (uintptr_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 428, __pyx_L1_error)
        __pyx_cur_scope->__pyx_v_pool->handle = ((zpool_handle_t *)((uintptr_t)__pyx_t_4));

    +0429:                 if pool.name == '$import':

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_pool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 429, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_kp_s_import, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 429, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_5) {
    /* … */
        }

    +0430:                     continue

          goto __pyx_L7_continue;

     0431:

    +0432:                 yield pool

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_pool);
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_yield:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 432, __pyx_L1_error)

     0433:

     0434:     property datasets:

    +0435:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_8datasets_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_8datasets_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_8datasets___get__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_8datasets___get__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_3___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_3___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_3___get__(__pyx_ptype_6libzfs___pyx_scope_struct_3___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_3ZFS_8datasets_2generator3, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFS___get); if (unlikely(!gen)) __PYX_ERR(1, 435, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFS.datasets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_3ZFS_8datasets_2generator3(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 435, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_3ZFS_9snapshots_2generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_3___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_c;
      PyObject *__pyx_v_p;
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
      PyObject *__pyx_t_3;
      PyObject *__pyx_t_4;
      PyObject *__pyx_t_5;
      PyObject *__pyx_t_6;
      Py_ssize_t __pyx_t_7;
      PyObject *(*__pyx_t_8)(PyObject *);
    };

    +0436:             for p in self.pools:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_pools); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 436, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 436, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 436, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 436, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 436, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 436, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 436, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 436, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_p);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_p, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
        __pyx_L4_continue:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0437:                 try:

        {
          /*try:*/ {
    /* … */
          }
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L13_try_end;
          __pyx_L6_error:;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* … */
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          goto __pyx_L1_error;
          __pyx_L12_try_continue:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          goto __pyx_L4_continue;
          __pyx_L13_try_end:;
        }

    +0438:                     yield p.root_dataset

            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_n_s_root_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 438, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_r = __pyx_t_1;
            __pyx_t_1 = 0;
            __Pyx_XGIVEREF(__pyx_t_2);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
            __Pyx_XGIVEREF(__pyx_t_5);
            __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
            __Pyx_XGIVEREF(__pyx_t_6);
            __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
            __Pyx_XGIVEREF(__pyx_t_7);
            __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 1;
            return __pyx_r;
            __pyx_L14_resume_from_yield:;
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
            __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
            __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
            __pyx_cur_scope->__pyx_t_3 = 0;
            __Pyx_XGOTREF(__pyx_t_5);
            __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
            __pyx_cur_scope->__pyx_t_4 = 0;
            __Pyx_XGOTREF(__pyx_t_6);
            __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
            __pyx_cur_scope->__pyx_t_5 = 0;
            __Pyx_XGOTREF(__pyx_t_7);
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 438, __pyx_L6_error)

    +0439:                     for c in p.root_dataset.children_recursive:

            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_n_s_root_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 439, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_children_recursive); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 439, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
              __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0;
              __pyx_t_10 = NULL;
            } else {
              __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 439, __pyx_L6_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 439, __pyx_L6_error)
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            for (;;) {
              if (likely(!__pyx_t_10)) {
                if (likely(PyList_CheckExact(__pyx_t_1))) {
                  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_1)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 439, __pyx_L6_error)
                  #else
                  __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 439, __pyx_L6_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  #endif
                } else {
                  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 439, __pyx_L6_error)
                  #else
                  __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 439, __pyx_L6_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  #endif
                }
              } else {
                __pyx_t_8 = __pyx_t_10(__pyx_t_1);
                if (unlikely(!__pyx_t_8)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                    else __PYX_ERR(1, 439, __pyx_L6_error)
                  }
                  break;
                }
                __Pyx_GOTREF(__pyx_t_8);
              }
              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
              __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              __pyx_t_8 = 0;
    /* … */
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0440:                         yield c

              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
              __pyx_r = __pyx_cur_scope->__pyx_v_c;
              __Pyx_XGIVEREF(__pyx_t_1);
              __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
              __Pyx_XGIVEREF(__pyx_t_2);
              __pyx_cur_scope->__pyx_t_3 = __pyx_t_2;
              __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
              __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
              __Pyx_XGIVEREF(__pyx_t_5);
              __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
              __Pyx_XGIVEREF(__pyx_t_6);
              __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
              __Pyx_XGIVEREF(__pyx_t_7);
              __pyx_cur_scope->__pyx_t_6 = __pyx_t_7;
              __pyx_cur_scope->__pyx_t_7 = __pyx_t_9;
              __pyx_cur_scope->__pyx_t_8 = __pyx_t_10;
              __Pyx_XGIVEREF(__pyx_r);
              __Pyx_RefNannyFinishContext();
              /* return from generator, yielding value */
              __pyx_generator->resume_label = 2;
              return __pyx_r;
              __pyx_L17_resume_from_yield:;
              __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
              __pyx_cur_scope->__pyx_t_0 = 0;
              __Pyx_XGOTREF(__pyx_t_1);
              __pyx_t_2 = __pyx_cur_scope->__pyx_t_3;
              __pyx_cur_scope->__pyx_t_3 = 0;
              __Pyx_XGOTREF(__pyx_t_2);
              __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
              __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
              __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
              __pyx_cur_scope->__pyx_t_4 = 0;
              __Pyx_XGOTREF(__pyx_t_5);
              __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
              __pyx_cur_scope->__pyx_t_5 = 0;
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_7 = __pyx_cur_scope->__pyx_t_6;
              __pyx_cur_scope->__pyx_t_6 = 0;
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_9 = __pyx_cur_scope->__pyx_t_7;
              __pyx_t_10 = __pyx_cur_scope->__pyx_t_8;
              if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 440, __pyx_L6_error)

    +0441:                 except ZFSException:

          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 441, __pyx_L8_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__pyx_t_11) {
            __Pyx_AddTraceback("libzfs.ZFS.datasets.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_12) < 0) __PYX_ERR(1, 441, __pyx_L8_except_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GOTREF(__pyx_t_12);

    +0442:                     continue

            goto __pyx_L19_except_continue;
            __pyx_L19_except_continue:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            goto __pyx_L12_try_continue;
          }
          goto __pyx_L8_except_error;
          __pyx_L8_except_error:;

     0443:

     0444:     property snapshots:

    +0445:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_9snapshots_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_9snapshots_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_9snapshots___get__(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_9snapshots___get__(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_4___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_4___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_4___get__(__pyx_ptype_6libzfs___pyx_scope_struct_4___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_3ZFS_9snapshots_2generator4, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFS___get); if (unlikely(!gen)) __PYX_ERR(1, 445, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFS.snapshots.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_3ZFS_9snapshots_2generator4(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 445, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_4___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_c;
      PyObject *__pyx_v_p;
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_self;
      PyObject *__pyx_t_0;
      PyObject *__pyx_t_1;
      Py_ssize_t __pyx_t_2;
      PyObject *(*__pyx_t_3)(PyObject *);
      PyObject *__pyx_t_4;
      PyObject *__pyx_t_5;
      PyObject *__pyx_t_6;
      Py_ssize_t __pyx_t_7;
      PyObject *(*__pyx_t_8)(PyObject *);
    };

    +0446:             for p in self.pools:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_pools); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 446, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 446, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 446, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 446, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 446, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 446, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 446, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 446, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_p);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_p, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
        __pyx_L4_continue:;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0447:                 try:

        {
          /*try:*/ {
    /* … */
          }
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L13_try_end;
          __pyx_L6_error:;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* … */
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          goto __pyx_L1_error;
          __pyx_L12_try_continue:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          goto __pyx_L4_continue;
          __pyx_L13_try_end:;
        }

    +0448:                     for c in p.root_dataset.snapshots_recursive:

            __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_p, __pyx_n_s_root_dataset); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 448, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_snapshots_recursive); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 448, __pyx_L6_error)
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            if (likely(PyList_CheckExact(__pyx_t_8)) || PyTuple_CheckExact(__pyx_t_8)) {
              __pyx_t_1 = __pyx_t_8; __Pyx_INCREF(__pyx_t_1); __pyx_t_9 = 0;
              __pyx_t_10 = NULL;
            } else {
              __pyx_t_9 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 448, __pyx_L6_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_10 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 448, __pyx_L6_error)
            }
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            for (;;) {
              if (likely(!__pyx_t_10)) {
                if (likely(PyList_CheckExact(__pyx_t_1))) {
                  if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_1)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_8 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 448, __pyx_L6_error)
                  #else
                  __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 448, __pyx_L6_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  #endif
                } else {
                  if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
                  #if CYTHON_COMPILING_IN_CPYTHON
                  __pyx_t_8 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_9); __Pyx_INCREF(__pyx_t_8); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 448, __pyx_L6_error)
                  #else
                  __pyx_t_8 = PySequence_ITEM(__pyx_t_1, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 448, __pyx_L6_error)
                  __Pyx_GOTREF(__pyx_t_8);
                  #endif
                }
              } else {
                __pyx_t_8 = __pyx_t_10(__pyx_t_1);
                if (unlikely(!__pyx_t_8)) {
                  PyObject* exc_type = PyErr_Occurred();
                  if (exc_type) {
                    if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                    else __PYX_ERR(1, 448, __pyx_L6_error)
                  }
                  break;
                }
                __Pyx_GOTREF(__pyx_t_8);
              }
              __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
              __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_8);
              __Pyx_GIVEREF(__pyx_t_8);
              __pyx_t_8 = 0;
    /* … */
            }
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0449:                         yield c

              __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
              __pyx_r = __pyx_cur_scope->__pyx_v_c;
              __Pyx_XGIVEREF(__pyx_t_1);
              __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
              __Pyx_XGIVEREF(__pyx_t_2);
              __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
              __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
              __pyx_cur_scope->__pyx_t_3 = __pyx_t_4;
              __Pyx_XGIVEREF(__pyx_t_5);
              __pyx_cur_scope->__pyx_t_4 = __pyx_t_5;
              __Pyx_XGIVEREF(__pyx_t_6);
              __pyx_cur_scope->__pyx_t_5 = __pyx_t_6;
              __Pyx_XGIVEREF(__pyx_t_7);
              __pyx_cur_scope->__pyx_t_6 = __pyx_t_7;
              __pyx_cur_scope->__pyx_t_7 = __pyx_t_9;
              __pyx_cur_scope->__pyx_t_8 = __pyx_t_10;
              __Pyx_XGIVEREF(__pyx_r);
              __Pyx_RefNannyFinishContext();
              /* return from generator, yielding value */
              __pyx_generator->resume_label = 1;
              return __pyx_r;
              __pyx_L16_resume_from_yield:;
              __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
              __pyx_cur_scope->__pyx_t_0 = 0;
              __Pyx_XGOTREF(__pyx_t_1);
              __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
              __pyx_cur_scope->__pyx_t_1 = 0;
              __Pyx_XGOTREF(__pyx_t_2);
              __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
              __pyx_t_4 = __pyx_cur_scope->__pyx_t_3;
              __pyx_t_5 = __pyx_cur_scope->__pyx_t_4;
              __pyx_cur_scope->__pyx_t_4 = 0;
              __Pyx_XGOTREF(__pyx_t_5);
              __pyx_t_6 = __pyx_cur_scope->__pyx_t_5;
              __pyx_cur_scope->__pyx_t_5 = 0;
              __Pyx_XGOTREF(__pyx_t_6);
              __pyx_t_7 = __pyx_cur_scope->__pyx_t_6;
              __pyx_cur_scope->__pyx_t_6 = 0;
              __Pyx_XGOTREF(__pyx_t_7);
              __pyx_t_9 = __pyx_cur_scope->__pyx_t_7;
              __pyx_t_10 = __pyx_cur_scope->__pyx_t_8;
              if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 449, __pyx_L6_error)

    +0450:                 except ZFSException:

          __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 450, __pyx_L8_except_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_11 = __Pyx_PyErr_ExceptionMatches(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__pyx_t_11) {
            __Pyx_AddTraceback("libzfs.ZFS.snapshots.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_1, &__pyx_t_8, &__pyx_t_12) < 0) __PYX_ERR(1, 450, __pyx_L8_except_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_GOTREF(__pyx_t_8);
            __Pyx_GOTREF(__pyx_t_12);

    +0451:                     continue

            goto __pyx_L18_except_continue;
            __pyx_L18_except_continue:;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
            __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            goto __pyx_L12_try_continue;
          }
          goto __pyx_L8_except_error;
          __pyx_L8_except_error:;

     0452:

    +0453:     def get(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_7get(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_7get(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_6get(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_6get(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name) {
      char const *__pyx_v_c_name;
      zpool_handle_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_pool);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_3ZFS_10generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

    +0454:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 454, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

    +0455:         cdef libzfs.zpool_handle_t* handle = NULL

      __pyx_v_handle = NULL;

     0456:         cdef ZFSPool pool

     0457:

    +0458:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0459:             handle = libzfs.zpool_open_canfail(self.handle, c_name)

            __pyx_v_handle = zpool_open_canfail(__pyx_v_self->handle, __pyx_v_c_name);
          }

     0460:

    +0461:         if handle == NULL:

      __pyx_t_2 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0462:             raise ZFSException(Error.NOENT, 'Pool {0} not found'.format(name))

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Pool_0_not_found, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 462, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 462, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_name);
          __Pyx_GIVEREF(__pyx_v_name);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 462, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 462, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 462, __pyx_L1_error)

     0463:

    +0464:         pool = ZFSPool.__new__(ZFSPool)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSPool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 464, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSPool)))) __PYX_ERR(1, 464, __pyx_L1_error)
      __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0465:         pool.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_pool->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_pool->root));
      __pyx_v_pool->root = __pyx_v_self;

    +0466:         pool.handle = handle

      __pyx_v_pool->handle = __pyx_v_handle;

    +0467:         return pool

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __pyx_r = ((PyObject *)__pyx_v_pool);
      goto __pyx_L0;

     0468:

    +0469:     def find_import(self, cachefile=None, name=None, destroyed=False, search_paths=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_9find_import(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_9find_import(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_cachefile = 0;
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_destroyed = 0;
      PyObject *__pyx_v_search_paths = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("find_import (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cachefile,&__pyx_n_s_name_2,&__pyx_n_s_destroyed,&__pyx_n_s_search_paths,0};
        PyObject* values[4] = {0,0,0,0};
        values[0] = ((PyObject *)Py_None);
        values[1] = ((PyObject *)Py_None);
        values[2] = ((PyObject *)Py_False);
        values[3] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cachefile);
              if (value) { values[0] = value; kw_args--; }
            }
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2);
              if (value) { values[1] = value; kw_args--; }
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_destroyed);
              if (value) { values[2] = value; kw_args--; }
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_search_paths);
              if (value) { values[3] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find_import") < 0)) __PYX_ERR(1, 469, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_cachefile = values[0];
        __pyx_v_name = values[1];
        __pyx_v_destroyed = values[2];
        __pyx_v_search_paths = values[3];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("find_import", 0, 0, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 469, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.find_import", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_8find_import(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_cachefile, __pyx_v_name, __pyx_v_destroyed, __pyx_v_search_paths);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_8find_import(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_cachefile, PyObject *__pyx_v_name, PyObject *__pyx_v_destroyed, PyObject *__pyx_v_search_paths) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_5_find_import *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("find_import", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_5_find_import *)__pyx_tp_new_6libzfs___pyx_scope_struct_5_find_import(__pyx_ptype_6libzfs___pyx_scope_struct_5_find_import, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __pyx_cur_scope->__pyx_v_cachefile = __pyx_v_cachefile;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_cachefile);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_cachefile);
      __pyx_cur_scope->__pyx_v_name = __pyx_v_name;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name);
      __pyx_cur_scope->__pyx_v_destroyed = __pyx_v_destroyed;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_destroyed);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_destroyed);
      __pyx_cur_scope->__pyx_v_search_paths = __pyx_v_search_paths;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_search_paths);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_search_paths);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_3ZFS_10generator5, (PyObject *) __pyx_cur_scope, __pyx_n_s_find_import, __pyx_n_s_ZFS_find_import); if (unlikely(!gen)) __PYX_ERR(1, 469, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFS.find_import", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_3ZFS_10generator5(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 469, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_AddTraceback("find_import", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_5_find_import {
      PyObject_HEAD
      char *__pyx_v_c_name;
      PyObject *__pyx_v_cachefile;
      PyObject *__pyx_v_config;
      PyObject *__pyx_v_destroyed;
      PyObject *__pyx_v_encoded;
      PyObject *__pyx_v_i;
      importargs_t __pyx_v_iargs;
      PyObject *__pyx_v_name;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_nv;
      PyObject *__pyx_v_p;
      char *__pyx_v_paths;
      struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_pool;
      nvlist_t *__pyx_v_result;
      PyObject *__pyx_v_search_paths;
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     0470:         cdef ZFSImportablePool pool

     0471:         cdef libzfs.importargs_t iargs

    +0472:         cdef char* paths = "/dev"

      __pyx_cur_scope->__pyx_v_paths = ((char *)"/dev");

     0473:         cdef char* c_name

     0474:         cdef nvpair.nvlist_t* result

     0475:

    +0476:         iargs.path = &paths

      __pyx_cur_scope->__pyx_v_iargs.path = (&__pyx_cur_scope->__pyx_v_paths);

    +0477:         iargs.paths = 1

      __pyx_cur_scope->__pyx_v_iargs.paths = 1;

    +0478:         iargs.poolname = NULL

      __pyx_cur_scope->__pyx_v_iargs.poolname = NULL;

    +0479:         iargs.guid = 0

      __pyx_cur_scope->__pyx_v_iargs.guid = 0;

    +0480:         iargs.cachefile = NULL

      __pyx_cur_scope->__pyx_v_iargs.cachefile = NULL;

     0481:

    +0482:         if name:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_name); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 482, __pyx_L1_error)
      if (__pyx_t_1) {
    /* … */
      }

    +0483:             encoded = name.encode('utf-8')

        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_v_encoded = __pyx_t_3;
        __pyx_t_3 = 0;
    /* … */
      __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_utf_8); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(1, 483, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__12);
      __Pyx_GIVEREF(__pyx_tuple__12);

    +0484:             c_name = encoded

        __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_encoded); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 484, __pyx_L1_error)
        __pyx_cur_scope->__pyx_v_c_name = __pyx_t_4;

    +0485:             iargs.poolname = c_name

        __pyx_cur_scope->__pyx_v_iargs.poolname = __pyx_cur_scope->__pyx_v_c_name;

     0486:

    +0487:         if search_paths:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_search_paths); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 487, __pyx_L1_error)
      if (__pyx_t_1) {
    /* … */
      }

    +0488:             iargs.path = <char **>malloc(len(search_paths) * sizeof(char *))

        __pyx_t_5 = PyObject_Length(__pyx_cur_scope->__pyx_v_search_paths); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(1, 488, __pyx_L1_error)
        __pyx_cur_scope->__pyx_v_iargs.path = ((char **)malloc((__pyx_t_5 * (sizeof(char *)))));

    +0489:             iargs.paths = len(search_paths)

        __pyx_t_5 = PyObject_Length(__pyx_cur_scope->__pyx_v_search_paths); if (unlikely(__pyx_t_5 == -1)) __PYX_ERR(1, 489, __pyx_L1_error)
        __pyx_cur_scope->__pyx_v_iargs.paths = __pyx_t_5;

    +0490:             for i, p in enumerate(search_paths):

        __Pyx_INCREF(__pyx_int_0);
        __pyx_t_3 = __pyx_int_0;
        if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_search_paths)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_search_paths)) {
          __pyx_t_2 = __pyx_cur_scope->__pyx_v_search_paths; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
          __pyx_t_6 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_search_paths); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 490, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 490, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_6)) {
            if (likely(PyList_CheckExact(__pyx_t_2))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 490, __pyx_L1_error)
              #else
              __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 490, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 490, __pyx_L1_error)
              #else
              __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 490, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_7);
              #endif
            }
          } else {
            __pyx_t_7 = __pyx_t_6(__pyx_t_2);
            if (unlikely(!__pyx_t_7)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 490, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_7);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_p);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_p, __pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_7);
          __pyx_t_7 = 0;
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_3);
          __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 490, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_DECREF(__pyx_t_3);
          __pyx_t_3 = __pyx_t_7;
          __pyx_t_7 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +0491:                 iargs.path[i] = <char *>p

          __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_p); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 491, __pyx_L1_error)
          __pyx_t_8 = __Pyx_PyIndex_AsSsize_t(__pyx_cur_scope->__pyx_v_i); if (unlikely((__pyx_t_8 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 491, __pyx_L1_error)
          (__pyx_cur_scope->__pyx_v_iargs.path[__pyx_t_8]) = ((char *)__pyx_t_4);

     0492:

    +0493:         if cachefile:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_cachefile); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 493, __pyx_L1_error)
      if (__pyx_t_1) {
    /* … */
      }

    +0494:             iargs.cachefile = cachefile

        __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_cachefile); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 494, __pyx_L1_error)
        __pyx_cur_scope->__pyx_v_iargs.cachefile = __pyx_t_4;

     0495:

    +0496:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L11;
            }
            __pyx_L11:;
          }
      }

    +0497:             result = libzfs.zpool_search_import(self.handle, &iargs)

            __pyx_cur_scope->__pyx_v_result = zpool_search_import(__pyx_cur_scope->__pyx_v_self->handle, (&__pyx_cur_scope->__pyx_v_iargs));
          }

     0498:

    +0499:         if result is NULL:

      __pyx_t_1 = ((__pyx_cur_scope->__pyx_v_result == NULL) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0500:             return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     0501:

    +0502:         nv = NVList(nvlist=<uintptr_t>result)

      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_cur_scope->__pyx_v_result)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_nvlist, __pyx_t_2) < 0) __PYX_ERR(1, 502, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 502, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_nv = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +0503:         for name, config in nv.items(raw=True):

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_nv), __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_raw, Py_True) < 0) __PYX_ERR(1, 503, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 503, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
        __pyx_t_3 = __pyx_t_7; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 503, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 503, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 503, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 503, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 503, __pyx_L1_error)
            #else
            __pyx_t_7 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 503, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_7);
            #endif
          }
        } else {
          __pyx_t_7 = __pyx_t_6(__pyx_t_3);
          if (unlikely(!__pyx_t_7)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 503, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_7);
        }
        if ((likely(PyTuple_CheckExact(__pyx_t_7))) || (PyList_CheckExact(__pyx_t_7))) {
          PyObject* sequence = __pyx_t_7;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(1, 503, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1);
          } else {
            __pyx_t_2 = PyList_GET_ITEM(sequence, 0);
            __pyx_t_9 = PyList_GET_ITEM(sequence, 1);
          }
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_9);
          #else
          __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 503, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 503, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          #endif
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_10 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 503, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
          index = 0; __pyx_t_2 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_2)) goto __pyx_L15_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_2);
          index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L15_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_9);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(1, 503, __pyx_L1_error)
          __pyx_t_11 = NULL;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          goto __pyx_L16_unpacking_done;
          __pyx_L15_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_11 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(1, 503, __pyx_L1_error)
          __pyx_L16_unpacking_done:;
        }
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_name);
        __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_name, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_config);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_config, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_9);
        __pyx_t_9 = 0;
    /* … */
        __pyx_L13_continue:;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +0504:             pool = ZFSImportablePool.__new__(ZFSImportablePool)

        __pyx_t_7 = __pyx_tp_new_6libzfs_ZFSImportablePool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSImportablePool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 504, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (!(likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_6libzfs_ZFSImportablePool)))) __PYX_ERR(1, 504, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_pool, ((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_t_7));
        __Pyx_GIVEREF(__pyx_t_7);
        __pyx_t_7 = 0;

    +0505:             pool.name = name

        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_name);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_name);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pool->name);
        __Pyx_DECREF(__pyx_cur_scope->__pyx_v_pool->name);
        __pyx_cur_scope->__pyx_v_pool->name = __pyx_cur_scope->__pyx_v_name;

    +0506:             pool.free = False

        __pyx_cur_scope->__pyx_v_pool->__pyx_base.free = 0;

    +0507:             pool.nvlist = config

        if (!(likely(((__pyx_cur_scope->__pyx_v_config) == Py_None) || likely(__Pyx_TypeTest(__pyx_cur_scope->__pyx_v_config, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 507, __pyx_L1_error)
        __pyx_t_7 = __pyx_cur_scope->__pyx_v_config;
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_7);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_pool->nvlist);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool->nvlist));
        __pyx_cur_scope->__pyx_v_pool->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_7);
        __pyx_t_7 = 0;

     0508:

     0509:             # Skip destroyed pools

    +0510:             if config['state'] == PoolState.DESTROYED and not destroyed:

        __pyx_t_7 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_config, __pyx_n_s_state); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 510, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_PoolState); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 510, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_DESTROYED); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 510, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_9 = PyObject_RichCompare(__pyx_t_7, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 510, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(1, 510, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (__pyx_t_12) {
        } else {
          __pyx_t_1 = __pyx_t_12;
          goto __pyx_L18_bool_binop_done;
        }
        __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_cur_scope->__pyx_v_destroyed); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(1, 510, __pyx_L1_error)
        __pyx_t_13 = ((!__pyx_t_12) != 0);
        __pyx_t_1 = __pyx_t_13;
        __pyx_L18_bool_binop_done:;
        if (__pyx_t_1) {
    /* … */
        }

    +0511:                 continue

          goto __pyx_L13_continue;

     0512:

    +0513:             yield pool

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_pool));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_pool);
        __Pyx_XGIVEREF(__pyx_t_3);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_3;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L20_resume_from_yield:;
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_3);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 513, __pyx_L1_error)

     0514:

    +0515:     def import_pool(self, ZFSImportablePool pool, newname, opts):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_12import_pool(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_12import_pool(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_pool = 0;
      PyObject *__pyx_v_newname = 0;
      PyObject *__pyx_v_opts = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("import_pool (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_pool,&__pyx_n_s_newname,&__pyx_n_s_opts,0};
        PyObject* values[3] = {0,0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pool)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_newname)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("import_pool", 1, 3, 3, 1); __PYX_ERR(1, 515, __pyx_L3_error)
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opts)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("import_pool", 1, 3, 3, 2); __PYX_ERR(1, 515, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "import_pool") < 0)) __PYX_ERR(1, 515, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
          values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        }
        __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSImportablePool *)values[0]);
        __pyx_v_newname = values[1];
        __pyx_v_opts = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("import_pool", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 515, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.import_pool", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pool), __pyx_ptype_6libzfs_ZFSImportablePool, 1, "pool", 0))) __PYX_ERR(1, 515, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_3ZFS_11import_pool(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_pool, __pyx_v_newname, __pyx_v_opts);

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_11import_pool(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_pool, PyObject *__pyx_v_newname, PyObject *__pyx_v_opts) {
      char const *__pyx_v_c_newname;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_copts = 0;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("import_pool", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.import_pool", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_copts);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0516:         cdef const char *c_newname = newname

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_newname); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 516, __pyx_L1_error)
      __pyx_v_c_newname = __pyx_t_1;

    +0517:         cdef NVList copts = NVList(otherdict=opts)

      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 517, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_otherdict, __pyx_v_opts) < 0) __PYX_ERR(1, 517, __pyx_L1_error)
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 517, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_copts = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_3);
      __pyx_t_3 = 0;

     0518:         cdef int ret

     0519:

    +0520:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0521:             ret = libzfs.zpool_import_props(

            __pyx_v_ret = zpool_import_props(__pyx_v_self->handle, __pyx_v_pool->nvlist->handle, __pyx_v_c_newname, __pyx_v_copts->handle, 0);
          }

     0522:                 self.handle,

     0523:                 pool.nvlist.handle,

     0524:                 c_newname,

     0525:                 copts.handle,

     0526:                 False

     0527:             )

     0528:

    +0529:         if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0530:             raise self.get_error()

        __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->get_error(__pyx_v_self); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 530, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 530, __pyx_L1_error)

     0531:

    +0532:         self.write_history('zpool import', str(pool.guid), newname if newname else pool.name)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write_history); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pool), __pyx_n_s_guid); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
      __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_newname); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 532, __pyx_L1_error)
      if (__pyx_t_4) {
        __Pyx_INCREF(__pyx_v_newname);
        __pyx_t_6 = __pyx_v_newname;
      } else {
        __Pyx_INCREF(__pyx_v_pool->name);
        __pyx_t_6 = __pyx_v_pool->name;
      }
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_import);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_import);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_zpool_import);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 532, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +0533:         return self.get(newname)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_9 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_9) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_newname); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 533, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 533, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_v_newname);
        __Pyx_GIVEREF(__pyx_v_newname);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_newname);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 533, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     0534:

    +0535:     def export_pool(self, ZFSPool pool):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_14export_pool(PyObject *__pyx_v_self, PyObject *__pyx_v_pool); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_14export_pool(PyObject *__pyx_v_self, PyObject *__pyx_v_pool) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("export_pool (wrapper)", 0);
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pool), __pyx_ptype_6libzfs_ZFSPool, 1, "pool", 0))) __PYX_ERR(1, 535, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13export_pool(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_pool));

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13export_pool(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("export_pool", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFS.export_pool", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0536:         cdef int ret

     0537:

    +0538:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0539:             ret = libzfs.zpool_disable_datasets(pool.handle, True)

            __pyx_v_ret = zpool_disable_datasets(__pyx_v_pool->handle, 1);
          }

     0540:

    +0541:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0542:             raise self.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->get_error(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 542, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 542, __pyx_L1_error)

     0543:

    +0544:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L9;
            }
            __pyx_L9:;
          }
      }

    +0545:             ret = libzfs.zpool_export(pool.handle, True, "export")

            __pyx_v_ret = zpool_export(__pyx_v_pool->handle, 1, ((char const *)"export"));
          }

     0546:

    +0547:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0548:             raise self.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->get_error(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 548, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 548, __pyx_L1_error)

     0549:

    +0550:         self.write_history('zpool export', str(pool.name))

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_export);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_export);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zpool_export);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0551:

    +0552:     def get_dataset(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_16get_dataset(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_16get_dataset(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_dataset (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_15get_dataset(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_15get_dataset(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name) {
      char const *__pyx_v_c_name;
      zfs_handle_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_dataset = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_dataset", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.get_dataset", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_pool);
      __Pyx_XDECREF((PyObject *)__pyx_v_dataset);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0553:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 553, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

    +0554:         cdef libzfs.zfs_handle_t* handle = NULL

      __pyx_v_handle = NULL;

     0555:         cdef ZFSPool pool

     0556:         cdef ZFSDataset dataset

     0557:

    +0558:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0559:             handle = libzfs.zfs_open(self.handle, c_name, zfs.ZFS_TYPE_FILESYSTEM|zfs.ZFS_TYPE_VOLUME)

            __pyx_v_handle = zfs_open(__pyx_v_self->handle, __pyx_v_c_name, (ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME));
          }

     0560:

    +0561:         if handle == NULL:

      __pyx_t_2 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0562:             raise ZFSException(Error.NOENT, 'Dataset {0} not found'.format(name))

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Dataset_0_not_found, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 562, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 562, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_name);
          __Pyx_GIVEREF(__pyx_v_name);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 562, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 562, __pyx_L1_error)

     0563:

    +0564:         pool = ZFSPool.__new__(ZFSPool)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSPool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 564, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSPool)))) __PYX_ERR(1, 564, __pyx_L1_error)
      __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0565:         pool.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_pool->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_pool->root));
      __pyx_v_pool->root = __pyx_v_self;

    +0566:         pool.free = False

      __pyx_v_pool->free = 0;

    +0567:         pool.handle = libzfs.zfs_get_pool_handle(handle)

      __pyx_v_pool->handle = zfs_get_pool_handle(__pyx_v_handle);

    +0568:         dataset = ZFSDataset.__new__(ZFSDataset)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSDataset(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSDataset), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 568, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSDataset)))) __PYX_ERR(1, 568, __pyx_L1_error)
      __pyx_v_dataset = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0569:         dataset.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.root);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.root));
      __pyx_v_dataset->__pyx_base.root = __pyx_v_self;

    +0570:         dataset.pool = pool

      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pool));
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.pool);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.pool));
      __pyx_v_dataset->__pyx_base.pool = __pyx_v_pool;

    +0571:         dataset.handle = handle

      __pyx_v_dataset->__pyx_base.handle = __pyx_v_handle;

    +0572:         return dataset

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dataset));
      __pyx_r = ((PyObject *)__pyx_v_dataset);
      goto __pyx_L0;

     0573:

    +0574:     def get_snapshot(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_18get_snapshot(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_18get_snapshot(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_snapshot (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_17get_snapshot(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_17get_snapshot(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name) {
      zfs_handle_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_snap = 0;
      char const *__pyx_v_c_name;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_snapshot", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.get_snapshot", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_pool);
      __Pyx_XDECREF((PyObject *)__pyx_v_snap);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0575:         cdef libzfs.zfs_handle_t* handle = NULL

      __pyx_v_handle = NULL;

     0576:         cdef ZFSPool pool

     0577:         cdef ZFSSnapshot snap

    +0578:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 578, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

     0579:

    +0580:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0581:             handle = libzfs.zfs_open(self.handle, c_name, zfs.ZFS_TYPE_SNAPSHOT)

            __pyx_v_handle = zfs_open(__pyx_v_self->handle, __pyx_v_c_name, ZFS_TYPE_SNAPSHOT);
          }

     0582:

    +0583:         if handle == NULL:

      __pyx_t_2 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0584:             raise ZFSException(Error.NOENT, 'Snapshot {0} not found'.format(name))

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Snapshot_0_not_found, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_name);
          __Pyx_GIVEREF(__pyx_v_name);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 584, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 584, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 584, __pyx_L1_error)

     0585:

    +0586:         pool = ZFSPool.__new__(ZFSPool)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSPool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 586, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSPool)))) __PYX_ERR(1, 586, __pyx_L1_error)
      __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0587:         pool.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_pool->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_pool->root));
      __pyx_v_pool->root = __pyx_v_self;

    +0588:         pool.free = False

      __pyx_v_pool->free = 0;

    +0589:         pool.handle = libzfs.zfs_get_pool_handle(handle)

      __pyx_v_pool->handle = zfs_get_pool_handle(__pyx_v_handle);

    +0590:         snap = ZFSSnapshot.__new__(ZFSSnapshot)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSSnapshot(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSSnapshot), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSSnapshot)))) __PYX_ERR(1, 590, __pyx_L1_error)
      __pyx_v_snap = ((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0591:         snap.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_snap->__pyx_base.root);
      __Pyx_DECREF(((PyObject *)__pyx_v_snap->__pyx_base.root));
      __pyx_v_snap->__pyx_base.root = __pyx_v_self;

    +0592:         snap.pool = pool

      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pool));
      __Pyx_GOTREF(__pyx_v_snap->__pyx_base.pool);
      __Pyx_DECREF(((PyObject *)__pyx_v_snap->__pyx_base.pool));
      __pyx_v_snap->__pyx_base.pool = __pyx_v_pool;

    +0593:         snap.handle = handle

      __pyx_v_snap->__pyx_base.handle = __pyx_v_handle;

    +0594:         return snap

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_snap));
      __pyx_r = ((PyObject *)__pyx_v_snap);
      goto __pyx_L0;

     0595:

    +0596:     def get_object(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_20get_object(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_20get_object(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_object (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_19get_object(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_19get_object(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_v_err = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_object", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_AddTraceback("libzfs.ZFS.get_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_err);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0597:         try:

      {
        /*try:*/ {
    /* … */
        }
        __pyx_L3_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* … */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
        goto __pyx_L1_error;
        __pyx_L7_try_return:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
        goto __pyx_L0;
        __pyx_L6_except_return:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
        goto __pyx_L0;
      }

    +0598:             return self.get_dataset(name)

          __Pyx_XDECREF(__pyx_r);
          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_dataset); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 598, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
            if (likely(__pyx_t_6)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
              __Pyx_INCREF(__pyx_t_6);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_5, function);
            }
          }
          if (!__pyx_t_6) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 598, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 598, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
            __Pyx_INCREF(__pyx_v_name);
            __Pyx_GIVEREF(__pyx_v_name);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_name);
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 598, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_r = __pyx_t_4;
          __pyx_t_4 = 0;
          goto __pyx_L7_try_return;

    +0599:         except ZFSException as err:

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 599, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_8) {
          __Pyx_AddTraceback("libzfs.ZFS.get_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_5, &__pyx_t_7) < 0) __PYX_ERR(1, 599, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_5);
          __pyx_v_err = __pyx_t_5;

    +0600:             if err.code == Error.NOENT:

          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_err, __pyx_n_s_code); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 600, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 600, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_9);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 600, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_10);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __pyx_t_9 = PyObject_RichCompare(__pyx_t_6, __pyx_t_10, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 600, __pyx_L5_except_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(1, 600, __pyx_L5_except_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (__pyx_t_11) {
    /* … */
          }

    +0601:                 return self.get_snapshot(name)

            __Pyx_XDECREF(__pyx_r);
            __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_snapshot); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 601, __pyx_L5_except_error)
            __Pyx_GOTREF(__pyx_t_10);
            __pyx_t_6 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_10))) {
              __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_10);
              if (likely(__pyx_t_6)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
                __Pyx_INCREF(__pyx_t_6);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_10, function);
              }
            }
            if (!__pyx_t_6) {
              __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_10, __pyx_v_name); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 601, __pyx_L5_except_error)
              __Pyx_GOTREF(__pyx_t_9);
            } else {
              __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 601, __pyx_L5_except_error)
              __Pyx_GOTREF(__pyx_t_12);
              __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
              __Pyx_INCREF(__pyx_v_name);
              __Pyx_GIVEREF(__pyx_v_name);
              PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_name);
              __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_12, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 601, __pyx_L5_except_error)
              __Pyx_GOTREF(__pyx_t_9);
              __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
            }
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            __pyx_r = __pyx_t_9;
            __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
            goto __pyx_L6_except_return;

     0602:

    +0603:             raise err

          __Pyx_Raise(__pyx_v_err, 0, 0, 0);
          __PYX_ERR(1, 603, __pyx_L5_except_error)
        }
        goto __pyx_L5_except_error;
        __pyx_L5_except_error:;

     0604:

    +0605:     def get_dataset_by_path(self, path):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_22get_dataset_by_path(PyObject *__pyx_v_self, PyObject *__pyx_v_path); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_22get_dataset_by_path(PyObject *__pyx_v_self, PyObject *__pyx_v_path) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_dataset_by_path (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_21get_dataset_by_path(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_path));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_21get_dataset_by_path(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_path) {
      zfs_handle_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_dataset = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_dataset_by_path", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.get_dataset_by_path", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_pool);
      __Pyx_XDECREF((PyObject *)__pyx_v_dataset);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0606:         cdef libzfs.zfs_handle_t* handle = libzfs.zfs_path_to_zhandle(self.handle, path, zfs.ZFS_TYPE_DATASET)

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_path); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 606, __pyx_L1_error)
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_zfs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ZFS_TYPE_DATASET); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 606, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_handle = zfs_path_to_zhandle(__pyx_v_self->handle, __pyx_t_1, __pyx_t_3);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     0607:         cdef ZFSPool pool

     0608:         cdef ZFSDataset dataset

    +0609:         if handle == NULL:

      __pyx_t_4 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0610:             raise ZFSException(Error.NOENT, 'Dataset with path {0} not found'.format(path))

        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Dataset_with_path_0_not_found, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 610, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 610, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_path);
          __Pyx_GIVEREF(__pyx_v_path);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_path);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 610, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 610, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 610, __pyx_L1_error)

     0611:

    +0612:         pool = ZFSPool.__new__(ZFSPool)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSPool(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPool), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 612, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSPool)))) __PYX_ERR(1, 612, __pyx_L1_error)
      __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0613:         pool.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_pool->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_pool->root));
      __pyx_v_pool->root = __pyx_v_self;

    +0614:         pool.free = False

      __pyx_v_pool->free = 0;

    +0615:         pool.handle = libzfs.zfs_get_pool_handle(handle)

      __pyx_v_pool->handle = zfs_get_pool_handle(__pyx_v_handle);

    +0616:         dataset = ZFSDataset.__new__(ZFSDataset)

      __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSDataset(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSDataset), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSDataset)))) __PYX_ERR(1, 616, __pyx_L1_error)
      __pyx_v_dataset = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_3);
      __pyx_t_3 = 0;

    +0617:         dataset.root = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.root);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.root));
      __pyx_v_dataset->__pyx_base.root = __pyx_v_self;

    +0618:         dataset.pool = pool

      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pool));
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.pool);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.pool));
      __pyx_v_dataset->__pyx_base.pool = __pyx_v_pool;

    +0619:         dataset.handle = handle

      __pyx_v_dataset->__pyx_base.handle = __pyx_v_handle;

    +0620:         return dataset

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dataset));
      __pyx_r = ((PyObject *)__pyx_v_dataset);
      goto __pyx_L0;

     0621:

    +0622:     def create(self, name, topology, opts, fsopts):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_24create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_24create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_topology = 0;
      PyObject *__pyx_v_opts = 0;
      PyObject *__pyx_v_fsopts = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_topology,&__pyx_n_s_opts,&__pyx_n_s_fsopts,0};
        PyObject* values[4] = {0,0,0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_topology)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 1); __PYX_ERR(1, 622, __pyx_L3_error)
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opts)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 2); __PYX_ERR(1, 622, __pyx_L3_error)
            }
            case  3:
            if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fsopts)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, 3); __PYX_ERR(1, 622, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(1, 622, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
          values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
          values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        }
        __pyx_v_name = values[0];
        __pyx_v_topology = values[1];
        __pyx_v_opts = values[2];
        __pyx_v_fsopts = values[3];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("create", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 622, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_23create(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_name, __pyx_v_topology, __pyx_v_opts, __pyx_v_fsopts);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_23create(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_topology, PyObject *__pyx_v_opts, PyObject *__pyx_v_fsopts) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_root = 0;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_copts = 0;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_cfsopts = 0;
      char const *__pyx_v_c_name;
      int __pyx_v_ret;
      PyObject *__pyx_v_hopts = NULL;
      PyObject *__pyx_v_hfsopts = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_root);
      __Pyx_XDECREF((PyObject *)__pyx_v_copts);
      __Pyx_XDECREF((PyObject *)__pyx_v_cfsopts);
      __Pyx_XDECREF(__pyx_v_hopts);
      __Pyx_XDECREF(__pyx_v_hfsopts);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0623:         cdef NVList root = self.make_vdev_tree(topology).nvlist

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->make_vdev_tree(__pyx_v_self, __pyx_v_topology)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((PyObject *)((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_1)->nvlist);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_root = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +0624:         cdef NVList copts = NVList(otherdict=opts)

      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_otherdict, __pyx_v_opts) < 0) __PYX_ERR(1, 624, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_copts = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

    +0625:         cdef NVList cfsopts = NVList(otherdict=fsopts)

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 625, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_otherdict, __pyx_v_fsopts) < 0) __PYX_ERR(1, 625, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 625, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_cfsopts = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +0626:         cdef const char *c_name = name

      __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 626, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_3;

     0627:         cdef int ret

     0628:

    +0629:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0630:             ret = libzfs.zpool_create(

            __pyx_v_ret = zpool_create(__pyx_v_self->handle, __pyx_v_c_name, __pyx_v_root->handle, __pyx_v_copts->handle, __pyx_v_cfsopts->handle);
          }

     0631:                 self.handle,

     0632:                 c_name,

     0633:                 root.handle,

     0634:                 copts.handle,

     0635:                 cfsopts.handle

     0636:             )

     0637:

    +0638:         if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0639:             raise ZFSException(self.errno, self.errstr)

        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 639, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 639, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errstr); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 639, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 639, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6);
        __pyx_t_5 = 0;
        __pyx_t_6 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 639, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 639, __pyx_L1_error)

     0640:

    +0641:         if self.history:

      __pyx_t_4 = (__pyx_v_self->history != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0642:             hopts = self.generate_history_opts(opts, '-o')

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_generate_history_opts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 642, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_9 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_6 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 642, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_INCREF(__pyx_v_opts);
        __Pyx_GIVEREF(__pyx_v_opts);
        PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_8, __pyx_v_opts);
        __Pyx_INCREF(__pyx_kp_s_o);
        __Pyx_GIVEREF(__pyx_kp_s_o);
        PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_8, __pyx_kp_s_o);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 642, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_hopts = __pyx_t_2;
        __pyx_t_2 = 0;

    +0643:             hfsopts = self.generate_history_opts(fsopts, '-O')

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_generate_history_opts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 643, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 643, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(__pyx_v_fsopts);
        __Pyx_GIVEREF(__pyx_v_fsopts);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_v_fsopts);
        __Pyx_INCREF(__pyx_kp_s_O);
        __Pyx_GIVEREF(__pyx_kp_s_O);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_s_O);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 643, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_hfsopts = __pyx_t_2;
        __pyx_t_2 = 0;

    +0644:             self.write_history(

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write_history); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 644, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);

     0645:                 'zpool create',

     0646:                 hopts,

     0647:                 hfsopts,

     0648:                 name,

    +0649:                 self.history_vdevs_list(topology)

        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_history_vdevs_list); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 649, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_topology); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 649, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 649, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_INCREF(__pyx_v_topology);
          __Pyx_GIVEREF(__pyx_v_topology);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_topology);
          __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 649, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_7 = PyTuple_New(5+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 644, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(__pyx_kp_s_zpool_create);
        __Pyx_GIVEREF(__pyx_kp_s_zpool_create);
        PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, __pyx_kp_s_zpool_create);
        __Pyx_INCREF(__pyx_v_hopts);
        __Pyx_GIVEREF(__pyx_v_hopts);
        PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_v_hopts);
        __Pyx_INCREF(__pyx_v_hfsopts);
        __Pyx_GIVEREF(__pyx_v_hfsopts);
        PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_8, __pyx_v_hfsopts);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_8, __pyx_v_name);
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_8, __pyx_t_9);
        __pyx_t_9 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 644, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0650:             )

     0651:

    +0652:         return self.get(name)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 652, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_7) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 652, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 652, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 652, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     0653:

    +0654:     def destroy(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_26destroy(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_26destroy(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_25destroy(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_25destroy(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name) {
      zpool_handle_t *__pyx_v_handle;
      char const *__pyx_v_c_name;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0655:         cdef libzfs.zpool_handle_t* handle

    +0656:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 656, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

     0657:

    +0658:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0659:             handle = libzfs.zpool_open(self.handle, c_name)

            __pyx_v_handle = zpool_open(__pyx_v_self->handle, __pyx_v_c_name);
          }

     0660:

    +0661:         if handle == NULL:

      __pyx_t_2 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0662:             raise ZFSException(Error.NOENT, 'Pool {0} not found'.format(name))

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOENT); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Pool_0_not_found, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 662, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 662, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_name);
          __Pyx_GIVEREF(__pyx_v_name);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_name);
          __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 662, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_6 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 662, __pyx_L1_error)

     0663:

    +0664:         if libzfs.zpool_destroy(handle, "destroy") != 0:

      __pyx_t_2 = ((zpool_destroy(__pyx_v_handle, ((char const *)"destroy")) != 0) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0665:             raise ZFSException(self.errno, self.errstr)

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errno); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errstr); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_7 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_9);
        PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_10, __pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_10, __pyx_t_5);
        __pyx_t_9 = 0;
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 665, __pyx_L1_error)

     0666:

    +0667:     def receive(self, name, fd, force=False, nomount=False, resumable=False, props=None, limitds=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_28receive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_28receive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_fd = 0;
      PyObject *__pyx_v_force = 0;
      PyObject *__pyx_v_nomount = 0;
      PyObject *__pyx_v_resumable = 0;
      PyObject *__pyx_v_props = 0;
      PyObject *__pyx_v_limitds = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("receive (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_fd,&__pyx_n_s_force,&__pyx_n_s_nomount,&__pyx_n_s_resumable,&__pyx_n_s_props,&__pyx_n_s_limitds,0};
        PyObject* values[7] = {0,0,0,0,0,0,0};
        values[2] = ((PyObject *)Py_False);
        values[3] = ((PyObject *)Py_False);
        values[4] = ((PyObject *)Py_False);
        values[5] = ((PyObject *)Py_None);
        values[6] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("receive", 0, 2, 7, 1); __PYX_ERR(1, 667, __pyx_L3_error)
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force);
              if (value) { values[2] = value; kw_args--; }
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nomount);
              if (value) { values[3] = value; kw_args--; }
            }
            case  4:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_resumable);
              if (value) { values[4] = value; kw_args--; }
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_props);
              if (value) { values[5] = value; kw_args--; }
            }
            case  6:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_limitds);
              if (value) { values[6] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive") < 0)) __PYX_ERR(1, 667, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_name = values[0];
        __pyx_v_fd = values[1];
        __pyx_v_force = values[2];
        __pyx_v_nomount = values[3];
        __pyx_v_resumable = values[4];
        __pyx_v_props = values[5];
        __pyx_v_limitds = values[6];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("receive", 0, 2, 7, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 667, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_27receive(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_name, __pyx_v_fd, __pyx_v_force, __pyx_v_nomount, __pyx_v_resumable, __pyx_v_props, __pyx_v_limitds);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_27receive(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_fd, PyObject *__pyx_v_force, PyObject *__pyx_v_nomount, PyObject *__pyx_v_resumable, PyObject *__pyx_v_props, PyObject *__pyx_v_limitds) {
      libzfs_handle_t *__pyx_v_handle;
      recvflags_t __pyx_v_flags;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_props_nvl = 0;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_limitds_nvl = 0;
      nvlist_t *__pyx_v_c_props_nvl;
      nvlist_t *__pyx_v_c_limitds_nvl;
      char const *__pyx_v_c_name;
      int __pyx_v_c_fd;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("receive", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFS.receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_props_nvl);
      __Pyx_XDECREF((PyObject *)__pyx_v_limitds_nvl);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0668:         cdef libzfs.libzfs_handle_t *handle = self.handle,

      __pyx_t_1 = __pyx_v_self->handle;
      __pyx_v_handle = __pyx_t_1;

     0669:         cdef libzfs.recvflags_t flags;

    +0670:         cdef NVList props_nvl = None

      __Pyx_INCREF(Py_None);
      __pyx_v_props_nvl = ((struct __pyx_obj_6libzfs_NVList *)Py_None);

    +0671:         cdef NVList limitds_nvl = None

      __Pyx_INCREF(Py_None);
      __pyx_v_limitds_nvl = ((struct __pyx_obj_6libzfs_NVList *)Py_None);

    +0672:         cdef nvpair.nvlist_t *c_props_nvl = NULL

      __pyx_v_c_props_nvl = NULL;

    +0673:         cdef nvpair.nvlist_t *c_limitds_nvl = NULL

      __pyx_v_c_limitds_nvl = NULL;

    +0674:         cdef const char *c_name = name

      __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(1, 674, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_2;

    +0675:         cdef int c_fd = fd

      __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 675, __pyx_L1_error)
      __pyx_v_c_fd = __pyx_t_3;

     0676:         cdef int ret

     0677:

    +0678:         memset(&flags, 0, sizeof(libzfs.recvflags_t))

      memset((&__pyx_v_flags), 0, (sizeof(recvflags_t)));

     0679:

    +0680:         if force:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 680, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +0681:             flags.force = True

        __pyx_v_flags.force = 1;

     0682:

    +0683:         if nomount:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_nomount); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 683, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +0684:             flags.nomount = True

        __pyx_v_flags.nomount = 1;

     0685:

     0686:         IF FREEBSD_VERSION >= 1003000:

    +0687:             if resumable:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_resumable); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 687, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +0688:                 flags.resumable = True

        __pyx_v_flags.resumable = 1;

     0689:

     0690:         IF TRUEOS:

    +0691:             if props:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_props); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 691, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +0692:                 props_nvl = NVList(otherdict=props)

        __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 692, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_otherdict, __pyx_v_props) < 0) __PYX_ERR(1, 692, __pyx_L1_error)
        __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 692, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_props_nvl, ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_6));
        __pyx_t_6 = 0;

    +0693:                 c_props_nvl = props_nvl.handle

        __pyx_t_7 = __pyx_v_props_nvl->handle;
        __pyx_v_c_props_nvl = __pyx_t_7;

     0694:

    +0695:             if limitds:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_limitds); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 695, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +0696:                 limitds_nvl = NVList(otherdict=limitds)

        __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 696, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_otherdict, __pyx_v_limitds) < 0) __PYX_ERR(1, 696, __pyx_L1_error)
        __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 696, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF_SET(__pyx_v_limitds_nvl, ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_5));
        __pyx_t_5 = 0;

    +0697:                 c_limitds_nvl = limitds_nvl.handle

        __pyx_t_7 = __pyx_v_limitds_nvl->handle;
        __pyx_v_c_limitds_nvl = __pyx_t_7;

     0698:

    +0699:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L10;
            }
            __pyx_L10:;
          }
      }

    +0700:                 ret = libzfs.zfs_receive(

            __pyx_v_ret = zfs_receive(__pyx_v_handle, __pyx_v_c_name, (&__pyx_v_flags), __pyx_v_c_fd, __pyx_v_c_props_nvl, __pyx_v_c_limitds_nvl, NULL);
          }

     0701:                     handle,

     0702:                     c_name,

     0703:                     &flags,

     0704:                     c_fd,

     0705:                     c_props_nvl,

     0706:                     c_limitds_nvl,

     0707:                     NULL

     0708:                 )

     0709:         ELSE:

     0710:             if props:

     0711:                 props_nvl = NVList(otherdict=props)

     0712:                 c_props_nvl = props_nvl.handle

     0713:

     0714:             with nogil:

     0715:                 IF FREEBSD_VERSION > 1002000:

     0716:                     ret = libzfs.zfs_receive(handle, c_name, c_props_nvl, &flags, c_fd, NULL)

     0717:                 ELSE:

     0718:                     ret = libzfs.zfs_receive(handle, c_name, c_props_nvl, &flags, c_fd)

     0719:

    +0720:         if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0721:             raise self.get_error()

        __pyx_t_5 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_vtab)->get_error(__pyx_v_self); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 721, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(1, 721, __pyx_L1_error)

     0722:

    +0723:     def write_history(self, *args):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_30write_history(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_30write_history(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_args = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("write_history (wrapper)", 0);
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "write_history", 0))) return NULL;
      __Pyx_INCREF(__pyx_args);
      __pyx_v_args = __pyx_args;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_29write_history(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_args);

      /* function exit code */
      __Pyx_XDECREF(__pyx_v_args);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    static PyObject *__pyx_pf_6libzfs_3ZFS_29write_history(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_args) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_cur_scope;
      char const *__pyx_v_c_message;
      PyObject *__pyx_v_history_message = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("write_history", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *)__pyx_tp_new_6libzfs___pyx_scope_struct_6_write_history(__pyx_ptype_6libzfs___pyx_scope_struct_6_write_history, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFS.write_history", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_history_message);
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history {
      PyObject_HEAD
      PyObject *__pyx_v_arg;
      PyObject *__pyx_v_eval_arg;
      PyObject *__pyx_v_eval_dict;
      PyObject *__pyx_v_eval_list;
      PyObject *__pyx_v_eval_str;
      PyObject *__pyx_v_eval_tuple;
      PyObject *__pyx_v_eval_zfsvdev;
    };

     0724:         cdef const char *c_message

     0725:

    +0726:         history_message = ""

      __Pyx_INCREF(__pyx_kp_s__11);
      __pyx_v_history_message = __pyx_kp_s__11;

     0727:

    +0728:         def eval_arg(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_1eval_arg(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_1eval_arg = {"eval_arg", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_1eval_arg, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_1eval_arg(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_arg (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_outer_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_arg", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_arg", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__15 = PyTuple_Pack(1, __pyx_n_s_argument); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(1, 728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__15);
      __Pyx_GIVEREF(__pyx_tuple__15);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_1eval_arg, 0, __pyx_n_s_write_history_locals_eval_arg, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__16)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_arg = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_arg, 728, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(1, 728, __pyx_L1_error)

    +0729:             if isinstance(argument, str):

      __pyx_t_1 = PyString_Check(__pyx_v_argument);
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0730:                 return eval_str(argument)

        __Pyx_XDECREF(__pyx_r);
        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_str)) { __Pyx_RaiseClosureNameError("eval_str"); __PYX_ERR(1, 730, __pyx_L1_error) }
        __pyx_t_3 = __pyx_pf_6libzfs_3ZFS_13write_history_2eval_str(__pyx_cur_scope->__pyx_v_eval_str, __pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 730, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

    +0731:             if isinstance(argument, dict):

      __pyx_t_2 = PyDict_Check(__pyx_v_argument);
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0732:                 return eval_dict(argument)

        __Pyx_XDECREF(__pyx_r);
        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_dict)) { __Pyx_RaiseClosureNameError("eval_dict"); __PYX_ERR(1, 732, __pyx_L1_error) }
        __pyx_t_3 = __pyx_pf_6libzfs_3ZFS_13write_history_4eval_dict(__pyx_cur_scope->__pyx_v_eval_dict, __pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

    +0733:             if isinstance(argument, tuple):

      __pyx_t_1 = PyTuple_Check(__pyx_v_argument);
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0734:                 return eval_tuple(argument)

        __Pyx_XDECREF(__pyx_r);
        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_tuple)) { __Pyx_RaiseClosureNameError("eval_tuple"); __PYX_ERR(1, 734, __pyx_L1_error) }
        __pyx_t_3 = __pyx_pf_6libzfs_3ZFS_13write_history_6eval_tuple(__pyx_cur_scope->__pyx_v_eval_tuple, __pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

    +0735:             if isinstance(argument, list):

      __pyx_t_2 = PyList_Check(__pyx_v_argument);
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0736:                 return eval_list(argument)

        __Pyx_XDECREF(__pyx_r);
        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_list)) { __Pyx_RaiseClosureNameError("eval_list"); __PYX_ERR(1, 736, __pyx_L1_error) }
        __pyx_t_3 = __pyx_pf_6libzfs_3ZFS_13write_history_8eval_list(__pyx_cur_scope->__pyx_v_eval_list, __pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

    +0737:             if isinstance(argument, ZFSVdev):

      __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_argument, __pyx_ptype_6libzfs_ZFSVdev);
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0738:                 return eval_zfsvdev(argument)

        __Pyx_XDECREF(__pyx_r);
        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_zfsvdev)) { __Pyx_RaiseClosureNameError("eval_zfsvdev"); __PYX_ERR(1, 738, __pyx_L1_error) }
        __pyx_t_3 = __pyx_pf_6libzfs_3ZFS_13write_history_10eval_zfsvdev(__pyx_cur_scope->__pyx_v_eval_zfsvdev, __pyx_v_argument); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 738, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

     0739:

    +0740:         def eval_str(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_3eval_str(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_3eval_str = {"eval_str", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_3eval_str, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_3eval_str(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_str (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_2eval_str(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_2eval_str(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_str", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__17 = PyTuple_Pack(1, __pyx_n_s_argument); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(1, 740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__17);
      __Pyx_GIVEREF(__pyx_tuple__17);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_3eval_str, 0, __pyx_n_s_write_history_locals_eval_str, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__18)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 740, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_str = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_str, 740, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(1, 740, __pyx_L1_error)

    +0741:             return " " + argument

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyNumber_Add(__pyx_kp_s__13, __pyx_v_argument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 741, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0742:

    +0743:         def eval_dict(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_5eval_dict(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_5eval_dict = {"eval_dict", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_5eval_dict, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_5eval_dict(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_dict (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_4eval_dict(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_4eval_dict(PyObject *__pyx_self, CYTHON_UNUSED PyObject *__pyx_v_argument) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_outer_scope;
      PyObject *__pyx_v_out = NULL;
      PyObject *__pyx_v_tup = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_dict", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_dict", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_out);
      __Pyx_XDECREF(__pyx_v_tup);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_argument, __pyx_n_s_out, __pyx_n_s_tup); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 743, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__19);
      __Pyx_GIVEREF(__pyx_tuple__19);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_5eval_dict, 0, __pyx_n_s_write_history_locals_eval_dict, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__20)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 743, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_dict = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_dict, 743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(1, 743, __pyx_L1_error)

    +0744:             out = ""

      __Pyx_INCREF(__pyx_kp_s__11);
      __pyx_v_out = __pyx_kp_s__11;

    +0745:             for tup in arg.items():

      if (unlikely(!__pyx_cur_scope->__pyx_v_arg)) { __Pyx_RaiseClosureNameError("arg"); __PYX_ERR(1, 745, __pyx_L1_error) }
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_arg, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 745, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
        __pyx_t_5 = NULL;
      } else {
        __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 745, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 745, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_5)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 745, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 745, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 745, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_5(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 745, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_tup, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0746:                 out += eval_arg(tup)

        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_arg)) { __Pyx_RaiseClosureNameError("eval_arg"); __PYX_ERR(1, 746, __pyx_L1_error) }
        __pyx_t_1 = __pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(__pyx_cur_scope->__pyx_v_eval_arg, __pyx_v_tup); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 746, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_out, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 746, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_3);
        __pyx_t_3 = 0;

    +0747:             return out

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out);
      __pyx_r = __pyx_v_out;
      goto __pyx_L0;

     0748:

    +0749:         def eval_tuple(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_7eval_tuple(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_7eval_tuple = {"eval_tuple", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_7eval_tuple, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_7eval_tuple(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_tuple (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_6eval_tuple(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_6eval_tuple(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_outer_scope;
      PyObject *__pyx_v_out = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_tuple", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_tuple", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_out);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__21 = PyTuple_Pack(3, __pyx_n_s_argument, __pyx_n_s_out, __pyx_n_s_i); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(1, 749, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__21);
      __Pyx_GIVEREF(__pyx_tuple__21);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_7eval_tuple, 0, __pyx_n_s_write_history_locals_eval_tuple, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__22)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 749, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_tuple = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_tuple, 749, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(1, 749, __pyx_L1_error)

    +0750:             if len(argument) == 2:

      __pyx_t_1 = PyObject_Length(__pyx_v_argument); if (unlikely(__pyx_t_1 == -1)) __PYX_ERR(1, 750, __pyx_L1_error)
      __pyx_t_2 = ((__pyx_t_1 == 2) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0751:                 if isinstance(argument[1], str):

        __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_argument, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 751, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = PyString_Check(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_4 = (__pyx_t_2 != 0);
        if (__pyx_t_4) {
    /* … */
        }

    +0752:                     return " " + str(argument[0]) + '=' + str(argument[1])

          __Pyx_XDECREF(__pyx_r);
          __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_argument, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
          __pyx_t_3 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = PyNumber_Add(__pyx_kp_s__13, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_kp_s__14); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_argument, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_5);
          PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
          __pyx_t_5 = 0;
          __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_t_6 = PyNumber_Add(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 752, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_r = __pyx_t_6;
          __pyx_t_6 = 0;
          goto __pyx_L0;

     0753:

    +0754:             out = ""

      __Pyx_INCREF(__pyx_kp_s__11);
      __pyx_v_out = __pyx_kp_s__11;

    +0755:             for i in argument:

      if (likely(PyList_CheckExact(__pyx_v_argument)) || PyTuple_CheckExact(__pyx_v_argument)) {
        __pyx_t_6 = __pyx_v_argument; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_argument); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 755, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 755, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_6))) {
            if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 755, __pyx_L1_error)
            #else
            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 755, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            #endif
          } else {
            if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) __PYX_ERR(1, 755, __pyx_L1_error)
            #else
            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 755, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            #endif
          }
        } else {
          __pyx_t_5 = __pyx_t_7(__pyx_t_6);
          if (unlikely(!__pyx_t_5)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 755, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
        __pyx_t_5 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +0756:                 out += eval_arg(i)

        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_arg)) { __Pyx_RaiseClosureNameError("eval_arg"); __PYX_ERR(1, 756, __pyx_L1_error) }
        __pyx_t_5 = __pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(__pyx_cur_scope->__pyx_v_eval_arg, __pyx_v_i); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 756, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_out, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 756, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_3);
        __pyx_t_3 = 0;

    +0757:             return out

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out);
      __pyx_r = __pyx_v_out;
      goto __pyx_L0;

     0758:

    +0759:         def eval_list(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_9eval_list(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_9eval_list = {"eval_list", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_9eval_list, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_9eval_list(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_list (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_8eval_list(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_8eval_list(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *__pyx_outer_scope;
      PyObject *__pyx_v_out = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_list", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_6_write_history *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_out);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__23 = PyTuple_Pack(3, __pyx_n_s_argument, __pyx_n_s_out, __pyx_n_s_i); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(1, 759, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__23);
      __Pyx_GIVEREF(__pyx_tuple__23);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_9eval_list, 0, __pyx_n_s_write_history_locals_eval_list, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__24)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 759, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_list = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_list, 759, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(1, 759, __pyx_L1_error)

    +0760:             out = ""

      __Pyx_INCREF(__pyx_kp_s__11);
      __pyx_v_out = __pyx_kp_s__11;

    +0761:             for i in argument:

      if (likely(PyList_CheckExact(__pyx_v_argument)) || PyTuple_CheckExact(__pyx_v_argument)) {
        __pyx_t_1 = __pyx_v_argument; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
        __pyx_t_3 = NULL;
      } else {
        __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_argument); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 761, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 761, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_3)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 761, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 761, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          } else {
            if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 761, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 761, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          }
        } else {
          __pyx_t_4 = __pyx_t_3(__pyx_t_1);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 761, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
        __pyx_t_4 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0762:                 out += eval_arg(i)

        if (unlikely(!__pyx_cur_scope->__pyx_v_eval_arg)) { __Pyx_RaiseClosureNameError("eval_arg"); __PYX_ERR(1, 762, __pyx_L1_error) }
        __pyx_t_4 = __pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(__pyx_cur_scope->__pyx_v_eval_arg, __pyx_v_i); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 762, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_out, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 762, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_5);
        __pyx_t_5 = 0;

    +0763:             return out

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out);
      __pyx_r = __pyx_v_out;
      goto __pyx_L0;

     0764:

    +0765:         def eval_zfsvdev(argument):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_11eval_zfsvdev(PyObject *__pyx_self, PyObject *__pyx_v_argument); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_3ZFS_13write_history_11eval_zfsvdev = {"eval_zfsvdev", (PyCFunction)__pyx_pw_6libzfs_3ZFS_13write_history_11eval_zfsvdev, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_3ZFS_13write_history_11eval_zfsvdev(PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_zfsvdev (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_13write_history_10eval_zfsvdev(__pyx_self, ((PyObject *)__pyx_v_argument));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_13write_history_10eval_zfsvdev(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_argument) {
      PyObject *__pyx_v_disks = NULL;
      PyObject *__pyx_v_out = NULL;
      PyObject *__pyx_v_disk = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("eval_zfsvdev", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFS.write_history.eval_zfsvdev", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_disks);
      __Pyx_XDECREF(__pyx_v_out);
      __Pyx_XDECREF(__pyx_v_disk);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_argument, __pyx_n_s_disks, __pyx_n_s_out, __pyx_n_s_disk); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(1, 765, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__25);
      __Pyx_GIVEREF(__pyx_tuple__25);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_3ZFS_13write_history_11eval_zfsvdev, 0, __pyx_n_s_write_history_locals_eval_zfsvde, NULL, __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__26)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 765, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_eval_zfsvdev = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_eval_zfsvdev, 765, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(1, 765, __pyx_L1_error)

    +0766:             disks = argument.disks

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_argument, __pyx_n_s_disks); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_disks = __pyx_t_1;
      __pyx_t_1 = 0;

    +0767:             if len(disks):

      __pyx_t_2 = PyObject_Length(__pyx_v_disks); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(1, 767, __pyx_L1_error)
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +0768:                 out = " " + str(argument.type)

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_argument, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 768, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 768, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 768, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyNumber_Add(__pyx_kp_s__13, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 768, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_out = __pyx_t_4;
        __pyx_t_4 = 0;

    +0769:                 for disk in disks:

        if (likely(PyList_CheckExact(__pyx_v_disks)) || PyTuple_CheckExact(__pyx_v_disks)) {
          __pyx_t_4 = __pyx_v_disks; __Pyx_INCREF(__pyx_t_4); __pyx_t_2 = 0;
          __pyx_t_5 = NULL;
        } else {
          __pyx_t_2 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_disks); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 769, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 769, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_5)) {
            if (likely(PyList_CheckExact(__pyx_t_4))) {
              if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 769, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            } else {
              if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 769, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 769, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            }
          } else {
            __pyx_t_1 = __pyx_t_5(__pyx_t_4);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 769, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_1);
          }
          __Pyx_XDECREF_SET(__pyx_v_disk, __pyx_t_1);
          __pyx_t_1 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0770:                     out += " " + disk

          __pyx_t_1 = PyNumber_Add(__pyx_kp_s__13, __pyx_v_disk); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 770, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_out, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 770, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF_SET(__pyx_v_out, __pyx_t_6);
          __pyx_t_6 = 0;

    +0771:                 return  out

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_out);
        __pyx_r = __pyx_v_out;
        goto __pyx_L0;

     0772:             else:

    +0773:                 return ""

      /*else*/ {
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_r = __pyx_kp_s__11;
        goto __pyx_L0;
      }

     0774:

    +0775:         if self.history:

      __pyx_t_2 = (__pyx_v_self->history != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0776:             history_message = self.history_prefix

        __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_self->history_prefix); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 776, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF_SET(__pyx_v_history_message, __pyx_t_1);
        __pyx_t_1 = 0;

    +0777:             for arg in args:

        __pyx_t_1 = __pyx_v_args; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
        for (;;) {
          if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 777, __pyx_L1_error)
          #else
          __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 777, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          #endif
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_arg);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_arg, __pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_4);
          __pyx_t_4 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +0778:                 history_message += eval_arg(arg)

          __pyx_t_4 = __pyx_cur_scope->__pyx_v_arg;
          __Pyx_INCREF(__pyx_t_4);
          __pyx_t_5 = __pyx_pf_6libzfs_3ZFS_13write_history_eval_arg(__pyx_cur_scope->__pyx_v_eval_arg, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 778, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_history_message, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 778, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF_SET(__pyx_v_history_message, __pyx_t_4);
          __pyx_t_4 = 0;

     0779:

    +0780:             c_message = history_message

        __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_history_message); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 780, __pyx_L1_error)
        __pyx_v_c_message = __pyx_t_6;

     0781:

    +0782:             with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L8;
              }
              __pyx_L8:;
            }
        }

    +0783:                 libzfs.zpool_log_history(self.handle, c_message)

              zpool_log_history(__pyx_v_self->handle, __pyx_v_c_message);
            }

     0784:

    +0785:     def generate_history_opts(self, opt_dict, prefix):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_32generate_history_opts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_32generate_history_opts(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_opt_dict = 0;
      PyObject *__pyx_v_prefix = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("generate_history_opts (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_opt_dict,&__pyx_n_s_prefix,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opt_dict)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_prefix)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("generate_history_opts", 1, 2, 2, 1); __PYX_ERR(1, 785, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "generate_history_opts") < 0)) __PYX_ERR(1, 785, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_opt_dict = values[0];
        __pyx_v_prefix = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("generate_history_opts", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 785, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.generate_history_opts", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_31generate_history_opts(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_opt_dict, __pyx_v_prefix);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_31generate_history_opts(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_opt_dict, PyObject *__pyx_v_prefix) {
      PyObject *__pyx_v_keys = NULL;
      PyObject *__pyx_v_out_dict = NULL;
      PyObject *__pyx_v_key = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("generate_history_opts", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.generate_history_opts", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_keys);
      __Pyx_XDECREF(__pyx_v_out_dict);
      __Pyx_XDECREF(__pyx_v_key);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0786:         keys = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_keys = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

    +0787:         out_dict = {}

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 787, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_out_dict = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

    +0788:         if isinstance(opt_dict, dict):

      __pyx_t_2 = PyDict_Check(__pyx_v_opt_dict);
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +0789:             for key in opt_dict.keys():

        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_opt_dict, __pyx_n_s_keys); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 789, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (__pyx_t_5) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
          __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 789, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 789, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_4))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 789, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 789, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            }
          } else {
            __pyx_t_1 = __pyx_t_7(__pyx_t_4);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 789, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_1);
          }
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1);
          __pyx_t_1 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0790:                 keys.append(key)

          __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_keys, __pyx_v_key); if (unlikely(__pyx_t_8 == -1)) __PYX_ERR(1, 790, __pyx_L1_error)

     0791:

    +0792:             for key in keys:

        __pyx_t_4 = __pyx_v_keys; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
        for (;;) {
          if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
          #if CYTHON_COMPILING_IN_CPYTHON
          __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 792, __pyx_L1_error)
          #else
          __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 792, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          #endif
          __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_1);
          __pyx_t_1 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +0793:                 out_dict[prefix + ' ' + key] = opt_dict[key]

          __pyx_t_1 = PyObject_GetItem(__pyx_v_opt_dict, __pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 793, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_s__13); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 793, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_9 = PyNumber_Add(__pyx_t_5, __pyx_v_key); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 793, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(PyDict_SetItem(__pyx_v_out_dict, __pyx_t_9, __pyx_t_1) < 0)) __PYX_ERR(1, 793, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     0794:

    +0795:         return out_dict

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out_dict);
      __pyx_r = __pyx_v_out_dict;
      goto __pyx_L0;

     0796:

    +0797:     def history_vdevs_list(self, topology):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_34history_vdevs_list(PyObject *__pyx_v_self, PyObject *__pyx_v_topology); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_34history_vdevs_list(PyObject *__pyx_v_self, PyObject *__pyx_v_topology) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("history_vdevs_list (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_33history_vdevs_list(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_topology));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_33history_vdevs_list(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_topology) {
      PyObject *__pyx_v_out = NULL;
      PyObject *__pyx_v_data_vdevs = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("history_vdevs_list", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFS.history_vdevs_list", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_out);
      __Pyx_XDECREF(__pyx_v_data_vdevs);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0798:         out = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 798, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_out = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

    +0799:         if self.history:

      __pyx_t_2 = (__pyx_v_self->history != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0800:             data_vdevs = topology.get('data', None)

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 800, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 800, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_data_vdevs = __pyx_t_3;
        __pyx_t_3 = 0;
    /* … */
      __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_data, Py_None); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(1, 800, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__27);
      __Pyx_GIVEREF(__pyx_tuple__27);

    +0801:             if data_vdevs:

        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_data_vdevs); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 801, __pyx_L1_error)
        if (__pyx_t_2) {
    /* … */
        }

    +0802:                 if data_vdevs[0].type == 'disk':

          __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_data_vdevs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 802, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 802, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 802, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (__pyx_t_2) {
    /* … */
          }

    +0803:                     data_vdevs = data_vdevs[0].disks[0]

            __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_data_vdevs, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 803, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_disks); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 803, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 803, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF_SET(__pyx_v_data_vdevs, __pyx_t_1);
            __pyx_t_1 = 0;

     0804:

    +0805:                 out.append(data_vdevs)

          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_v_data_vdevs); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 805, __pyx_L1_error)

     0806:

    +0807:             if topology.get('cache', False):

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 807, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 807, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 807, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_2) {
    /* … */
      __pyx_tuple__28 = PyTuple_Pack(2, __pyx_n_s_cache, Py_False); if (unlikely(!__pyx_tuple__28)) __PYX_ERR(1, 807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__28);
      __Pyx_GIVEREF(__pyx_tuple__28);
    /* … */
        }

    +0808:                 out.append('cache')

          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_n_s_cache); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 808, __pyx_L1_error)

    +0809:                 out.append(topology.get('cache'))

          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 809, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 809, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 809, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* … */
      __pyx_tuple__29 = PyTuple_Pack(1, __pyx_n_s_cache); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(1, 809, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__29);
      __Pyx_GIVEREF(__pyx_tuple__29);

     0810:

    +0811:             if topology.get('log', False):

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 811, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (__pyx_t_2) {
    /* … */
      __pyx_tuple__30 = PyTuple_Pack(2, __pyx_n_s_log, Py_False); if (unlikely(!__pyx_tuple__30)) __PYX_ERR(1, 811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__30);
      __Pyx_GIVEREF(__pyx_tuple__30);
    /* … */
        }

    +0812:                 out.append('log')

          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_n_s_log); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 812, __pyx_L1_error)

    +0813:                 out.append(topology.get('log'))

          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_topology, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 813, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 813, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    /* … */
      __pyx_tuple__31 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(1, 813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__31);
      __Pyx_GIVEREF(__pyx_tuple__31);

     0814:

    +0815:         return out

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out);
      __pyx_r = __pyx_v_out;
      goto __pyx_L0;

     0816:

     0817:     IF FREEBSD_VERSION >= 1003000:

    +0818:         def send_resume(self, fd, token, flags=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_36send_resume(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_36send_resume(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fd = 0;
      PyObject *__pyx_v_token = 0;
      PyObject *__pyx_v_flags = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send_resume (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,&__pyx_n_s_token,&__pyx_n_s_flags,0};
        PyObject* values[3] = {0,0,0};
        values[2] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_token)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("send_resume", 0, 2, 3, 1); __PYX_ERR(1, 818, __pyx_L3_error)
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_flags);
              if (value) { values[2] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "send_resume") < 0)) __PYX_ERR(1, 818, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_fd = values[0];
        __pyx_v_token = values[1];
        __pyx_v_flags = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("send_resume", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 818, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFS.send_resume", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_3ZFS_35send_resume(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), __pyx_v_fd, __pyx_v_token, __pyx_v_flags);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_35send_resume(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_token, PyObject *__pyx_v_flags) {
      sendflags_t __pyx_v_cflags;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send_resume", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_AddTraceback("libzfs.ZFS.send_resume", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0819:             cdef libzfs.sendflags_t cflags

     0820:

    +0821:             memset(&cflags, 0, cython.sizeof(libzfs.sendflags_t))

      memset((&__pyx_v_cflags), 0, (sizeof(sendflags_t)));

     0822:

    +0823:             if flags:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_flags); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 823, __pyx_L1_error)
      if (__pyx_t_1) {
    /* … */
      }

    +0824:                 convert_sendflags(flags, &cflags)

        __pyx_t_2 = __pyx_f_6libzfs_convert_sendflags(__pyx_v_flags, (&__pyx_v_cflags)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 824, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0825:

    +0826:             if libzfs.zfs_send_resume(self.handle, &cflags, fd, token) != 0:

      __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 826, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_token); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 826, __pyx_L1_error)
      __pyx_t_1 = ((zfs_send_resume(__pyx_v_self->handle, (&__pyx_v_cflags), __pyx_t_3, __pyx_t_4) != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0827:                 raise ZFSException(self.errno, self.errstr)

        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errstr); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_8 = NULL;
        __pyx_t_9 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_9 = 1;
          }
        }
        __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7);
        __pyx_t_6 = 0;
        __pyx_t_7 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 827, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 827, __pyx_L1_error)

     0828:

    +0829:         def describe_resume_token(self, token):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_3ZFS_38describe_resume_token(PyObject *__pyx_v_self, PyObject *__pyx_v_token); /*proto*/
    static PyObject *__pyx_pw_6libzfs_3ZFS_38describe_resume_token(PyObject *__pyx_v_self, PyObject *__pyx_v_token) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("describe_resume_token (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_3ZFS_37describe_resume_token(((struct __pyx_obj_6libzfs_ZFS *)__pyx_v_self), ((PyObject *)__pyx_v_token));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_3ZFS_37describe_resume_token(struct __pyx_obj_6libzfs_ZFS *__pyx_v_self, PyObject *__pyx_v_token) {
      nvlist_t *__pyx_v_nvl;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("describe_resume_token", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFS.describe_resume_token", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0830:             cdef nvpair.nvlist_t *nvl

     0831:

    +0832:             nvl = libzfs.zfs_send_resume_token_to_nvlist(self.handle, token)

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_token); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 832, __pyx_L1_error)
      __pyx_v_nvl = zfs_send_resume_token_to_nvlist(__pyx_v_self->handle, __pyx_t_1);

    +0833:             if nvl == NULL:

      __pyx_t_2 = ((__pyx_v_nvl == NULL) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +0834:                 raise ZFSException(self.errno, self.errstr)

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errno); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errstr); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6);
        __pyx_t_5 = 0;
        __pyx_t_6 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 834, __pyx_L1_error)

     0835:

    +0836:             return dict(NVList(<uintptr_t>nvl))

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_nvl)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 836, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 836, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     0837:

     0838:

    +0839: cdef class ZPoolProperty(object):

    struct __pyx_obj_6libzfs_ZPoolProperty {
      PyObject_HEAD
      int propid;
      struct __pyx_obj_6libzfs_ZFSPool *pool;
    };

     0840:     cdef int propid

    +0841:     cdef readonly ZFSPool pool

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_4pool_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_4pool_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_4pool___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_4pool___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->pool));
      __pyx_r = ((PyObject *)__pyx_v_self->pool);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0842:

    +0843:     def __init__(self):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_13ZPoolProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_13ZPoolProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty___init__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_13ZPoolProperty___init__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0844:         raise RuntimeError('ZPoolProperty cannot be instantiated by the user')

      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 844, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 844, __pyx_L1_error)
    /* … */
      __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_ZPoolProperty_cannot_be_instanti); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(1, 844, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__32);
      __Pyx_GIVEREF(__pyx_tuple__32);

     0845:

    +0846:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_2__getstate__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_2__getstate__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0847:         return {

      __Pyx_XDECREF(__pyx_r);

    +0848:             'value': self.value,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_value, __pyx_t_2) < 0) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0849:             'rawvalue': self.rawvalue,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawvalue); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 849, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_rawvalue, __pyx_t_2) < 0) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0850:             'parsed': self.parsed,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parsed); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 850, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_parsed, __pyx_t_2) < 0) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0851:             'source': self.source.name

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_source); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 851, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 851, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_source, __pyx_t_3) < 0) __PYX_ERR(1, 848, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0852:         }

     0853:

    +0854:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_5__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_5__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_4__str__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_4__str__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0855:         return "<libzfs.ZPoolProperty name '{0}' value '{1}'>".format(self.name, self.value)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZPoolProperty_name_0_val, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 855, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0856:

    +0857:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_7__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_7__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_6__repr__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_6__repr__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0858:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 858, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     0859:

     0860:     property name:

    +0861:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_4name___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_4name___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0862:             return libzfs.zpool_prop_to_name(self.propid)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zpool_prop_to_name(__pyx_v_self->propid)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 862, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0863:

     0864:     property value:

    +0865:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_5value_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_5value___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_5value___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      char __pyx_v_cstr[ZPOOL_MAXPROPLEN];
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0866:             cdef char cstr[libzfs.ZPOOL_MAXPROPLEN]

     0867:             cdef int ret

     0868:

    +0869:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0870:                 ret = libzfs.zpool_get_prop(self.pool.handle, self.propid, cstr, sizeof(cstr), NULL, False)

            __pyx_v_ret = zpool_get_prop(__pyx_v_self->pool->handle, __pyx_v_self->propid, __pyx_v_cstr, (sizeof(__pyx_v_cstr)), NULL, 0);
          }

     0871:

    +0872:             if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0873:                 return '-'

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_kp_s__3);
        __pyx_r = __pyx_kp_s__3;
        goto __pyx_L0;

     0874:

    +0875:             return cstr

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_FromString(__pyx_v_cstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 875, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     0876:

    +0877:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_13ZPoolProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_13ZPoolProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_5value_2__set__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_13ZPoolProperty_5value_2__set__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      char const *__pyx_v_c_name;
      char const *__pyx_v_c_value;
      int __pyx_v_ret;
      PyObject *__pyx_v_name = NULL;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.value.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_name);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0878:             cdef const char *c_name

    +0879:             cdef const char *c_value = value

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 879, __pyx_L1_error)
      __pyx_v_c_value = __pyx_t_1;

     0880:             cdef int ret

     0881:

    +0882:             name = self.name

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_name = __pyx_t_2;
      __pyx_t_2 = 0;

    +0883:             c_name = name

      __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 883, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_3;

     0884:

    +0885:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0886:                 ret = libzfs.zpool_set_prop(self.pool.handle, c_name, c_value)

            __pyx_v_ret = zpool_set_prop(__pyx_v_self->pool->handle, __pyx_v_c_name, __pyx_v_c_value);
          }

     0887:

    +0888:             if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +0889:                 raise self.pool.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->pool->root->__pyx_vtab)->get_error(__pyx_v_self->pool->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 889, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 889, __pyx_L1_error)

     0890:

    +0891:             self.pool.root.write_history('zpool set', (self.name, str(value)), self.pool.name)

      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->pool->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_value);
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_8);
      __pyx_t_6 = 0;
      __pyx_t_8 = 0;
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->pool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_set);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_set);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_kp_s_zpool_set);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_8);
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 891, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     0892:

     0893:     property rawvalue:

    +0894:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_8rawvalue_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_8rawvalue_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_8rawvalue___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_8rawvalue___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      char __pyx_v_cstr[ZPOOL_MAXPROPLEN];
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.rawvalue.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0895:             cdef char cstr[libzfs.ZPOOL_MAXPROPLEN]

     0896:             cdef int ret

     0897:

    +0898:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0899:                 ret = libzfs.zpool_get_prop(self.pool.handle, self.propid, cstr, sizeof(cstr), NULL, True)

            __pyx_v_ret = zpool_get_prop(__pyx_v_self->pool->handle, __pyx_v_self->propid, __pyx_v_cstr, (sizeof(__pyx_v_cstr)), NULL, 1);
          }

     0900:

    +0901:             if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +0902:                 return '-'

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_kp_s__3);
        __pyx_r = __pyx_kp_s__3;
        goto __pyx_L0;

     0903:

    +0904:             return cstr

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_FromString(__pyx_v_cstr); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 904, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     0905:

     0906:     property source:

    +0907:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_6source_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_6source_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_6source___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_6source___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      zprop_source_t __pyx_v_src;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0908:             cdef zfs.zprop_source_t src

     0909:

    +0910:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0911:                 libzfs.zpool_get_prop(self.pool.handle, self.propid, NULL, 0, &src, True)

            zpool_get_prop(__pyx_v_self->pool->handle, __pyx_v_self->propid, NULL, 0, (&__pyx_v_src), 1);
          }

     0912:

    +0913:             return PropertySource(src)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PropertySource); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_zprop_source_t(__pyx_v_src); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 913, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 913, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 913, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0914:

     0915:     property parsed:

    +0916:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_6parsed_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_6parsed_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_6parsed___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_6parsed___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.parsed.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0917:             return parse_zpool_prop(self.name, self.rawvalue)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_zpool_prop); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawvalue); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0918:

    +0919:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_13ZPoolProperty_6parsed_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_13ZPoolProperty_6parsed_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_6parsed_2__set__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_13ZPoolProperty_6parsed_2__set__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.parsed.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0920:             self.value = serialize_zpool_prop(self.name, value)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_serialize_zpool_prop); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_value);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 920, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value, __pyx_t_1) < 0) __PYX_ERR(1, 920, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     0921:

     0922:     property allowed_values:

    +0923:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_14allowed_values_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_14allowed_values_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_14allowed_values___get__(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_14allowed_values___get__(struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolProperty.allowed_values.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0924:             return libzfs.zfs_prop_values(self.propid)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zfs_prop_values(__pyx_v_self->propid)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 924, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0925:

    +0926:     def reset(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_9reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_13ZPoolProperty_9reset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("reset (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_13ZPoolProperty_8reset(((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_13ZPoolProperty_8reset(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("reset", 0);

      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0927:         pass

     0928:

     0929:

    +0930: cdef class ZPoolFeature(object):

    struct __pyx_obj_6libzfs_ZPoolFeature {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSPool *pool;
      struct __pyx_obj_6libzfs_NVList *nvlist;
      zfeature_info_t *feature;
    };

    +0931:     cdef readonly ZFSPool pool

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4pool_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4pool_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_4pool___get__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_4pool___get__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->pool));
      __pyx_r = ((PyObject *)__pyx_v_self->pool);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0932:     cdef NVList nvlist

     0933:     cdef zfs.zfeature_info_t *feature

     0934:

    +0935:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature___getstate__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature___getstate__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0936:         return {

      __Pyx_XDECREF(__pyx_r);

    +0937:             'name': self.name,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0938:             'guid': self.guid,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 938, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_guid, __pyx_t_2) < 0) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0939:             'description': self.description,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_description); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 939, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_description, __pyx_t_2) < 0) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0940:             'state': self.state.name

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_state, __pyx_t_3) < 0) __PYX_ERR(1, 937, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0941:         }

     0942:

     0943:     property name:

    +0944:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_4name___get__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_4name___get__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0945:             return self.feature.fi_uname

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_self->feature->fi_uname); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 945, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0946:

     0947:     property guid:

    +0948:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4guid_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_4guid_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_4guid___get__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_4guid___get__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.guid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0949:             return self.feature.fi_guid

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_self->feature->fi_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 949, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0950:

     0951:     property description:

    +0952:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_11description_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_11description_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_11description___get__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_11description___get__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.description.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0953:             return self.feature.fi_desc

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_self->feature->fi_desc); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 953, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     0954:

     0955:     property state:

    +0956:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_5state_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_5state_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_5state___get__(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_5state___get__(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0957:             if self.guid not in self.nvlist:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 957, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, ((PyObject *)__pyx_v_self->nvlist), Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 957, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +0958:                 return FeatureState.DISABLED

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_FeatureState); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 958, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_DISABLED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 958, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_r = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L0;

     0959:

    +0960:             if self.nvlist[self.guid] == 0:

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 960, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 960, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_t_1, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 960, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 960, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +0961:                 return FeatureState.ENABLED

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_FeatureState); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ENABLED); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 961, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L0;

     0962:

    +0963:             if self.nvlist[self.guid] > 0:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 963, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 963, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 963, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +0964:                 return FeatureState.ACTIVE

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_FeatureState); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 964, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ACTIVE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 964, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_r = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L0;

     0965:

    +0966:     def enable(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_3enable(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZPoolFeature_3enable(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("enable (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZPoolFeature_2enable(((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZPoolFeature_2enable(struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_self) {
      char const *__pyx_v_c_name;
      int __pyx_v_ret;
      PyObject *__pyx_v_name = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("enable", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZPoolFeature.enable", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_name);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0967:         cdef const char *c_name

     0968:         cdef int ret

     0969:

    +0970:         name = "feature@{0}".format(self.name)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_feature_0, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 970, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 970, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 970, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 970, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 970, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_name = __pyx_t_1;
      __pyx_t_1 = 0;

    +0971:         c_name = name

      __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 971, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_6;

     0972:

    +0973:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +0974:             ret = libzfs.zpool_set_prop(self.pool.handle, c_name, "enabled")

            __pyx_v_ret = zpool_set_prop(__pyx_v_self->pool->handle, __pyx_v_c_name, ((char const *)"enabled"));
          }

     0975:

    +0976:         if ret != 0:

      __pyx_t_7 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_7) {
    /* … */
      }

    +0977:             raise self.pool.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->pool->root->__pyx_vtab)->get_error(__pyx_v_self->pool->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 977, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 977, __pyx_L1_error)

     0978:

    +0979:         self.pool.root.write_history('zpool set', (self.name, 'enabled'), self.pool.name)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->pool->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5);
      __Pyx_INCREF(__pyx_n_s_enabled);
      __Pyx_GIVEREF(__pyx_n_s_enabled);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_n_s_enabled);
      __pyx_t_5 = 0;
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->pool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_set);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_set);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_zpool_set);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_5);
      __pyx_t_3 = 0;
      __pyx_t_5 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 979, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     0980:

     0981:

    +0982: cdef class ZFSProperty(object):

    struct __pyx_obj_6libzfs_ZFSProperty {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSObject *dataset;
      int propid;
      char const *cname;
      char cvalue[(ZFS_MAXPROPLEN + 1)];
      char crawvalue[(ZFS_MAXPROPLEN + 1)];
      char csrcstr[(__pyx_e_6libzfs_MAX_DATASET_NAME_LEN + 1)];
      zprop_source_t csource;
    };

    +0983:     cdef readonly ZFSObject dataset

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_7dataset_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_7dataset_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_7dataset___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_7dataset___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->dataset));
      __pyx_r = ((PyObject *)__pyx_v_self->dataset);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     0984:     cdef int propid

     0985:     cdef const char *cname

     0986:     cdef char cvalue[libzfs.ZFS_MAXPROPLEN + 1]

     0987:     cdef char crawvalue[libzfs.ZFS_MAXPROPLEN + 1]

     0988:     cdef char csrcstr[MAX_DATASET_NAME_LEN + 1]

     0989:     cdef zfs.zprop_source_t csource

     0990:

    +0991:     def __init__(self):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_11ZFSProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_11ZFSProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty___init__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_11ZFSProperty___init__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSProperty.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0992:         raise RuntimeError('ZFSProperty cannot be instantiated by the user')

      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 992, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 992, __pyx_L1_error)
    /* … */
      __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_ZFSProperty_cannot_be_instantiat); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(1, 992, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__33);
      __Pyx_GIVEREF(__pyx_tuple__33);

     0993:

    +0994:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_2__getstate__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_2__getstate__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSProperty.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +0995:         return {

      __Pyx_XDECREF(__pyx_r);

    +0996:             'value': self.value,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_value, __pyx_t_2) < 0) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0997:             'rawvalue': self.rawvalue,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawvalue); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 997, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_rawvalue, __pyx_t_2) < 0) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0998:             'parsed': self.parsed,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parsed); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 998, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_parsed, __pyx_t_2) < 0) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +0999:             'source': self.source.name if self.source else None

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 999, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 999, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_4) {
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_source); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 999, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 999, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_2 = __pyx_t_5;
        __pyx_t_5 = 0;
      } else {
        __Pyx_INCREF(Py_None);
        __pyx_t_2 = Py_None;
      }
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_source, __pyx_t_2) < 0) __PYX_ERR(1, 996, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1000:         }

     1001:

    +1002:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_5__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_5__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_4__str__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_4__str__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSProperty.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1003:         return "<libzfs.ZFSProperty name '{0}' value '{1}'>".format(self.name, self.value)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSProperty_name_0_value, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1003, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1004:

    +1005:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_7__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_7__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_6__repr__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_6__repr__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSProperty.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1006:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1006, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1006, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1007:

    +1008:     def refresh(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_9refresh(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_9refresh(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("refresh (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_8refresh(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_8refresh(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("refresh", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1009:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1010:             self.cname = libzfs.zfs_prop_to_name(self.propid)

            __pyx_v_self->cname = zfs_prop_to_name(__pyx_v_self->propid);

    +1011:             libzfs.zfs_prop_get(

            zfs_prop_get(__pyx_v_self->dataset->handle, __pyx_v_self->propid, __pyx_v_self->cvalue, ZFS_MAXPROPLEN, (&__pyx_v_self->csource), __pyx_v_self->csrcstr, __pyx_e_6libzfs_MAX_DATASET_NAME_LEN, 0);

     1012:                 self.dataset.handle, self.propid, self.cvalue, libzfs.ZFS_MAXPROPLEN,

     1013:                 &self.csource, self.csrcstr, MAX_DATASET_NAME_LEN,

     1014:                 False

     1015:             )

     1016:

    +1017:             libzfs.zfs_prop_get(

            zfs_prop_get(__pyx_v_self->dataset->handle, __pyx_v_self->propid, __pyx_v_self->crawvalue, ZFS_MAXPROPLEN, NULL, NULL, 0, 1);
          }

     1018:                 self.dataset.handle, self.propid, self.crawvalue, libzfs.ZFS_MAXPROPLEN,

     1019:                 NULL, NULL, 0,

     1020:                 True

     1021:             )

     1022:

     1023:     property name:

    +1024:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_4name___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_4name___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSProperty.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1025:             return self.cname

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_self->cname); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1025, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1026:

     1027:     property value:

    +1028:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_5value_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_5value___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_5value___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSProperty.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1029:             return self.cvalue

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_FromString(__pyx_v_self->cvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1029, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1030:

    +1031:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_11ZFSProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_11ZFSProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_5value_2__set__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_11ZFSProperty_5value_2__set__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      char const *__pyx_v_c_value;
      int __pyx_v_ret;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
      __Pyx_INCREF(__pyx_v_value);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSProperty.value.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_value);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1032:             cdef const char *c_value

     1033:             cdef int ret

     1034:

    +1035:             value = str(value)

      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1035, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_value);
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1035, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
      __pyx_t_2 = 0;

    +1036:             c_value = value

      __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 1036, __pyx_L1_error)
      __pyx_v_c_value = __pyx_t_3;

     1037:

    +1038:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1039:                 ret = libzfs.zfs_prop_set(self.dataset.handle, self.cname, c_value)

            __pyx_v_ret = zfs_prop_set(__pyx_v_self->dataset->handle, __pyx_v_self->cname, __pyx_v_c_value);
          }

     1040:

    +1041:             if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1042:                 raise self.dataset.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->dataset->root->__pyx_vtab)->get_error(__pyx_v_self->dataset->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1042, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1042, __pyx_L1_error)

     1043:

    +1044:             self.dataset.root.write_history('zfs set', (self.name, str(value)), self.dataset.name)

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->dataset->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_value);
      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_7);
      __pyx_t_5 = 0;
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->dataset), __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_set);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_set);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_zfs_set);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1044, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     1045:

     1046:     property rawvalue:

    +1047:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_8rawvalue_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_8rawvalue_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_8rawvalue___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_8rawvalue___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSProperty.rawvalue.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1048:             return self.crawvalue

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_FromString(__pyx_v_self->crawvalue); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1049:

     1050:     property source:

    +1051:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_6source_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_6source_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_6source___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_6source___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSProperty.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1052:             return PropertySource(<int>self.csource)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PropertySource); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_int(((int)__pyx_v_self->csource)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1052, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1052, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1052, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1053:

     1054:     property parsed:

    +1055:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_6parsed_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_6parsed_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_6parsed___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_6parsed___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSProperty.parsed.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1056:             return parse_zfs_prop(self.name, self.rawvalue)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_parse_zfs_prop); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_rawvalue); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1056, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1057:

    +1058:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_11ZFSProperty_6parsed_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_11ZFSProperty_6parsed_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_6parsed_2__set__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_11ZFSProperty_6parsed_2__set__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSProperty.parsed.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1059:             self.value = serialize_zfs_prop(self.name, value)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_serialize_zfs_prop); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_3);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_v_value);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1059, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value, __pyx_t_1) < 0) __PYX_ERR(1, 1059, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1060:

     1061:     property allowed_values:

    +1062:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_14allowed_values_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_14allowed_values_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_14allowed_values___get__(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_14allowed_values___get__(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSProperty.allowed_values.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1063:             return libzfs.zfs_prop_values(self.propid)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zfs_prop_values(__pyx_v_self->propid)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1063, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1064:

    +1065:     def inherit(self, recursive=False, bint received=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_11inherit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSProperty_11inherit(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_recursive = 0;
      int __pyx_v_received;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("inherit (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_recursive,&__pyx_n_s_received,0};
        PyObject* values[2] = {0,0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[0] = value; kw_args--; }
            }
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_received);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "inherit") < 0)) __PYX_ERR(1, 1065, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_recursive = values[0];
        if (values[1]) {
          __pyx_v_received = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_received == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1065, __pyx_L3_error)
        } else {
          __pyx_v_received = ((int)0);
        }
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("inherit", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1065, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSProperty.inherit", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSProperty_10inherit(((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_v_self), __pyx_v_recursive, __pyx_v_received);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSProperty_10inherit(struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_self, PyObject *__pyx_v_recursive, int __pyx_v_received) {
      struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_dset = 0;
      int __pyx_v_ret;
      PyObject *__pyx_v_dsets = NULL;
      PyObject *__pyx_v_d = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("inherit", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_AddTraceback("libzfs.ZFSProperty.inherit", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_dset);
      __Pyx_XDECREF(__pyx_v_dsets);
      __Pyx_XDECREF(__pyx_v_d);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1066:         cdef ZFSObject dset

     1067:         cdef int ret

     1068:

    +1069:         dsets = [self.dataset]

      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1069, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->dataset));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->dataset));
      PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->dataset));
      __pyx_v_dsets = __pyx_t_1;
      __pyx_t_1 = 0;

    +1070:         if recursive:

      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1070, __pyx_L1_error)
      if (__pyx_t_2) {
    /* … */
      }

    +1071:             dsets = dsets.extend(list(self.dataset.children_recursive))

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->dataset), __pyx_n_s_children_recursive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1071, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1071, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_4 = __Pyx_PyList_Extend(__pyx_v_dsets, __pyx_t_3); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 1071, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_Owned_Py_None(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1071, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF_SET(__pyx_v_dsets, __pyx_t_3);
        __pyx_t_3 = 0;

     1072:

    +1073:         for d in dsets:

      if (likely(PyList_CheckExact(__pyx_v_dsets)) || PyTuple_CheckExact(__pyx_v_dsets)) {
        __pyx_t_3 = __pyx_v_dsets; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_dsets); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1073, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1073, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1073, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1073, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1073, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1073, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_6(__pyx_t_3);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1073, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_d, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +1074:             dset = <ZFSObject>d

        __pyx_t_1 = __pyx_v_d;
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_XDECREF_SET(__pyx_v_dset, ((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_t_1));
        __pyx_t_1 = 0;

    +1075:             with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L10;
              }
              __pyx_L10:;
            }
        }

    +1076:                 ret = libzfs.zfs_prop_inherit(dset.handle, self.cname, received)

              __pyx_v_ret = zfs_prop_inherit(__pyx_v_dset->handle, __pyx_v_self->cname, __pyx_v_received);
            }

     1077:

    +1078:             if ret != 0:

        __pyx_t_2 = ((__pyx_v_ret != 0) != 0);
        if (__pyx_t_2) {
    /* … */
        }

    +1079:                 raise self.dataset.root.get_error()

          __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->dataset->root->__pyx_vtab)->get_error(__pyx_v_self->dataset->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1079, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_Raise(__pyx_t_1, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          __PYX_ERR(1, 1079, __pyx_L1_error)

     1080:

    +1081:         self.dataset.root.write_history('zfs inherit', '-r' if recursive else '', self.dataset.name)

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->dataset->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1081, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1081, __pyx_L1_error)
      if (__pyx_t_2) {
        __Pyx_INCREF(__pyx_kp_s_r);
        __pyx_t_7 = __pyx_kp_s_r;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_7 = __pyx_kp_s__11;
      }
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->dataset), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1081, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_10 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1081, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_inherit);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_inherit);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_kp_s_zfs_inherit);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_5, __pyx_t_8);
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1081, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1082:

     1083:

    +1084: cdef class ZFSUserProperty(ZFSProperty):

    struct __pyx_obj_6libzfs_ZFSUserProperty {
      struct __pyx_obj_6libzfs_ZFSProperty __pyx_base;
      PyObject *values;
      PyObject *name;
    };

     1085:     cdef dict values

    +1086:     cdef readonly name

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_4name___get__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_4name___get__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_self->name);
      __pyx_r = __pyx_v_self->name;
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1087:

    +1088:     def __init__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_15ZFSUserProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_15ZFSUserProperty_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_value = 0;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_value,0};
        PyObject* values[1] = {0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 1088, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        }
        __pyx_v_value = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1088, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return -1;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty___init__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self), __pyx_v_value);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_15ZFSUserProperty___init__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1089:         self.values = {"value": value}

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1089, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_value, __pyx_v_value) < 0) __PYX_ERR(1, 1089, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->values);
      __Pyx_DECREF(__pyx_v_self->values);
      __pyx_v_self->values = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

     1090:

    +1091:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_3__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_3__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_2__str__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_2__str__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1092:         return "<libzfs.ZFSUserProperty name '{0}' value '{1}'>".format(self.name, self.value)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSUserProperty_name_0_v, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->name);
      __Pyx_GIVEREF(__pyx_v_self->name);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self->name);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1093:

    +1094:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_5__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_5__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_4__repr__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_4__repr__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1095:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1095, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1095, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1096:

     1097:     property value:

    +1098:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_5value_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_5value_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_5value___get__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_5value___get__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.value.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1099:             return self.values.get('value')

      __Pyx_XDECREF(__pyx_r);
      if (unlikely(__pyx_v_self->values == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
        __PYX_ERR(1, 1099, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->values, __pyx_n_s_value, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1099, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1100:

    +1101:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_15ZFSUserProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_15ZFSUserProperty_5value_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_5value_2__set__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_15ZFSUserProperty_5value_2__set__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self, PyObject *__pyx_v_value) {
      char const *__pyx_v_c_name;
      char const *__pyx_v_c_value;
      int __pyx_v_ret;
      PyObject *__pyx_v_str_value = NULL;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.value.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_str_value);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1102:             cdef const char *c_name

     1103:             cdef const char *c_value

     1104:             cdef int ret

     1105:

    +1106:             str_value = str(value)

      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_value);
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1106, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_str_value = __pyx_t_2;
      __pyx_t_2 = 0;

    +1107:             c_name = self.name

      __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_self->name); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 1107, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_3;

    +1108:             c_value = str_value

      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_str_value); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 1108, __pyx_L1_error)
      __pyx_v_c_value = __pyx_t_4;

     1109:

    +1110:             if self.dataset:

      __pyx_t_5 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->__pyx_base.dataset)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 1110, __pyx_L1_error)
      if (__pyx_t_5) {
    /* … */
      }

    +1111:                 with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L6;
              }
              __pyx_L6:;
            }
        }

    +1112:                     ret = libzfs.zfs_prop_set(self.dataset.handle, c_name, c_value)

              __pyx_v_ret = zfs_prop_set(__pyx_v_self->__pyx_base.dataset->handle, __pyx_v_c_name, __pyx_v_c_value);
            }

     1113:

    +1114:                 if ret != 0:

        __pyx_t_5 = ((__pyx_v_ret != 0) != 0);
        if (__pyx_t_5) {
    /* … */
        }

    +1115:                     raise self.dataset.root.get_error()

          __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.dataset->root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.dataset->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1115, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_Raise(__pyx_t_2, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __PYX_ERR(1, 1115, __pyx_L1_error)

     1116:

     1117:     property rawvalue:

    +1118:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_8rawvalue_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_8rawvalue_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_8rawvalue___get__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_8rawvalue___get__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.rawvalue.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1119:             return self.value

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1119, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1120:

     1121:     property source:

    +1122:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_6source_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSUserProperty_6source_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSUserProperty_6source___get__(((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSUserProperty_6source___get__(struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_self) {
      PyObject *__pyx_v_src = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZFSUserProperty.source.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_src);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1123:             src = self.values.get('source')

      if (unlikely(__pyx_v_self->values == Py_None)) {
        PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "get");
        __PYX_ERR(1, 1123, __pyx_L1_error)
      }
      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->values, __pyx_n_s_source, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1123, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_src = __pyx_t_1;
      __pyx_t_1 = 0;

    +1124:             if not src:

      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_src); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1124, __pyx_L1_error)
      __pyx_t_3 = ((!__pyx_t_2) != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1125:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1126:

    +1127:             if src == self.dataset.name:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.dataset), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = PyObject_RichCompare(__pyx_v_src, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1127, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1127, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1128:                 return PropertySource.LOCAL

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_PropertySource); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LOCAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1128, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L0;

     1129:

    +1130:             if src == '$recvd':

      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_src, __pyx_kp_s_recvd, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1130, __pyx_L1_error)
      if (__pyx_t_3) {
    /* … */
      }

    +1131:                 return PropertySource.RECEIVED

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_PropertySource); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1131, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_RECEIVED); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1131, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_r = __pyx_t_4;
        __pyx_t_4 = 0;
        goto __pyx_L0;

     1132:

    +1133:             return PropertySource.INHERITED

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_PropertySource); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_INHERITED); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1134:

     1135:

    +1136: cdef class ZFSVdevStats(object):

    struct __pyx_obj_6libzfs_ZFSVdevStats {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSVdev *vdev;
      struct __pyx_obj_6libzfs_NVList *nvlist;
    };

    +1137:     cdef readonly ZFSVdev vdev

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_4vdev_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_4vdev_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_4vdev___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_4vdev___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->vdev));
      __pyx_r = ((PyObject *)__pyx_v_self->vdev);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1138:     cdef NVList nvlist

     1139:

    +1140:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats___getstate__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats___getstate__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1141:         return {

      __Pyx_XDECREF(__pyx_r);

    +1142:             'timestamp': self.timestamp,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_timestamp); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_timestamp, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1143:             'read_errors': self.read_errors,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_read_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1143, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_read_errors, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1144:             'write_errors': self.write_errors,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_write_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1144, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_write_errors, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1145:             'checksum_errors': self.checksum_errors,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_checksum_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1145, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_checksum_errors, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1146:             'ops': self.ops,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ops); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1146, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ops, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1147:             'bytes': self.bytes,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1147, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_bytes, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1148:             'size': self.size,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_size, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1149:             'allocated': self.allocated,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_allocated); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1149, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_allocated, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1150:             'configured_ashift': self.configured_ashift,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_configured_ashift); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_configured_ashift, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1151:             'logical_ashift': self.logical_ashift,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_logical_ashift); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1151, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_logical_ashift, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1152:             'physical_ashift': self.physical_ashift,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_physical_ashift); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_physical_ashift, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1153:             'fragmentation': self.fragmentation

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_fragmentation); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fragmentation, __pyx_t_2) < 0) __PYX_ERR(1, 1142, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1154:         }

     1155:

     1156:     property timestamp:

    +1157:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_9timestamp_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_9timestamp_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_9timestamp___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_9timestamp___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.timestamp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1158:             return self.nvlist['vdev_stats'][0]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1158, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1159:

     1160:     property size:

    +1161:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_4size_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_4size___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_4size___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1162:             return self.nvlist['vdev_stats'][4]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1162, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1163:

     1164:     property allocated:

    +1165:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_9allocated_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_9allocated_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_9allocated___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_9allocated___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.allocated.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1166:             return self.nvlist['vdev_stats'][3]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1166, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1167:

     1168:     property read_errors:

    +1169:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_11read_errors_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_11read_errors_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_11read_errors___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_11read_errors___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.read_errors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1170:             return self.nvlist['vdev_stats'][21]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 21, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1170, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1171:

     1172:     property write_errors:

    +1173:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_12write_errors_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_12write_errors_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_12write_errors___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_12write_errors___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.write_errors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1174:             return self.nvlist['vdev_stats'][22]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 22, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1175:

     1176:     property checksum_errors:

    +1177:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_15checksum_errors_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_15checksum_errors_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_15checksum_errors___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_15checksum_errors___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.checksum_errors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1178:             return self.nvlist['vdev_stats'][23]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 23, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1178, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1179:

     1180:     property ops:

    +1181:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_3ops_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_3ops_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_3ops___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_3ops___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.ops.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1182:             return self.nvlist['vdev_stats'][8:13]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 8, 13, NULL, NULL, &__pyx_slice__34, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_slice__34 = PySlice_New(__pyx_int_8, __pyx_int_13, Py_None); if (unlikely(!__pyx_slice__34)) __PYX_ERR(1, 1182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_slice__34);
      __Pyx_GIVEREF(__pyx_slice__34);

     1183:

     1184:     property bytes:

    +1185:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_5bytes_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_5bytes_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_5bytes___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_5bytes___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.bytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1186:             return self.nvlist['vdev_stats'][14:19]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1186, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_t_1, 14, 19, NULL, NULL, &__pyx_slice__35, 1, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1186, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_slice__35 = PySlice_New(__pyx_int_14, __pyx_int_19, Py_None); if (unlikely(!__pyx_slice__35)) __PYX_ERR(1, 1186, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_slice__35);
      __Pyx_GIVEREF(__pyx_slice__35);

     1187:

     1188:     property configured_ashift:

    +1189:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_17configured_ashift_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_17configured_ashift_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_17configured_ashift___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_17configured_ashift___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.configured_ashift.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1190:             return self.nvlist['vdev_stats'][26]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 26, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1190, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1191:

     1192:     property logical_ashift:

    +1193:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_14logical_ashift_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_14logical_ashift_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_14logical_ashift___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_14logical_ashift___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.logical_ashift.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1194:             return self.nvlist['vdev_stats'][27]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1194, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 27, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1194, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1195:

     1196:     property physical_ashift:

    +1197:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_15physical_ashift_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_15physical_ashift_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_15physical_ashift___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_15physical_ashift___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.physical_ashift.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1198:             return self.nvlist['vdev_stats'][28]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 28, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1198, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1199:

     1200:     property fragmentation:

    +1201:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_13fragmentation_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_12ZFSVdevStats_13fragmentation_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12ZFSVdevStats_13fragmentation___get__(((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12ZFSVdevStats_13fragmentation___get__(struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdevStats.fragmentation.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1202:             return self.nvlist['vdev_stats'][29]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 29, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1202, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1203:

     1204:

    +1205: cdef class ZFSVdev(object):

    struct __pyx_obj_6libzfs_ZFSVdev {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSPool *zpool;
      struct __pyx_obj_6libzfs_ZFS *root;
      struct __pyx_obj_6libzfs_ZFSVdev *parent;
      PyObject *group;
      struct __pyx_obj_6libzfs_NVList *nvlist;
    };

    +1206:     cdef readonly ZFSPool zpool

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5zpool_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5zpool_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_5zpool___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_5zpool___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->zpool));
      __pyx_r = ((PyObject *)__pyx_v_self->zpool);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1207:     cdef readonly ZFS root

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4root_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4root_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4root___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4root___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
      __pyx_r = ((PyObject *)__pyx_v_self->root);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1208:     cdef readonly ZFSVdev parent

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_6parent_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_6parent___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_6parent___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->parent));
      __pyx_r = ((PyObject *)__pyx_v_self->parent);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1209:     cdef readonly object group

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5group_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5group_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_5group___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_5group___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_self->group);
      __pyx_r = __pyx_v_self->group;
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1210:     cdef NVList nvlist

     1211:

    +1212:     def __init__(self, ZFS root, typ, ZFSPool pool=None):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSVdev_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSVdev_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_root = 0;
      PyObject *__pyx_v_typ = 0;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_root,&__pyx_n_s_typ,&__pyx_n_s_pool,0};
        PyObject* values[3] = {0,0,0};
        values[2] = (PyObject *)((struct __pyx_obj_6libzfs_ZFSPool *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_root)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_typ)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(1, 1212, __pyx_L3_error)
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pool);
              if (value) { values[2] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 1212, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_root = ((struct __pyx_obj_6libzfs_ZFS *)values[0]);
        __pyx_v_typ = values[1];
        __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)values[2]);
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1212, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return -1;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_root), __pyx_ptype_6libzfs_ZFS, 1, "root", 0))) __PYX_ERR(1, 1212, __pyx_L1_error)
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pool), __pyx_ptype_6libzfs_ZFSPool, 1, "pool", 0))) __PYX_ERR(1, 1212, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev___init__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), __pyx_v_root, __pyx_v_typ, __pyx_v_pool);

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSVdev___init__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, struct __pyx_obj_6libzfs_ZFS *__pyx_v_root, PyObject *__pyx_v_typ, struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSVdev.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1213:         self.root = root

      __Pyx_INCREF(((PyObject *)__pyx_v_root));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
      __Pyx_GOTREF(__pyx_v_self->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->root));
      __pyx_v_self->root = __pyx_v_root;

    +1214:         self.zpool = pool

      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pool));
      __Pyx_GOTREF(__pyx_v_self->zpool);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->zpool));
      __pyx_v_self->zpool = __pyx_v_pool;

    +1215:         self.nvlist = NVList()

      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_self->nvlist);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->nvlist));
      __pyx_v_self->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1216:         self.type = typ

      if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type, __pyx_v_typ) < 0) __PYX_ERR(1, 1216, __pyx_L1_error)

     1217:

    +1218:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_3__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_3__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_2__str__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_2__str__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSVdev.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1219:         if self.path:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1219, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1219, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1220:             return "<libzfs.ZFSVdev type '{0}', path '{1}'>".format(self.type, self.path)

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSVdev_type_0_path_1, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_5);
        __pyx_t_4 = 0;
        __pyx_t_5 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1220, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L0;

     1221:

    +1222:         return "<libzfs.ZFSVdev type '{0}'>".format(self.type)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSVdev_type_0, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1222, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1222, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1222, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1222, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1223:

    +1224:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4__repr__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4__repr__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdev.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1225:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1225, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1226:

    +1227:     def __getstate__(self, recursive=True):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_7__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_7__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_recursive,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_True);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getstate__") < 0)) __PYX_ERR(1, 1227, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_recursive = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__getstate__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1227, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_6__getstate__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_6__getstate__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_recursive) {
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSVdev.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1228:         ret = {

    +1229:             'type': self.type,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_2) < 0) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1230:             'path': self.path,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1230, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_path, __pyx_t_2) < 0) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1231:             'guid': str(self.guid),

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1231, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_guid, __pyx_t_2) < 0) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1232:             'status': self.status,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_status); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1232, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_status, __pyx_t_2) < 0) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1233:             'stats': self.stats.__getstate__()

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_stats); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getstate); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1233, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1233, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1233, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_stats, __pyx_t_2) < 0) __PYX_ERR(1, 1229, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_ret = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

     1234:         }

     1235:

    +1236:         if recursive:

      __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 1236, __pyx_L1_error)
      if (__pyx_t_5) {
    /* … */
      }

    +1237:             ret['children'] = [i.__getstate__() for i in self.children]

        __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1237, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1237, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1237, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1237, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_4))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 1237, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1237, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 1237, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1237, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_7(__pyx_t_4);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 1237, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
          __pyx_t_2 = 0;
          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1237, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_3, function);
            }
          }
          if (__pyx_t_8) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1237, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          } else {
            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1237, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 1237, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(PyDict_SetItem(__pyx_v_ret, __pyx_n_s_children, __pyx_t_1) < 0)) __PYX_ERR(1, 1237, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1238:

    +1239:         return ret

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_ret);
      __pyx_r = __pyx_v_ret;
      goto __pyx_L0;

     1240:

    +1241:     def add_child_vdev(self, ZFSVdev vdev):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_9add_child_vdev(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_9add_child_vdev(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("add_child_vdev (wrapper)", 0);
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vdev), __pyx_ptype_6libzfs_ZFSVdev, 1, "vdev", 0))) __PYX_ERR(1, 1241, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_8add_child_vdev(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_vdev));

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_8add_child_vdev(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("add_child_vdev", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSVdev.add_child_vdev", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1242:         if 'children' not in self.nvlist:

      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_children, ((PyObject *)__pyx_v_self->nvlist), Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1242, __pyx_L1_error)
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1243:             self.nvlist.set('children', [], nvpair.DATA_TYPE_NVLIST_ARRAY)

        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_set); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1243, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1243, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyInt_From_data_type_t(DATA_TYPE_NVLIST_ARRAY); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1243, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1243, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_INCREF(__pyx_n_s_children);
        __Pyx_GIVEREF(__pyx_n_s_children);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_n_s_children);
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
        __pyx_t_5 = 0;
        __pyx_t_6 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1243, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1244:

    +1245:         self.nvlist['children'] = self.nvlist.get_raw('children') + [vdev.nvlist]

      __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_v_self->nvlist->__pyx_vtab)->get_raw(__pyx_v_self->nvlist, __pyx_n_s_children); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(((PyObject *)__pyx_v_vdev->nvlist));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_vdev->nvlist));
      PyList_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_vdev->nvlist));
      __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1245, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_children, __pyx_t_9) < 0)) __PYX_ERR(1, 1245, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

     1246:

    +1247:     def attach(self, ZFSVdev vdev):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_11attach(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_11attach(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach (wrapper)", 0);
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vdev), __pyx_ptype_6libzfs_ZFSVdev, 1, "vdev", 0))) __PYX_ERR(1, 1247, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_10attach(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_vdev));

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_10attach(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev) {
      char const *__pyx_v_command;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_root = 0;
      PyObject *__pyx_v_first_child = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_13);
      __Pyx_AddTraceback("libzfs.ZFSVdev.attach", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_root);
      __Pyx_XDECREF(__pyx_v_first_child);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1248:         cdef const char *command = 'zpool attach'

      __pyx_v_command = ((char const *)"zpool attach");

     1249:         cdef ZFSVdev root

     1250:

    +1251:         if self.type not in ('mirror', 'disk', 'file'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1251, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_mirror, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1251, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1251, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1251, __pyx_L1_error)
      __pyx_t_2 = __pyx_t_3;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1252:             raise ZFSException(Error.NOTSUP, "Can attach disks to mirrors and stripes only")

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Can_attach_disks_to_mirrors_and);
        __Pyx_GIVEREF(__pyx_kp_s_Can_attach_disks_to_mirrors_and);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_Can_attach_disks_to_mirrors_and);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1252, __pyx_L1_error)

     1253:

    +1254:         if self.type == 'mirror':

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1254, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_mirror, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1254, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_3) {
    /* … */
        goto __pyx_L7;
      }

    +1255:             first_child = next(self.children)

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1255, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyIter_Next(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1255, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_first_child = __pyx_t_4;
        __pyx_t_4 = 0;

     1256:         else:

    +1257:             first_child = self

      /*else*/ {
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __pyx_v_first_child = ((PyObject *)__pyx_v_self);
      }
      __pyx_L7:;

     1258:

    +1259:         root = self.root.make_vdev_tree({

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->make_vdev_tree(__pyx_v_self->root, __pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1259, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_root = ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1260:             'data': [vdev]

      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_vdev));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_vdev));
      PyList_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_vdev));
      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_data, __pyx_t_1) < 0) __PYX_ERR(1, 1260, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1261:         })

     1262:

    +1263:         if libzfs.zpool_vdev_attach(

      if (__pyx_t_3) {
    /* … */
      }

     1264:             self.zpool.handle,

    +1265:             first_child.path,

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_first_child, __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1265, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(1, 1265, __pyx_L1_error)

    +1266:             vdev.path,

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vdev), __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1266, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(1, 1266, __pyx_L1_error)

     1267:             root.nvlist.handle,

    +1268:             False) != 0:

      __pyx_t_3 = ((zpool_vdev_attach(__pyx_v_self->zpool->handle, __pyx_t_9, __pyx_t_10, __pyx_v_root->nvlist->handle, 0) != 0) != 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +1269:             raise self.root.get_error()

        __pyx_t_4 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1269, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(1, 1269, __pyx_L1_error)

     1270:

    +1271:         self.root.write_history(command, self.zpool.name, first_child.path, vdev.path)

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_first_child, __pyx_n_s_path); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vdev), __pyx_n_s_path); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_13 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_12) {
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_7, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_7, __pyx_t_11);
      __pyx_t_8 = 0;
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_11 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     1272:

    +1273:     def replace(self, ZFSVdev vdev):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_13replace(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_13replace(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("replace (wrapper)", 0);
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vdev), __pyx_ptype_6libzfs_ZFSVdev, 1, "vdev", 0))) __PYX_ERR(1, 1273, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_12replace(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_vdev));

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_12replace(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev) {
      char const *__pyx_v_command;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_root = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("replace", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_13);
      __Pyx_AddTraceback("libzfs.ZFSVdev.replace", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_root);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1274:         cdef const char *command = 'zpool replace'

      __pyx_v_command = ((char const *)"zpool replace");

     1275:         cdef ZFSVdev root

     1276:

    +1277:         if self.type == 'file':

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1277, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1278:             raise ZFSException(Error.NOTSUP, "Can replace disks only")

        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = NULL;
        __pyx_t_6 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_6 = 1;
          }
        }
        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5);
        __Pyx_INCREF(__pyx_kp_s_Can_replace_disks_only);
        __Pyx_GIVEREF(__pyx_kp_s_Can_replace_disks_only);
        PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_kp_s_Can_replace_disks_only);
        __pyx_t_5 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1278, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1278, __pyx_L1_error)

     1279:

    +1280:         if not self.parent:

      __pyx_t_2 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v_self->parent)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1280, __pyx_L1_error)
      __pyx_t_8 = ((!__pyx_t_2) != 0);
      if (__pyx_t_8) {
    /* … */
      }

    +1281:             raise ZFSException(Error.NOTSUP, "Cannot replace a top-level vdev")

        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = NULL;
        __pyx_t_6 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_6 = 1;
          }
        }
        __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__pyx_t_7) {
          __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7); __pyx_t_7 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, __pyx_t_5);
        __Pyx_INCREF(__pyx_kp_s_Cannot_replace_a_top_level_vdev);
        __Pyx_GIVEREF(__pyx_kp_s_Cannot_replace_a_top_level_vdev);
        PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, __pyx_kp_s_Cannot_replace_a_top_level_vdev);
        __pyx_t_5 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1281, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1281, __pyx_L1_error)

     1282:

    +1283:         if self.parent.type not in ('mirror', 'raidz1', 'raidz2', 'raidz3'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1283, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_mirror, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1283, __pyx_L1_error)
      if (__pyx_t_2) {
      } else {
        __pyx_t_8 = __pyx_t_2;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz1, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1283, __pyx_L1_error)
      if (__pyx_t_2) {
      } else {
        __pyx_t_8 = __pyx_t_2;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz2, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1283, __pyx_L1_error)
      if (__pyx_t_2) {
      } else {
        __pyx_t_8 = __pyx_t_2;
        goto __pyx_L6_bool_binop_done;
      }
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz3, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1283, __pyx_L1_error)
      __pyx_t_8 = __pyx_t_2;
      __pyx_L6_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = (__pyx_t_8 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1284:             raise ZFSException(Error.NOTSUP, "Can replace disks in mirror and raidz* vdevs only")

        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = NULL;
        __pyx_t_6 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_6 = 1;
          }
        }
        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5);
        __Pyx_INCREF(__pyx_kp_s_Can_replace_disks_in_mirror_and);
        __Pyx_GIVEREF(__pyx_kp_s_Can_replace_disks_in_mirror_and);
        PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_kp_s_Can_replace_disks_in_mirror_and);
        __pyx_t_5 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1284, __pyx_L1_error)

     1285:

    +1286:         root = self.root.make_vdev_tree({

      __pyx_t_3 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->make_vdev_tree(__pyx_v_self->root, __pyx_t_1)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_root = ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_3);
      __pyx_t_3 = 0;

    +1287:             'data': [vdev]

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1287, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(((PyObject *)__pyx_v_vdev));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_vdev));
      PyList_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_vdev));
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_data, __pyx_t_3) < 0) __PYX_ERR(1, 1287, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1288:         })

     1289:

    +1290:         if libzfs.zpool_vdev_attach(

      if (__pyx_t_2) {
    /* … */
      }

     1291:             self.zpool.handle,

    +1292:             self.path,

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(1, 1292, __pyx_L1_error)

    +1293:             vdev.path,

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vdev), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1293, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(1, 1293, __pyx_L1_error)

     1294:             root.nvlist.handle,

    +1295:             True) != 0:

      __pyx_t_2 = ((zpool_vdev_attach(__pyx_v_self->zpool->handle, __pyx_t_9, __pyx_t_10, __pyx_v_root->nvlist->handle, 1) != 0) != 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1296:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1296, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1296, __pyx_L1_error)

     1297:

    +1298:         self.root.write_history(command, self.zpool.name, self.path, vdev.path)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_7 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vdev), __pyx_n_s_path); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_13 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_12) {
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_6, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_6, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_6, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_6, __pyx_t_11);
      __pyx_t_7 = 0;
      __pyx_t_5 = 0;
      __pyx_t_4 = 0;
      __pyx_t_11 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1298, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1299:

    +1300:     def detach(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_15detach(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_15detach(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("detach (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_14detach(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_14detach(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      char const *__pyx_v_command;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("detach", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSVdev.detach", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1301:         cdef const char *command = 'zpool detach'

      __pyx_v_command = ((char const *)"zpool detach");

    +1302:         if self.type not in ('file', 'disk'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1302, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1302, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1302, __pyx_L1_error)
      __pyx_t_2 = __pyx_t_3;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1303:             raise ZFSException(Error.NOTSUP, "Cannot detach virtual vdevs")

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Cannot_detach_virtual_vdevs);
        __Pyx_GIVEREF(__pyx_kp_s_Cannot_detach_virtual_vdevs);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_Cannot_detach_virtual_vdevs);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1303, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1303, __pyx_L1_error)

     1304:

    +1305:         if self.parent.type not in ('mirror', 'spare'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1305, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_mirror, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1305, __pyx_L1_error)
      if (__pyx_t_2) {
      } else {
        __pyx_t_3 = __pyx_t_2;
        goto __pyx_L7_bool_binop_done;
      }
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_spare, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1305, __pyx_L1_error)
      __pyx_t_3 = __pyx_t_2;
      __pyx_L7_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_2 = (__pyx_t_3 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1306:             raise ZFSException(Error.NOTSUP, "Can detach disks from mirrors and spares only")

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Can_detach_disks_from_mirrors_an);
        __Pyx_GIVEREF(__pyx_kp_s_Can_detach_disks_from_mirrors_an);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_kp_s_Can_detach_disks_from_mirrors_an);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1306, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1306, __pyx_L1_error)

     1307:

    +1308:         if libzfs.zpool_vdev_detach(self.zpool.handle, self.path) != 0:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1308, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(1, 1308, __pyx_L1_error)
      __pyx_t_2 = ((zpool_vdev_detach(__pyx_v_self->zpool->handle, __pyx_t_9) != 0) != 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1309:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1309, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1309, __pyx_L1_error)

     1310:

    +1311:         self.root.write_history(command, self.zpool.name, self.path)

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_10 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_10)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_10);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_10) {
        __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_7, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_7, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_7, __pyx_t_8);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_8 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1311, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1312:

    +1313:     def remove(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_17remove(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_17remove(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("remove (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_16remove(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_16remove(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      char const *__pyx_v_command;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("remove", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_AddTraceback("libzfs.ZFSVdev.remove", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1314:         cdef const char *command = 'zpool remove'

      __pyx_v_command = ((char const *)"zpool remove");

     1315:

    +1316:         if libzfs.zpool_vdev_remove(self.zpool.handle, self.path):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1316, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(1, 1316, __pyx_L1_error)
      __pyx_t_3 = (zpool_vdev_remove(__pyx_v_self->zpool->handle, __pyx_t_2) != 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1317:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1317, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1317, __pyx_L1_error)

     1318:

    +1319:         self.root.write_history(command, self.zpool.name, self.path)

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      __pyx_t_9 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_9 = 1;
        }
      }
      __pyx_t_10 = PyTuple_New(3+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_10, 2+__pyx_t_9, __pyx_t_7);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1319, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1320:

    +1321:     def offline(self, temporary=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_19offline(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_19offline(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_temporary = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("offline (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_temporary,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_temporary);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "offline") < 0)) __PYX_ERR(1, 1321, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_temporary = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("offline", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1321, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.offline", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_18offline(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), __pyx_v_temporary);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_18offline(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_temporary) {
      char const *__pyx_v_command;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("offline", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_13);
      __Pyx_AddTraceback("libzfs.ZFSVdev.offline", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1322:         cdef const char *command = 'zpool offline'

      __pyx_v_command = ((char const *)"zpool offline");

    +1323:         if self.type not in ('disk', 'file'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1323, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1323, __pyx_L1_error)
      __pyx_t_2 = __pyx_t_3;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1324:             raise ZFSException(Error.NOTSUP, "Can make disks offline only")

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Can_make_disks_offline_only);
        __Pyx_GIVEREF(__pyx_kp_s_Can_make_disks_offline_only);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_Can_make_disks_offline_only);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1324, __pyx_L1_error)

     1325:

    +1326:         if libzfs.zpool_vdev_offline(self.zpool.handle, self.path, temporary) != 0:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1326, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(1, 1326, __pyx_L1_error)
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_temporary); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1326, __pyx_L1_error)
      __pyx_t_3 = ((zpool_vdev_offline(__pyx_v_self->zpool->handle, __pyx_t_9, __pyx_t_10) != 0) != 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1327:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1327, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1327, __pyx_L1_error)

     1328:

    +1329:         self.root.write_history(command, '-t' if temporary else '',self.zpool.name, self.path)

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temporary); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1329, __pyx_L1_error)
      if (__pyx_t_3) {
        __Pyx_INCREF(__pyx_kp_s_t);
        __pyx_t_6 = __pyx_kp_s_t;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_6 = __pyx_kp_s__11;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_13 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_12) {
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_7, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_7, __pyx_t_11);
      __pyx_t_8 = 0;
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_11 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_13, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1329, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1330:

    +1331:     def online(self, expand=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_21online(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_21online(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_expand = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("online (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_expand,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_expand);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "online") < 0)) __PYX_ERR(1, 1331, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_expand = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("online", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1331, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.online", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_20online(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), __pyx_v_expand);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_20online(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_expand) {
      char const *__pyx_v_command;
      int __pyx_v_flags;
      vdev_state_t __pyx_v_newstate;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("online", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_XDECREF(__pyx_t_13);
      __Pyx_AddTraceback("libzfs.ZFSVdev.online", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1332:         cdef const char *command = 'zpool online'

      __pyx_v_command = ((char const *)"zpool online");

    +1333:         cdef int flags = 0

      __pyx_v_flags = 0;

     1334:         cdef zfs.vdev_state_t newstate

     1335:

    +1336:         if self.type not in ('disk', 'file'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1336, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1336, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1336, __pyx_L1_error)
      __pyx_t_2 = __pyx_t_3;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1337:             raise ZFSException(Error.NOTSUP, "Can make disks online only")

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1337, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1337, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_NOTSUP); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1337, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1337, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_5) {
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Can_make_disks_online_only);
        __Pyx_GIVEREF(__pyx_kp_s_Can_make_disks_online_only);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_Can_make_disks_online_only);
        __pyx_t_6 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1337, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1337, __pyx_L1_error)

     1338:

    +1339:         if expand:

      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_expand); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1339, __pyx_L1_error)
      if (__pyx_t_3) {
    /* … */
      }

    +1340:             flags |= zfs.ZFS_ONLINE_EXPAND

        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1340, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_zfs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1340, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_ZFS_ONLINE_EXPAND); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1340, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyNumber_InPlaceOr(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1340, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1340, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_v_flags = __pyx_t_9;

     1341:

    +1342:         if libzfs.zpool_vdev_online(self.zpool.handle, self.path, flags, &newstate) != 0:

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(1, 1342, __pyx_L1_error)
      __pyx_t_3 = ((zpool_vdev_online(__pyx_v_self->zpool->handle, __pyx_t_10, __pyx_v_flags, (&__pyx_v_newstate)) != 0) != 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1343:             raise self.root.get_error()

        __pyx_t_4 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1343, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(1, 1343, __pyx_L1_error)

     1344:

    +1345:         self.root.write_history(command, '-e' if expand else '',self.zpool.name, self.path)

      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_expand); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1345, __pyx_L1_error)
      if (__pyx_t_3) {
        __Pyx_INCREF(__pyx_kp_s_e);
        __pyx_t_6 = __pyx_kp_s_e;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_6 = __pyx_kp_s__11;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->zpool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __pyx_t_12 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_12 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_12)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_12);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_13 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_13);
      if (__pyx_t_12) {
        __Pyx_GIVEREF(__pyx_t_12); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_12); __pyx_t_12 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_7, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_7, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_7, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_11);
      PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_7, __pyx_t_11);
      __pyx_t_1 = 0;
      __pyx_t_6 = 0;
      __pyx_t_5 = 0;
      __pyx_t_11 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1345, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     1346:

    +1347:     def degrade(self, aux):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_23degrade(PyObject *__pyx_v_self, PyObject *__pyx_v_aux); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_23degrade(PyObject *__pyx_v_self, PyObject *__pyx_v_aux) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("degrade (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_22degrade(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((PyObject *)__pyx_v_aux));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_22degrade(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_aux) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("degrade", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSVdev.degrade", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1348:         if libzfs.zpool_vdev_degrade(self.zpool.handle, self.guid, int(aux)):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1348, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_aux); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1348, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = ((vdev_aux_t)__Pyx_PyInt_As_vdev_aux_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1348, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = (zpool_vdev_degrade(__pyx_v_self->zpool->handle, __pyx_t_2, __pyx_t_3) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1349:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1349, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1349, __pyx_L1_error)

     1350:

    +1351:     def fault(self, aux):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_25fault(PyObject *__pyx_v_self, PyObject *__pyx_v_aux); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_25fault(PyObject *__pyx_v_self, PyObject *__pyx_v_aux) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fault (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_24fault(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((PyObject *)__pyx_v_aux));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_24fault(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_aux) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("fault", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSVdev.fault", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1352:         if libzfs.zpool_vdev_fault(self.zpool.handle, self.guid, int(aux)):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyInt_As_uint64_t(__pyx_t_1); if (unlikely((__pyx_t_2 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1352, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyNumber_Int(__pyx_v_aux); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1352, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = ((vdev_aux_t)__Pyx_PyInt_As_vdev_aux_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1352, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = (zpool_vdev_fault(__pyx_v_self->zpool->handle, __pyx_t_2, __pyx_t_3) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1353:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1353, __pyx_L1_error)

     1354:

     1355:     property type:

    +1356:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4type_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4type___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4type___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_v_value = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdev.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_value);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1357:             value = self.nvlist.get('type')

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_value = __pyx_t_2;
      __pyx_t_2 = 0;
    /* … */
      __pyx_tuple__36 = PyTuple_Pack(1, __pyx_n_s_type); if (unlikely(!__pyx_tuple__36)) __PYX_ERR(1, 1357, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__36);
      __Pyx_GIVEREF(__pyx_tuple__36);

    +1358:             if value == 'raidz':

      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_n_s_raidz, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1358, __pyx_L1_error)
      if (__pyx_t_3) {
    /* … */
      }

    +1359:                 return value + str(self.nvlist.get('nparity'))

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyNumber_Add(__pyx_v_value, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1359, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_r = __pyx_t_2;
        __pyx_t_2 = 0;
        goto __pyx_L0;
    /* … */
      __pyx_tuple__37 = PyTuple_Pack(1, __pyx_n_s_nparity); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(1, 1359, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__37);
      __Pyx_GIVEREF(__pyx_tuple__37);

     1360:

    +1361:             return value

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_value);
      __pyx_r = __pyx_v_value;
      goto __pyx_L0;

     1362:

    +1363:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSVdev_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSVdev_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4type_2__set__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSVdev_4type_2__set__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZFSVdev.type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1364:             if value not in ('root', 'disk', 'file', 'raidz1', 'raidz2', 'raidz3', 'mirror'):

      __Pyx_INCREF(__pyx_v_value);
      __pyx_t_1 = __pyx_v_value;
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_root, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_file, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz1, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_raidz3, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      if (__pyx_t_3) {
      } else {
        __pyx_t_2 = __pyx_t_3;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_mirror, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1364, __pyx_L1_error)
      __pyx_t_2 = __pyx_t_3;
      __pyx_L4_bool_binop_done:;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1365:                 raise ValueError('Invalid vdev type')

        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1365, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1365, __pyx_L1_error)
    /* … */
      __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_Invalid_vdev_type); if (unlikely(!__pyx_tuple__38)) __PYX_ERR(1, 1365, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__38);
      __Pyx_GIVEREF(__pyx_tuple__38);

     1366:

    +1367:             self.nvlist['type'] = value

      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_type, __pyx_v_value) < 0)) __PYX_ERR(1, 1367, __pyx_L1_error)

     1368:

    +1369:             if value.startswith('raidz'):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_startswith); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1369, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_3) {
    /* … */
      }
    /* … */
      __pyx_tuple__39 = PyTuple_Pack(1, __pyx_n_s_raidz); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(1, 1369, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__39);
      __Pyx_GIVEREF(__pyx_tuple__39);

    +1370:                 self.nvlist['type'] = 'raidz'

        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_type, __pyx_n_s_raidz) < 0)) __PYX_ERR(1, 1370, __pyx_L1_error)

    +1371:                 self.nvlist['nparity'] = long(value[-1])

        __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_value, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1371, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1371, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)(&PyLong_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1371, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_nparity, __pyx_t_4) < 0)) __PYX_ERR(1, 1371, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     1372:

     1373:     property guid:

    +1374:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4guid_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4guid_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4guid___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4guid___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdev.guid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1375:             return self.nvlist.get('guid')

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__40 = PyTuple_Pack(1, __pyx_n_s_guid); if (unlikely(!__pyx_tuple__40)) __PYX_ERR(1, 1375, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__40);
      __Pyx_GIVEREF(__pyx_tuple__40);

     1376:

     1377:     property path:

    +1378:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4path_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4path_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4path___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4path___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSVdev.path.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1379:             return self.nvlist.get('path')

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__41 = PyTuple_Pack(1, __pyx_n_s_path); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(1, 1379, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__41);
      __Pyx_GIVEREF(__pyx_tuple__41);

     1380:

    +1381:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSVdev_4path_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSVdev_4path_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4path_2__set__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSVdev_4path_2__set__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.path.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1382:             self.nvlist['path'] = value

      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_path, __pyx_v_value) < 0)) __PYX_ERR(1, 1382, __pyx_L1_error)

     1383:

     1384:     property status:

    +1385:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_6status_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_6status_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_6status___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_6status___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_v_stats = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSVdev.status.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_stats);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1386:             stats = self.nvlist['vdev_stats']

      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1386, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_stats = __pyx_t_1;
      __pyx_t_1 = 0;

    +1387:             return libzfs.zpool_state_to_name(stats[1], stats[2])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stats, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((vdev_state_t)__Pyx_PyInt_As_vdev_state_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1387, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stats, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = ((vdev_aux_t)__Pyx_PyInt_As_vdev_aux_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1387, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zpool_state_to_name(__pyx_t_2, __pyx_t_3)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1387, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1388:

     1389:     property size:

    +1390:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_4size_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_4size___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_4size___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSVdev.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1391:             return self.nvlist['asize'] << self.nvlist['ashift']

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_asize); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_ashift); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyNumber_Lshift(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1392:

     1393:     property stats:

    +1394:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5stats_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5stats_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_5stats___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_5stats___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      struct __pyx_obj_6libzfs_ZFSVdevStats *__pyx_v_ret = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSVdev.stats.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_ret);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSVdev_8children_2generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

     1395:             cdef ZFSVdevStats ret

     1396:

    +1397:             ret = ZFSVdevStats.__new__(ZFSVdevStats)

      __pyx_t_1 = __pyx_tp_new_6libzfs_ZFSVdevStats(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdevStats), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1397, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZFSVdevStats)))) __PYX_ERR(1, 1397, __pyx_L1_error)
      __pyx_v_ret = ((struct __pyx_obj_6libzfs_ZFSVdevStats *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1398:             ret.vdev = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_ret->vdev);
      __Pyx_DECREF(((PyObject *)__pyx_v_ret->vdev));
      __pyx_v_ret->vdev = __pyx_v_self;

    +1399:             ret.nvlist = self.nvlist

      __pyx_t_1 = ((PyObject *)__pyx_v_self->nvlist);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_ret->nvlist);
      __Pyx_DECREF(((PyObject *)__pyx_v_ret->nvlist));
      __pyx_v_ret->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1400:             return ret

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_ret));
      __pyx_r = ((PyObject *)__pyx_v_ret);
      goto __pyx_L0;

     1401:

     1402:     property children:

    +1403:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_8children_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_8children_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_8children___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_8children___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_7___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_7___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_7___get__(__pyx_ptype_6libzfs___pyx_scope_struct_7___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSVdev_8children_2generator6, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSVdev___get); if (unlikely(!gen)) __PYX_ERR(1, 1403, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSVdev.children.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSVdev_8children_2generator6(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1403, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_7___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_i;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     1404:             cdef ZFSVdev vdev

     1405:

    +1406:             if 'children' not in self.nvlist:

      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_children, ((PyObject *)__pyx_cur_scope->__pyx_v_self->nvlist), Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1406, __pyx_L1_error)
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1407:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1408:

    +1409:             for i in self.nvlist.get_raw('children'):

      __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_cur_scope->__pyx_v_self->nvlist->__pyx_vtab)->get_raw(__pyx_cur_scope->__pyx_v_self->nvlist, __pyx_n_s_children); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1409, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
        __pyx_t_4 = __pyx_t_3; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1409, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1409, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_4))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_3 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1409, __pyx_L1_error)
            #else
            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1409, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1409, __pyx_L1_error)
            #else
            __pyx_t_3 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1409, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_3);
            #endif
          }
        } else {
          __pyx_t_3 = __pyx_t_6(__pyx_t_4);
          if (unlikely(!__pyx_t_3)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1409, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_3);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +1410:                 vdev = ZFSVdev.__new__(ZFSVdev)

        __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1410, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1410, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vdev, ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_3));
        __Pyx_GIVEREF(__pyx_t_3);
        __pyx_t_3 = 0;

    +1411:                 vdev.nvlist = i

        if (!(likely(((__pyx_cur_scope->__pyx_v_i) == Py_None) || likely(__Pyx_TypeTest(__pyx_cur_scope->__pyx_v_i, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1411, __pyx_L1_error)
        __pyx_t_3 = __pyx_cur_scope->__pyx_v_i;
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->nvlist);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->nvlist));
        __pyx_cur_scope->__pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_3);
        __pyx_t_3 = 0;

    +1412:                 vdev.zpool = self.zpool

        __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->zpool);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->zpool);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->zpool));
        __pyx_cur_scope->__pyx_v_vdev->zpool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
        __pyx_t_3 = 0;

    +1413:                 vdev.root = self.root

        __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->root);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->root);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->root));
        __pyx_cur_scope->__pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_3);
        __pyx_t_3 = 0;

    +1414:                 vdev.parent = self

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->parent);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->parent));
        __pyx_cur_scope->__pyx_v_vdev->parent = __pyx_cur_scope->__pyx_v_self;

    +1415:                 vdev.group = self.group

        __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->group;
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __Pyx_DECREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __pyx_cur_scope->__pyx_v_vdev->group = __pyx_t_3;
        __pyx_t_3 = 0;

    +1416:                 yield vdev

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_vdev);
        __Pyx_XGIVEREF(__pyx_t_4);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_4;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L7_resume_from_yield:;
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_4);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1416, __pyx_L1_error)

     1417:

    +1418:         def __set__(self, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSVdev_8children_4__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSVdev_8children_4__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_8children_3__set__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSVdev_8children_3__set__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self, PyObject *__pyx_v_value) {
      PyObject *__pyx_v_i = NULL;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSVdev.children.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1419:             self.nvlist['children'] = [(<ZFSVdev>i).nvlist for i in value]

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1419, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_v_value)) || PyTuple_CheckExact(__pyx_v_value)) {
        __pyx_t_2 = __pyx_v_value; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1419, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1419, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1419, __pyx_L1_error)
            #else
            __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1419, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1419, __pyx_L1_error)
            #else
            __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1419, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_5);
            #endif
          }
        } else {
          __pyx_t_5 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_5)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1419, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_5);
        __pyx_t_5 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_i)->nvlist))) __PYX_ERR(1, 1419, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_self->nvlist), __pyx_n_s_children, __pyx_t_1) < 0)) __PYX_ERR(1, 1419, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1420:

     1421:     property disks:

    +1422:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5disks_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSVdev_5disks_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSVdev_5disks___get__(((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSVdev_5disks___get__(struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_self) {
      PyObject *__pyx_v_result = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSVdev.disks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_result);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1423:             if self.type == 'disk':

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1423, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_disk, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1423, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1424:                 return [self.path]

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_path); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1424, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1424, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_1);
        PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

    +1425:             elif self.type == 'file':

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1425, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_file, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1425, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1426:                 return []

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1426, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L0;

     1427:             else:

    +1428:                 result = []

      /*else*/ {
        __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1428, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_v_result = __pyx_t_3;
        __pyx_t_3 = 0;

    +1429:                 for i in self.children:

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1429, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
          __pyx_t_1 = __pyx_t_3; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
          __pyx_t_5 = NULL;
        } else {
          __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1429, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1429, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        for (;;) {
          if (likely(!__pyx_t_5)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1429, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1429, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            } else {
              if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1429, __pyx_L1_error)
              #else
              __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1429, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_3);
              #endif
            }
          } else {
            __pyx_t_3 = __pyx_t_5(__pyx_t_1);
            if (unlikely(!__pyx_t_3)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 1429, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_3);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
          __pyx_t_3 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1430:                     result += i.disks

          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_disks); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1430, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_6 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1430, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_6);
          __pyx_t_6 = 0;

     1431:

    +1432:                 return result

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_result);
        __pyx_r = __pyx_v_result;
        goto __pyx_L0;
      }

     1433:

     1434:

    +1435: cdef class ZPoolScrub(object):

    struct __pyx_obj_6libzfs_ZPoolScrub {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFS *root;
      struct __pyx_obj_6libzfs_ZFSPool *pool;
      PyObject *stat;
    };

    +1436:     cdef readonly ZFS root

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4root_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4root_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_4root___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_4root___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
      __pyx_r = ((PyObject *)__pyx_v_self->root);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1437:     cdef readonly ZFSPool pool

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4pool_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4pool_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_4pool___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_4pool___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->pool));
      __pyx_r = ((PyObject *)__pyx_v_self->pool);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1438:     cdef readonly object stat

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4stat_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_4stat_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_4stat___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_4stat___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_self->stat);
      __pyx_r = __pyx_v_self->stat;
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1439:

    +1440:     def __init__(self, ZFS root, ZFSPool pool):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_10ZPoolScrub_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_10ZPoolScrub_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_root = 0;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool = 0;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_root,&__pyx_n_s_pool,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_root)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pool)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(1, 1440, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 1440, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_root = ((struct __pyx_obj_6libzfs_ZFS *)values[0]);
        __pyx_v_pool = ((struct __pyx_obj_6libzfs_ZFSPool *)values[1]);
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1440, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZPoolScrub.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return -1;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_root), __pyx_ptype_6libzfs_ZFS, 1, "root", 0))) __PYX_ERR(1, 1440, __pyx_L1_error)
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pool), __pyx_ptype_6libzfs_ZFSPool, 1, "pool", 0))) __PYX_ERR(1, 1440, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub___init__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self), __pyx_v_root, __pyx_v_pool);

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_10ZPoolScrub___init__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self, struct __pyx_obj_6libzfs_ZFS *__pyx_v_root, struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_pool) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1441:         self.root = root

      __Pyx_INCREF(((PyObject *)__pyx_v_root));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_root));
      __Pyx_GOTREF(__pyx_v_self->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->root));
      __pyx_v_self->root = __pyx_v_root;

    +1442:         self.pool = pool

      __Pyx_INCREF(((PyObject *)__pyx_v_pool));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_pool));
      __Pyx_GOTREF(__pyx_v_self->pool);
      __Pyx_DECREF(((PyObject *)__pyx_v_self->pool));
      __pyx_v_self->pool = __pyx_v_pool;

    +1443:         self.stat = None

      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->stat);
      __Pyx_DECREF(__pyx_v_self->stat);
      __pyx_v_self->stat = Py_None;

    +1444:         if 'scan_stats' in pool.config['vdev_tree']:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pool), __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1444, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1444, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_scan_stats, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1444, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_4 = (__pyx_t_3 != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1445:             self.stat = pool.config['vdev_tree']['scan_stats']

        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pool), __pyx_n_s_config); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_n_s_scan_stats); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1445, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_v_self->stat);
        __Pyx_DECREF(__pyx_v_self->stat);
        __pyx_v_self->stat = __pyx_t_2;
        __pyx_t_2 = 0;

     1446:

     1447:     property state:

    +1448:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_5state_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_5state_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_5state___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_5state___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1449:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1449, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1450:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1451:

    +1452:             return ScanState(self.stat[1])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ScanState); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->stat, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1452, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1452, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1453:

     1454:     property function:

    +1455:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_8function_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_8function_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_8function___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_8function___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.function.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1456:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1456, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1457:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1458:

    +1459:             return ScanFunction(self.stat[0])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ScanFunction); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_self->stat, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1459, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1459, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_5);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
        __pyx_t_5 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1459, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1460:

     1461:     property start_time:

    +1462:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_10start_time_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_10start_time_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_10start_time___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_10start_time___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.start_time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1463:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1463, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1464:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1465:

    +1466:             return datetime.fromtimestamp(self.stat[2])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fromtimestamp); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_self->stat, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1466, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1466, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1466, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1466, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1467:

     1468:     property end_time:

    +1469:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_8end_time_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_8end_time_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_8end_time___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_8end_time___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.end_time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1470:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1470, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1471:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1472:

    +1473:             return datetime.fromtimestamp(self.stat[3])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fromtimestamp); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_self->stat, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1473, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1473, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1473, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1474:

     1475:     property bytes_to_scan:

    +1476:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_13bytes_to_scan_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_13bytes_to_scan_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_13bytes_to_scan___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_13bytes_to_scan___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.bytes_to_scan.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1477:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1477, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1478:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1479:

    +1480:             return self.stat[4]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->stat, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1480, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1481:

     1482:     property bytes_scanned:

    +1483:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_13bytes_scanned_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_13bytes_scanned_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_13bytes_scanned___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_13bytes_scanned___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.bytes_scanned.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1484:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1484, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1485:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1486:

    +1487:             return self.stat[5]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->stat, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1487, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1488:

     1489:     property errors:

    +1490:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_6errors_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_6errors_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_6errors___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_6errors___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.errors.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1491:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1491, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1492:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1493:

    +1494:             return self.stat[8]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->stat, 8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1494, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1495:

     1496:     property percentage:

    +1497:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_10percentage_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_10percentage_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_10percentage___get__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_10percentage___get__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.percentage.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1498:             if not self.stat:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1498, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1499:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     1500:

    +1501:             if not self.bytes_to_scan:

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes_to_scan); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1501, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1501, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_1 = ((!__pyx_t_2) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1502:                 return 0

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_int_0);
        __pyx_r = __pyx_int_0;
        goto __pyx_L0;

     1503:

    +1504:             return (<float>self.bytes_scanned / <float>self.bytes_to_scan) * 100

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes_scanned); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_4 == (float)-1) && PyErr_Occurred())) __PYX_ERR(1, 1504, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes_to_scan); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_5 == (float)-1) && PyErr_Occurred())) __PYX_ERR(1, 1504, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(((float)__pyx_t_5) == 0)) {
        PyErr_SetString(PyExc_ZeroDivisionError, "float division");
        __PYX_ERR(1, 1504, __pyx_L1_error)
      }
      __pyx_t_3 = PyFloat_FromDouble(((((float)__pyx_t_4) / ((float)__pyx_t_5)) * 100.0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1504, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1505:

    +1506:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZPoolScrub_3__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZPoolScrub_2__getstate__(((struct __pyx_obj_6libzfs_ZPoolScrub *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZPoolScrub_2__getstate__(struct __pyx_obj_6libzfs_ZPoolScrub *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZPoolScrub.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1507:         return {

      __Pyx_XDECREF(__pyx_r);

    +1508:             'function': self.function.name if self.function else None,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_function); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_4) {
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_function); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1508, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1508, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_2 = __pyx_t_5;
        __pyx_t_5 = 0;
      } else {
        __Pyx_INCREF(Py_None);
        __pyx_t_2 = Py_None;
      }
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_function, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1509:             'state': self.state.name if self.stat else None,

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_self->stat); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 1509, __pyx_L1_error)
      if (__pyx_t_4) {
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_state); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1509, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1509, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_2 = __pyx_t_3;
        __pyx_t_3 = 0;
      } else {
        __Pyx_INCREF(Py_None);
        __pyx_t_2 = Py_None;
      }
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_state, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1510:             'start_time': self.start_time,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_start_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1510, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start_time, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1511:             'end_time': self.end_time,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_end_time); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1511, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_end_time, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1512:             'percentage': self.percentage,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_percentage); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1512, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_percentage, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1513:             'bytes_to_process': self.bytes_scanned,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes_scanned); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1513, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_bytes_to_process, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1514:             'bytes_processed': self.bytes_to_scan,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bytes_to_scan); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1514, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_bytes_processed, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1515:             'errors': self.errors

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_errors); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1515, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_errors, __pyx_t_2) < 0) __PYX_ERR(1, 1508, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1516:         }

     1517:

     1518:

    +1519: cdef class ZFSPool(object):

    struct __pyx_obj_6libzfs_ZFSPool {
      PyObject_HEAD
      struct __pyx_vtabstruct_6libzfs_ZFSPool *__pyx_vtab;
      zpool_handle_t *handle;
      int free;
      struct __pyx_obj_6libzfs_ZFS *root;
    };
    /* … */
    struct __pyx_vtabstruct_6libzfs_ZFSPool {
      int (*__pyx___iterate_props)(int, void *);
      struct __pyx_obj_6libzfs_NVList *(*get_raw_config)(struct __pyx_obj_6libzfs_ZFSPool *);
    };
    static struct __pyx_vtabstruct_6libzfs_ZFSPool *__pyx_vtabptr_6libzfs_ZFSPool;

     1520:     cdef libzfs.zpool_handle_t* handle

     1521:     cdef bint free

    +1522:     cdef readonly ZFS root

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4root_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4root_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_4root___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_4root___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
      __pyx_r = ((PyObject *)__pyx_v_self->root);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1523:

    +1524:     def __cinit__(self):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSPool_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSPool_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
      if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
        __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool___cinit__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSPool___cinit__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__cinit__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1525:         self.free = True

      __pyx_v_self->free = 1;

     1526:

    +1527:     def __init__(self):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_7ZFSPool_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_7ZFSPool_3__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_2__init__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_7ZFSPool_2__init__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSPool.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1528:         raise RuntimeError('ZFSPool cannot be instantiated by the user')

      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__42, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1528, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 1528, __pyx_L1_error)
    /* … */
      __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_ZFSPool_cannot_be_instantiated_b); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(1, 1528, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__42);
      __Pyx_GIVEREF(__pyx_tuple__42);

     1529:

    +1530:     def __dealloc__(self):

    /* Python wrapper */
    static void __pyx_pw_6libzfs_7ZFSPool_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
    static void __pyx_pw_6libzfs_7ZFSPool_5__dealloc__(PyObject *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
      __pyx_pf_6libzfs_7ZFSPool_4__dealloc__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    static void __pyx_pf_6libzfs_7ZFSPool_4__dealloc__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__", 0);
    /* … */
      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    +1531:         if self.free:

      __pyx_t_1 = (__pyx_v_self->free != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1532:             with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L6;
              }
              __pyx_L6:;
            }
        }

    +1533:                 libzfs.zpool_close(self.handle)

              zpool_close(__pyx_v_self->handle);
            }

     1534:

    +1535:             self.handle = NULL

        __pyx_v_self->handle = NULL;

     1536:

    +1537:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_7__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_7__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_6__str__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_6__str__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSPool.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1538:         return "<libzfs.ZFSPool name '{0}' guid '{1}'>".format(self.name, self.guid)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSPool_name_0_guid_1, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_3 = 0;
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1538, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1539:

    +1540:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_8__repr__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_8__repr__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1541:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1542:

    +1543:     def __getstate__(self, datasets_recursive=True):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_datasets_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_datasets_recursive,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_True);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_datasets_recursive);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getstate__") < 0)) __PYX_ERR(1, 1543, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_datasets_recursive = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__getstate__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1543, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_10__getstate__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self), __pyx_v_datasets_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_10__getstate__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self, PyObject *__pyx_v_datasets_recursive) {
      PyObject *__pyx_v_root_ds = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_10);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_14);
      __Pyx_XDECREF(__pyx_t_15);
      __Pyx_AddTraceback("libzfs.ZFSPool.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_root_ds);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1544:         try:

      {
        /*try:*/ {
    /* … */
        }
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        goto __pyx_L10_try_end;
        __pyx_L3_error:;
        __Pyx_PyThreadState_assign
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    /* … */
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
        goto __pyx_L1_error;
        __pyx_L4_exception_handled:;
        __Pyx_PyThreadState_assign
        __Pyx_XGIVEREF(__pyx_t_1);
        __Pyx_XGIVEREF(__pyx_t_2);
        __Pyx_XGIVEREF(__pyx_t_3);
        __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
        __pyx_L10_try_end:;
      }

    +1545:             root_ds = self.root_dataset.__getstate__(datasets_recursive)

          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_root_dataset); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1545, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_getstate); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1545, __pyx_L3_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __pyx_t_5 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
            __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
            if (likely(__pyx_t_5)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_6, function);
            }
          }
          if (!__pyx_t_5) {
            __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_datasets_recursive); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1545, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_4);
          } else {
            __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1545, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_7);
            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_v_datasets_recursive);
            __Pyx_GIVEREF(__pyx_v_datasets_recursive);
            PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_datasets_recursive);
            __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1545, __pyx_L3_error)
            __Pyx_GOTREF(__pyx_t_4);
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __pyx_v_root_ds = __pyx_t_4;
          __pyx_t_4 = 0;

    +1546:         except (ZFSException, AttributeError):

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1546, __pyx_L5_except_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyErr_ExceptionMatches(__pyx_t_4) || __Pyx_PyErr_ExceptionMatches(__pyx_builtin_AttributeError);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (__pyx_t_8) {
          __Pyx_AddTraceback("libzfs.ZFSPool.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) __PYX_ERR(1, 1546, __pyx_L5_except_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GOTREF(__pyx_t_7);

    +1547:             root_ds = None

          __Pyx_INCREF(Py_None);
          __Pyx_XDECREF_SET(__pyx_v_root_ds, Py_None);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L4_exception_handled;
        }
        goto __pyx_L5_except_error;
        __pyx_L5_except_error:;

     1548:

    +1549:         return {

      __Pyx_XDECREF(__pyx_r);

    +1550:             'name': self.name,

      __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_name_2, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1551:             'id': self.name,

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_id, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1552:             'guid': str(self.guid),

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1552, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1552, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1552, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_guid, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1553:             'hostname': self.hostname,

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_hostname); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_hostname, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1554:             'status': self.status,

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_status); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1554, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_status, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1555:             'error_count': self.error_count,

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_error_count); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1555, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_error_count, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1556:             'root_dataset': root_ds,

      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_root_dataset, __pyx_v_root_ds) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)

    +1557:             'properties': {k: p.__getstate__() for k, p in self.properties.items()} if self.properties else None,

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_properties); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 1557, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_9) {
        { /* enter inner scope */
          PyObject *__pyx_7genexpr__pyx_v_k = NULL;
          PyObject *__pyx_7genexpr__pyx_v_p = NULL;
          __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1557, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_10 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_properties); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1557, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_10);
          __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_items); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1557, __pyx_L15_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __pyx_t_10 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_11))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_11, function);
            }
          }
          if (__pyx_t_10) {
            __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          } else {
            __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
          }
          __Pyx_GOTREF(__pyx_t_5);
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
            __pyx_t_11 = __pyx_t_5; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0;
            __pyx_t_13 = NULL;
          } else {
            __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1557, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_11);
            __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1557, __pyx_L15_error)
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          for (;;) {
            if (likely(!__pyx_t_13)) {
              if (likely(PyList_CheckExact(__pyx_t_11))) {
                if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_5 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1557, __pyx_L15_error)
                #else
                __pyx_t_5 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
                __Pyx_GOTREF(__pyx_t_5);
                #endif
              } else {
                if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_5); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1557, __pyx_L15_error)
                #else
                __pyx_t_5 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
                __Pyx_GOTREF(__pyx_t_5);
                #endif
              }
            } else {
              __pyx_t_5 = __pyx_t_13(__pyx_t_11);
              if (unlikely(!__pyx_t_5)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                  else __PYX_ERR(1, 1557, __pyx_L15_error)
                }
                break;
              }
              __Pyx_GOTREF(__pyx_t_5);
            }
            if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
              PyObject* sequence = __pyx_t_5;
              #if CYTHON_COMPILING_IN_CPYTHON
              Py_ssize_t size = Py_SIZE(sequence);
              #else
              Py_ssize_t size = PySequence_Size(sequence);
              #endif
              if (unlikely(size != 2)) {
                if (size > 2) __Pyx_RaiseTooManyValuesError(2);
                else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
                __PYX_ERR(1, 1557, __pyx_L15_error)
              }
              #if CYTHON_COMPILING_IN_CPYTHON
              if (likely(PyTuple_CheckExact(sequence))) {
                __pyx_t_10 = PyTuple_GET_ITEM(sequence, 0);
                __pyx_t_14 = PyTuple_GET_ITEM(sequence, 1);
              } else {
                __pyx_t_10 = PyList_GET_ITEM(sequence, 0);
                __pyx_t_14 = PyList_GET_ITEM(sequence, 1);
              }
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(__pyx_t_14);
              #else
              __pyx_t_10 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 1557, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_10);
              __pyx_t_14 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1557, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_14);
              #endif
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            } else {
              Py_ssize_t index = -1;
              __pyx_t_15 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_15)) __PYX_ERR(1, 1557, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_15);
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __pyx_t_16 = Py_TYPE(__pyx_t_15)->tp_iternext;
              index = 0; __pyx_t_10 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_10)) goto __pyx_L18_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_10);
              index = 1; __pyx_t_14 = __pyx_t_16(__pyx_t_15); if (unlikely(!__pyx_t_14)) goto __pyx_L18_unpacking_failed;
              __Pyx_GOTREF(__pyx_t_14);
              if (__Pyx_IternextUnpackEndCheck(__pyx_t_16(__pyx_t_15), 2) < 0) __PYX_ERR(1, 1557, __pyx_L15_error)
              __pyx_t_16 = NULL;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              goto __pyx_L19_unpacking_done;
              __pyx_L18_unpacking_failed:;
              __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
              __pyx_t_16 = NULL;
              if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
              __PYX_ERR(1, 1557, __pyx_L15_error)
              __pyx_L19_unpacking_done:;
            }
            __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_k, __pyx_t_10);
            __pyx_t_10 = 0;
            __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_p, __pyx_t_14);
            __pyx_t_14 = 0;
            __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_7genexpr__pyx_v_p, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1557, __pyx_L15_error)
            __Pyx_GOTREF(__pyx_t_14);
            __pyx_t_10 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
              __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
              if (likely(__pyx_t_10)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
                __Pyx_INCREF(__pyx_t_10);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_14, function);
              }
            }
            if (__pyx_t_10) {
              __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
              __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
            } else {
              __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1557, __pyx_L15_error)
            }
            __Pyx_GOTREF(__pyx_t_5);
            __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
            if (unlikely(PyDict_SetItem(__pyx_t_4, (PyObject*)__pyx_7genexpr__pyx_v_k, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 1557, __pyx_L15_error)
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          }
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k);
          __Pyx_XDECREF(__pyx_7genexpr__pyx_v_p);
          goto __pyx_L20_exit_scope;
          __pyx_L15_error:;
          __Pyx_XDECREF(__pyx_7genexpr__pyx_v_k);
          __Pyx_XDECREF(__pyx_7genexpr__pyx_v_p);
          goto __pyx_L1_error;
          __pyx_L20_exit_scope:;
        } /* exit inner scope */
        __pyx_t_6 = __pyx_t_4;
        __pyx_t_4 = 0;
      } else {
        __Pyx_INCREF(Py_None);
        __pyx_t_6 = Py_None;
      }
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_properties, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1558:             'features': [i.__getstate__() for i in self.features] if self.features else None,

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_features); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(1, 1558, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (__pyx_t_9) {
        __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1558, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_features); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1558, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
          __pyx_t_5 = __pyx_t_11; __Pyx_INCREF(__pyx_t_5); __pyx_t_12 = 0;
          __pyx_t_13 = NULL;
        } else {
          __pyx_t_12 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1558, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_13 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1558, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        for (;;) {
          if (likely(!__pyx_t_13)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_11 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1558, __pyx_L1_error)
              #else
              __pyx_t_11 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1558, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_11);
              #endif
            } else {
              if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1558, __pyx_L1_error)
              #else
              __pyx_t_11 = PySequence_ITEM(__pyx_t_5, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1558, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_11);
              #endif
            }
          } else {
            __pyx_t_11 = __pyx_t_13(__pyx_t_5);
            if (unlikely(!__pyx_t_11)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 1558, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_11);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_11);
          __pyx_t_11 = 0;
          __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1558, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_14);
          __pyx_t_10 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
            __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
            if (likely(__pyx_t_10)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
              __Pyx_INCREF(__pyx_t_10);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_14, function);
            }
          }
          if (__pyx_t_10) {
            __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1558, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          } else {
            __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1558, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_t_11))) __PYX_ERR(1, 1558, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_6 = __pyx_t_4;
        __pyx_t_4 = 0;
      } else {
        __Pyx_INCREF(Py_None);
        __pyx_t_6 = Py_None;
      }
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_features, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1559:             'scan': self.scrub.__getstate__(),

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_scrub); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_getstate); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1559, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1559, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1559, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_scan, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1560:             'root_vdev': self.root_vdev.__getstate__(False),

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_root_vdev); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1560, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_getstate); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1560, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1560, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_root_vdev, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    /* … */
      __pyx_tuple__43 = PyTuple_Pack(1, Py_False); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(1, 1560, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__43);
      __Pyx_GIVEREF(__pyx_tuple__43);

     1561:             'groups': {

    +1562:                 'data': [i.__getstate__() for i in self.data_vdevs],

      __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_data_vdevs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
        __pyx_t_11 = __pyx_t_4; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0;
        __pyx_t_13 = NULL;
      } else {
        __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1562, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      for (;;) {
        if (likely(!__pyx_t_13)) {
          if (likely(PyList_CheckExact(__pyx_t_11))) {
            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1562, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1562, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          } else {
            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1562, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1562, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          }
        } else {
          __pyx_t_4 = __pyx_t_13(__pyx_t_11);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1562, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1562, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_10 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_14, function);
          }
        }
        if (__pyx_t_10) {
          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1562, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else {
          __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1562, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_4))) __PYX_ERR(1, 1562, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_data, __pyx_t_5) < 0) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +1563:                 'log': [i.__getstate__() for i in self.log_vdevs],

      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1563, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log_vdevs); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1563, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
        __pyx_t_4 = __pyx_t_11; __Pyx_INCREF(__pyx_t_4); __pyx_t_12 = 0;
        __pyx_t_13 = NULL;
      } else {
        __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1563, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      for (;;) {
        if (likely(!__pyx_t_13)) {
          if (likely(PyList_CheckExact(__pyx_t_4))) {
            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_11 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1563, __pyx_L1_error)
            #else
            __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1563, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            #endif
          } else {
            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1563, __pyx_L1_error)
            #else
            __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1563, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            #endif
          }
        } else {
          __pyx_t_11 = __pyx_t_13(__pyx_t_4);
          if (unlikely(!__pyx_t_11)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1563, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_11);
        __pyx_t_11 = 0;
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1563, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_10 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_14, function);
          }
        }
        if (__pyx_t_10) {
          __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1563, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else {
          __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1563, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_11))) __PYX_ERR(1, 1563, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_log, __pyx_t_5) < 0) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +1564:                 'cache': [i.__getstate__() for i in self.cache_vdevs],

      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1564, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cache_vdevs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1564, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (likely(PyList_CheckExact(__pyx_t_4)) || PyTuple_CheckExact(__pyx_t_4)) {
        __pyx_t_11 = __pyx_t_4; __Pyx_INCREF(__pyx_t_11); __pyx_t_12 = 0;
        __pyx_t_13 = NULL;
      } else {
        __pyx_t_12 = -1; __pyx_t_11 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __pyx_t_13 = Py_TYPE(__pyx_t_11)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1564, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      for (;;) {
        if (likely(!__pyx_t_13)) {
          if (likely(PyList_CheckExact(__pyx_t_11))) {
            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_11)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1564, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1564, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          } else {
            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_11)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_11, __pyx_t_12); __Pyx_INCREF(__pyx_t_4); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1564, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_11, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1564, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          }
        } else {
          __pyx_t_4 = __pyx_t_13(__pyx_t_11);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1564, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1564, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_10 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_14, function);
          }
        }
        if (__pyx_t_10) {
          __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1564, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else {
          __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1564, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_4))) __PYX_ERR(1, 1564, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_cache, __pyx_t_5) < 0) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +1565:                 'spare': [i.__getstate__() for i in self.spare_vdevs]

      __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1565, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spare_vdevs); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1565, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (likely(PyList_CheckExact(__pyx_t_11)) || PyTuple_CheckExact(__pyx_t_11)) {
        __pyx_t_4 = __pyx_t_11; __Pyx_INCREF(__pyx_t_4); __pyx_t_12 = 0;
        __pyx_t_13 = NULL;
      } else {
        __pyx_t_12 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1565, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_13 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 1565, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      for (;;) {
        if (likely(!__pyx_t_13)) {
          if (likely(PyList_CheckExact(__pyx_t_4))) {
            if (__pyx_t_12 >= PyList_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_11 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1565, __pyx_L1_error)
            #else
            __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1565, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            #endif
          } else {
            if (__pyx_t_12 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_11 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_12); __Pyx_INCREF(__pyx_t_11); __pyx_t_12++; if (unlikely(0 < 0)) __PYX_ERR(1, 1565, __pyx_L1_error)
            #else
            __pyx_t_11 = PySequence_ITEM(__pyx_t_4, __pyx_t_12); __pyx_t_12++; if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1565, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_11);
            #endif
          }
        } else {
          __pyx_t_11 = __pyx_t_13(__pyx_t_4);
          if (unlikely(!__pyx_t_11)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1565, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_11);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_11);
        __pyx_t_11 = 0;
        __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_14)) __PYX_ERR(1, 1565, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_14);
        __pyx_t_10 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_14))) {
          __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_14);
          if (likely(__pyx_t_10)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_14);
            __Pyx_INCREF(__pyx_t_10);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_14, function);
          }
        }
        if (__pyx_t_10) {
          __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_14, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1565, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        } else {
          __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_14); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1565, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_5, (PyObject*)__pyx_t_11))) __PYX_ERR(1, 1565, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_spare, __pyx_t_5) < 0) __PYX_ERR(1, 1562, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_groups, __pyx_t_6) < 0) __PYX_ERR(1, 1550, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_r = __pyx_t_7;
      __pyx_t_7 = 0;
      goto __pyx_L0;

     1566:             },

     1567:         }

     1568:

     1569:     @staticmethod

    +1570:     cdef int __iterate_props(int proptype, void* arg) nogil:

    static int __pyx_f_6libzfs_7ZFSPool___iterate_props(int __pyx_v_proptype, void *__pyx_v_arg) {
      PyObject *__pyx_v_proptypes = NULL;
      int __pyx_r;
      #ifdef WITH_THREAD
      PyGILState_STATE __pyx_gilstate_save;
      #endif
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__iterate_props", 1);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_WriteUnraisable("libzfs.ZFSPool.__iterate_props", __pyx_clineno, __pyx_lineno, __pyx_filename, 0, 1);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_proptypes);
      #ifdef WITH_THREAD
      PyGILState_Release(__pyx_gilstate_save);
      #endif
      return __pyx_r;
    }

    +1571:         with gil:

      /*try:*/ {
        {
            #ifdef WITH_THREAD
            PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              __pyx_L6_return: {
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L3_return;
              }
              __pyx_L7_error: {
                #ifdef WITH_THREAD
                PyGILState_Release(__pyx_gilstate_save);
                #endif
                goto __pyx_L4_error;
              }
            }
        }
      }
      /*finally:*/ {
        __pyx_L3_return: {
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L0;
        }
        __pyx_L4_error: {
          #ifdef WITH_THREAD
          __pyx_gilstate_save = PyGILState_Ensure();
          #endif
          goto __pyx_L1_error;
        }
      }

    +1572:             proptypes = <object>arg

              __pyx_t_1 = ((PyObject *)__pyx_v_arg);
              __Pyx_INCREF(__pyx_t_1);
              __pyx_v_proptypes = __pyx_t_1;
              __pyx_t_1 = 0;

    +1573:             proptypes.append(proptype)

              __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_proptype); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1573, __pyx_L7_error)
              __Pyx_GOTREF(__pyx_t_1);
              __pyx_t_2 = __Pyx_PyObject_Append(__pyx_v_proptypes, __pyx_t_1); if (unlikely(__pyx_t_2 == -1)) __PYX_ERR(1, 1573, __pyx_L7_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1574:             return zfs.ZPROP_CONT

              __pyx_r = ZPROP_CONT;
              goto __pyx_L6_return;
            }

     1575:

     1576:     property root_dataset:

    +1577:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_12root_dataset_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_12root_dataset_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_12root_dataset___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_12root_dataset___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      char const *__pyx_v_c_name;
      zfs_handle_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_dataset = 0;
      PyObject *__pyx_v_name = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSPool.root_dataset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_dataset);
      __Pyx_XDECREF(__pyx_v_name);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1578:             cdef const char *c_name;

    +1579:             cdef libzfs.zfs_handle_t* handle = NULL

      __pyx_v_handle = NULL;

     1580:             cdef ZFSDataset dataset

     1581:

    +1582:             name = self.name

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_name = __pyx_t_1;
      __pyx_t_1 = 0;

    +1583:             c_name = name

      __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(1, 1583, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_2;

     1584:

    +1585:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1586:                 handle = libzfs.zfs_open(self.root.handle, c_name, zfs.ZFS_TYPE_FILESYSTEM)

            __pyx_v_handle = zfs_open(__pyx_v_self->root->handle, __pyx_v_c_name, ZFS_TYPE_FILESYSTEM);
          }

     1587:

    +1588:             if handle == NULL:

      __pyx_t_3 = ((__pyx_v_handle == NULL) != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +1589:                 raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1589, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1589, __pyx_L1_error)

     1590:

    +1591:             dataset = ZFSDataset.__new__(ZFSDataset)

      __pyx_t_1 = __pyx_tp_new_6libzfs_ZFSDataset(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSDataset), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZFSDataset)))) __PYX_ERR(1, 1591, __pyx_L1_error)
      __pyx_v_dataset = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1592:             dataset.root = self.root

      __pyx_t_1 = ((PyObject *)__pyx_v_self->root);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.root);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.root));
      __pyx_v_dataset->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_1);
      __pyx_t_1 = 0;

    +1593:             dataset.pool = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_dataset->__pyx_base.pool);
      __Pyx_DECREF(((PyObject *)__pyx_v_dataset->__pyx_base.pool));
      __pyx_v_dataset->__pyx_base.pool = __pyx_v_self;

    +1594:             dataset.handle = handle

      __pyx_v_dataset->__pyx_base.handle = __pyx_v_handle;

    +1595:             return dataset

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_dataset));
      __pyx_r = ((PyObject *)__pyx_v_dataset);
      goto __pyx_L0;

     1596:

     1597:     property root_vdev:

    +1598:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9root_vdev_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9root_vdev_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_9root_vdev___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_9root_vdev___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev = 0;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_vdev_tree = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.root_vdev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_vdev);
      __Pyx_XDECREF((PyObject *)__pyx_v_vdev_tree);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSPool_10data_vdevs_2generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

     1599:             cdef ZFSVdev vdev

    +1600:             cdef NVList vdev_tree = self.get_raw_config().get_raw('vdev_tree')

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1)->__pyx_vtab)->get_raw(((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1), __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1600, __pyx_L1_error)
      __pyx_v_vdev_tree = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1601:

    +1602:             vdev = ZFSVdev.__new__(ZFSVdev)

      __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1602, __pyx_L1_error)
      __pyx_v_vdev = ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2);
      __pyx_t_2 = 0;

    +1603:             vdev.root = self.root

      __pyx_t_2 = ((PyObject *)__pyx_v_self->root);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_vdev->root);
      __Pyx_DECREF(((PyObject *)__pyx_v_vdev->root));
      __pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_2);
      __pyx_t_2 = 0;

    +1604:             vdev.zpool = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_vdev->zpool);
      __Pyx_DECREF(((PyObject *)__pyx_v_vdev->zpool));
      __pyx_v_vdev->zpool = __pyx_v_self;

    +1605:             vdev.nvlist = <NVList>vdev_tree

      __pyx_t_2 = ((PyObject *)__pyx_v_vdev_tree);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_vdev->nvlist);
      __Pyx_DECREF(((PyObject *)__pyx_v_vdev->nvlist));
      __pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +1606:             return vdev

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_vdev));
      __pyx_r = ((PyObject *)__pyx_v_vdev);
      goto __pyx_L0;

     1607:

     1608:     property data_vdevs:

    +1609:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_10data_vdevs_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_10data_vdevs_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_10data_vdevs___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_10data_vdevs___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_8___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_8___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_8___get__(__pyx_ptype_6libzfs___pyx_scope_struct_8___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSPool_10data_vdevs_2generator7, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSPool___get); if (unlikely(!gen)) __PYX_ERR(1, 1609, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.data_vdevs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSPool_10data_vdevs_2generator7(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1609, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSPool_9log_vdevs_2generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_8___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_child;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_vdev_tree;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     1610:             cdef ZFSVdev vdev

    +1611:             cdef NVList vdev_tree = self.get_raw_config().get_raw('vdev_tree')

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1)->__pyx_vtab)->get_raw(((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1), __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1611, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_vdev_tree = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1612:

    +1613:             if 'children' not in vdev_tree:

      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_children, ((PyObject *)__pyx_cur_scope->__pyx_v_vdev_tree), Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1613, __pyx_L1_error)
      __pyx_t_4 = (__pyx_t_3 != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1614:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1615:

    +1616:             for child in vdev_tree.get_raw('children'):

      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_cur_scope->__pyx_v_vdev_tree->__pyx_vtab)->get_raw(__pyx_cur_scope->__pyx_v_vdev_tree, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1616, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1616, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1616, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1616, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1616, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1616, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1616, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_6(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1616, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_child);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_child, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1617:                 if not child['is_log']:

        __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_child, __pyx_n_s_is_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1617, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 1617, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_3 = ((!__pyx_t_4) != 0);
        if (__pyx_t_3) {
    /* … */
        }

    +1618:                     vdev = ZFSVdev.__new__(ZFSVdev)

          __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1618, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1618, __pyx_L1_error)
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vdev, ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2));
          __Pyx_GIVEREF(__pyx_t_2);
          __pyx_t_2 = 0;

    +1619:                     vdev.root = self.root

          __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->root);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->root);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->root));
          __pyx_cur_scope->__pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_2);
          __pyx_t_2 = 0;

    +1620:                     vdev.zpool = self

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->zpool);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->zpool));
          __pyx_cur_scope->__pyx_v_vdev->zpool = __pyx_cur_scope->__pyx_v_self;

    +1621:                     vdev.nvlist = <NVList>child

          __pyx_t_2 = __pyx_cur_scope->__pyx_v_child;
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->nvlist);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->nvlist));
          __pyx_cur_scope->__pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
          __pyx_t_2 = 0;

    +1622:                     vdev.group = 'data'

          __Pyx_INCREF(__pyx_n_s_data);
          __Pyx_GIVEREF(__pyx_n_s_data);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->group);
          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_vdev->group);
          __pyx_cur_scope->__pyx_v_vdev->group = __pyx_n_s_data;

    +1623:                     yield vdev

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
          __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_vdev);
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L8_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1623, __pyx_L1_error)

     1624:

     1625:     property log_vdevs:

    +1626:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9log_vdevs_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_9log_vdevs_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_9log_vdevs___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_9log_vdevs___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_9___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_9___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_9___get__(__pyx_ptype_6libzfs___pyx_scope_struct_9___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSPool_9log_vdevs_2generator8, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSPool___get); if (unlikely(!gen)) __PYX_ERR(1, 1626, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.log_vdevs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSPool_9log_vdevs_2generator8(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1626, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSPool_11cache_vdevs_2generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_9___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_child;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_vdev_tree;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     1627:             cdef ZFSVdev vdev

    +1628:             cdef NVList vdev_tree = self.get_raw_config().get_raw('vdev_tree')

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1)->__pyx_vtab)->get_raw(((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1), __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1628, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_vdev_tree = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1629:

    +1630:             if 'children' not in vdev_tree:

      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_children, ((PyObject *)__pyx_cur_scope->__pyx_v_vdev_tree), Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1630, __pyx_L1_error)
      __pyx_t_4 = (__pyx_t_3 != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1631:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1632:

    +1633:             for child in vdev_tree.get_raw('children'):

      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_cur_scope->__pyx_v_vdev_tree->__pyx_vtab)->get_raw(__pyx_cur_scope->__pyx_v_vdev_tree, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1633, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1633, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1633, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1633, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1633, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1633, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1633, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_6(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1633, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_child);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_child, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1634:                 if child['is_log']:

        __pyx_t_2 = PyObject_GetItem(__pyx_cur_scope->__pyx_v_child, __pyx_n_s_is_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1634, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 1634, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        if (__pyx_t_4) {
    /* … */
        }

    +1635:                     vdev = ZFSVdev.__new__(ZFSVdev)

          __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1635, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1635, __pyx_L1_error)
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vdev, ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2));
          __Pyx_GIVEREF(__pyx_t_2);
          __pyx_t_2 = 0;

    +1636:                     vdev.root = self.root

          __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->root);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->root);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->root));
          __pyx_cur_scope->__pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_2);
          __pyx_t_2 = 0;

    +1637:                     vdev.zpool = self

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
          __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->zpool);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->zpool));
          __pyx_cur_scope->__pyx_v_vdev->zpool = __pyx_cur_scope->__pyx_v_self;

    +1638:                     vdev.nvlist = <NVList>child

          __pyx_t_2 = __pyx_cur_scope->__pyx_v_child;
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->nvlist);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->nvlist));
          __pyx_cur_scope->__pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
          __pyx_t_2 = 0;

    +1639:                     vdev.group = 'log'

          __Pyx_INCREF(__pyx_n_s_log);
          __Pyx_GIVEREF(__pyx_n_s_log);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->group);
          __Pyx_DECREF(__pyx_cur_scope->__pyx_v_vdev->group);
          __pyx_cur_scope->__pyx_v_vdev->group = __pyx_n_s_log;

    +1640:                     yield vdev

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
          __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_vdev);
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L8_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1640, __pyx_L1_error)

     1641:

     1642:     property cache_vdevs:

    +1643:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11cache_vdevs_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11cache_vdevs_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_11cache_vdevs___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_11cache_vdevs___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_10___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_10___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_10___get__(__pyx_ptype_6libzfs___pyx_scope_struct_10___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSPool_11cache_vdevs_2generator9, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSPool___get); if (unlikely(!gen)) __PYX_ERR(1, 1643, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.cache_vdevs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSPool_11cache_vdevs_2generator9(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1643, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSPool_11spare_vdevs_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_10___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_child;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_vdev_tree;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     1644:             cdef ZFSVdev vdev

    +1645:             cdef NVList vdev_tree = self.get_raw_config().get_raw('vdev_tree')

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1)->__pyx_vtab)->get_raw(((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1), __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1645, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_vdev_tree = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1646:

    +1647:             if 'l2cache' not in vdev_tree:

      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_l2cache, ((PyObject *)__pyx_cur_scope->__pyx_v_vdev_tree), Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1647, __pyx_L1_error)
      __pyx_t_4 = (__pyx_t_3 != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1648:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1649:

    +1650:             for child in vdev_tree.get_raw('l2cache'):

      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_cur_scope->__pyx_v_vdev_tree->__pyx_vtab)->get_raw(__pyx_cur_scope->__pyx_v_vdev_tree, __pyx_n_s_l2cache); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1650, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1650, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1650, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1650, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1650, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1650, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1650, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_6(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1650, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_child);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_child, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1651:                     vdev = ZFSVdev.__new__(ZFSVdev)

        __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1651, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1651, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vdev, ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2));
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;

    +1652:                     vdev.root = self.root

        __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->root);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->root);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->root));
        __pyx_cur_scope->__pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_2);
        __pyx_t_2 = 0;

    +1653:                     vdev.zpool = self

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->zpool);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->zpool));
        __pyx_cur_scope->__pyx_v_vdev->zpool = __pyx_cur_scope->__pyx_v_self;

    +1654:                     vdev.nvlist = <NVList>child

        __pyx_t_2 = __pyx_cur_scope->__pyx_v_child;
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->nvlist);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->nvlist));
        __pyx_cur_scope->__pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
        __pyx_t_2 = 0;

    +1655:                     vdev.group = 'cache'

        __Pyx_INCREF(__pyx_n_s_cache);
        __Pyx_GIVEREF(__pyx_n_s_cache);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __Pyx_DECREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __pyx_cur_scope->__pyx_v_vdev->group = __pyx_n_s_cache;

    +1656:                     yield vdev

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_vdev);
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L7_resume_from_yield:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1656, __pyx_L1_error)

     1657:

     1658:     property spare_vdevs:

    +1659:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11spare_vdevs_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11spare_vdevs_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_11spare_vdevs___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_11spare_vdevs___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_11___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_11___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_11___get__(__pyx_ptype_6libzfs___pyx_scope_struct_11___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSPool_11spare_vdevs_2generator10, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSPool___get); if (unlikely(!gen)) __PYX_ERR(1, 1659, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.spare_vdevs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSPool_11spare_vdevs_2generator10(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1659, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_11___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_child;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vdev;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_vdev_tree;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

     1660:             cdef ZFSVdev vdev

    +1661:             cdef NVList vdev_tree = self.get_raw_config().get_raw('vdev_tree')

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_cur_scope->__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1661, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1)->__pyx_vtab)->get_raw(((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1), __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1661, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_NVList))))) __PYX_ERR(1, 1661, __pyx_L1_error)
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_vdev_tree = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1662:

    +1663:             if 'spares' not in vdev_tree:

      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_n_s_spares, ((PyObject *)__pyx_cur_scope->__pyx_v_vdev_tree), Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1663, __pyx_L1_error)
      __pyx_t_4 = (__pyx_t_3 != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +1664:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1665:

    +1666:             for child in vdev_tree.get_raw('spares'):

      __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_NVList *)__pyx_cur_scope->__pyx_v_vdev_tree->__pyx_vtab)->get_raw(__pyx_cur_scope->__pyx_v_vdev_tree, __pyx_n_s_spares); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1666, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1666, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1666, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1666, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1666, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1666, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1666, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_6(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1666, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_child);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_child, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1667:                     vdev = ZFSVdev.__new__(ZFSVdev)

        __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSVdev(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSVdev), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1667, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSVdev)))) __PYX_ERR(1, 1667, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_vdev, ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_2));
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;

    +1668:                     vdev.root = self.root

        __pyx_t_2 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->root);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->root);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->root));
        __pyx_cur_scope->__pyx_v_vdev->root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_2);
        __pyx_t_2 = 0;

    +1669:                     vdev.zpool = self

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->zpool);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->zpool));
        __pyx_cur_scope->__pyx_v_vdev->zpool = __pyx_cur_scope->__pyx_v_self;

    +1670:                     vdev.nvlist = <NVList>child

        __pyx_t_2 = __pyx_cur_scope->__pyx_v_child;
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->nvlist);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev->nvlist));
        __pyx_cur_scope->__pyx_v_vdev->nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
        __pyx_t_2 = 0;

    +1671:                     vdev.group = 'spare'

        __Pyx_INCREF(__pyx_n_s_spare);
        __Pyx_GIVEREF(__pyx_n_s_spare);
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __Pyx_DECREF(__pyx_cur_scope->__pyx_v_vdev->group);
        __pyx_cur_scope->__pyx_v_vdev->group = __pyx_n_s_spare;

    +1672:                     yield vdev

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_vdev));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_vdev);
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_6;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L7_resume_from_yield:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_6 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1672, __pyx_L1_error)

     1673:

     1674:     property groups:

    +1675:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6groups_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6groups_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_6groups___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_6groups___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPool.groups.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1676:             return {

      __Pyx_XDECREF(__pyx_r);

    +1677:                 'data': list(self.data_vdevs),

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_data_vdevs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_data, __pyx_t_3) < 0) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +1678:                 'log': list(self.log_vdevs),

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log_vdevs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1678, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1678, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_log, __pyx_t_2) < 0) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1679:                 'cache': list(self.cache_vdevs),

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cache_vdevs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1679, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_cache, __pyx_t_3) < 0) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +1680:                 'spare': list(self.spare_vdevs)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spare_vdevs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1680, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_2 = PySequence_List(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1680, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_spare, __pyx_t_2) < 0) __PYX_ERR(1, 1677, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1681:             }

     1682:

     1683:     property name:

    +1684:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_4name___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_4name___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSPool.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1685:             return libzfs.zpool_get_name(self.handle)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zpool_get_name(__pyx_v_self->handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1685, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1686:

     1687:     property guid:

    +1688:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4guid_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_4guid_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_4guid___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_4guid___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.guid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1689:             return self.config['pool_guid']

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_n_s_pool_guid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1689, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1690:

     1691:     property hostname:

    +1692:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_8hostname_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_8hostname_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_8hostname___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_8hostname___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.hostname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1693:             return self.config.get('hostname')

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__44 = PyTuple_Pack(1, __pyx_n_s_hostname); if (unlikely(!__pyx_tuple__44)) __PYX_ERR(1, 1693, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__44);
      __Pyx_GIVEREF(__pyx_tuple__44);

     1694:

     1695:     property state:

    +1696:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5state_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5state_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_5state___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_5state___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSPool.state.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1697:             return PoolState(self.config['state'])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PoolState); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_config); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = PyObject_GetItem(__pyx_t_3, __pyx_n_s_state); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1697, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1697, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1697, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1697, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1698:

     1699:     property status:

    +1700:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6status_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6status_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_6status___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_6status___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_v_stats = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.status.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_stats);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1701:             stats = self.config['vdev_tree']['vdev_stats']

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_n_s_vdev_tree); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_vdev_stats); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_stats = __pyx_t_1;
      __pyx_t_1 = 0;

    +1702:             return libzfs.zpool_state_to_name(stats[1], stats[2])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stats, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1702, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = ((vdev_state_t)__Pyx_PyInt_As_vdev_state_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1702, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_stats, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1702, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = ((vdev_aux_t)__Pyx_PyInt_As_vdev_aux_t(__pyx_t_1)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1702, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zpool_state_to_name(__pyx_t_3, __pyx_t_4)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1702, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1703:

     1704:     property error_count:

    +1705:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11error_count_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_11error_count_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_11error_count___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_11error_count___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.error_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1706:             return self.config.get('error_count')

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_config); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1706, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1706, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1706, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__45 = PyTuple_Pack(1, __pyx_n_s_error_count); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(1, 1706, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__45);
      __Pyx_GIVEREF(__pyx_tuple__45);

     1707:

     1708:     property config:

    +1709:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6config_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_6config_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_6config___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_6config___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.config.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1710:             return dict(self.get_raw_config())

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_v_self->__pyx_vtab)->get_raw_config(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1710, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1710, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1710, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1711:

     1712:     property properties:

    +1713:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_10properties_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_10properties_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_10properties___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_10properties___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs_ZPoolProperty *__pyx_v_prop = 0;
      PyObject *__pyx_v_proptypes = NULL;
      PyObject *__pyx_v_result = NULL;
      PyObject *__pyx_v_x = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPool.properties.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_prop);
      __Pyx_XDECREF(__pyx_v_proptypes);
      __Pyx_XDECREF(__pyx_v_result);
      __Pyx_XDECREF(__pyx_v_x);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_7ZFSPool_8features_2generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

     1714:             cdef ZPoolProperty prop

    +1715:             proptypes = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_proptypes = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

    +1716:             result = {}

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_result = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

     1717:

    +1718:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1719:                 libzfs.zprop_iter(self.__iterate_props, <void*>proptypes, True, True, zfs.ZFS_TYPE_POOL)

            zprop_iter(((struct __pyx_vtabstruct_6libzfs_ZFSPool *)__pyx_v_self->__pyx_vtab)->__pyx___iterate_props, ((void *)__pyx_v_proptypes), 1, 1, ZFS_TYPE_POOL);
          }

     1720:

    +1721:             for x in proptypes:

      __pyx_t_1 = __pyx_v_proptypes; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
      for (;;) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 1721, __pyx_L1_error)
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1721, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
        __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_3);
        __pyx_t_3 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1722:                 prop = ZPoolProperty.__new__(ZPoolProperty)

        __pyx_t_3 = __pyx_tp_new_6libzfs_ZPoolProperty(((PyTypeObject *)__pyx_ptype_6libzfs_ZPoolProperty), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1722, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZPoolProperty)))) __PYX_ERR(1, 1722, __pyx_L1_error)
        __Pyx_XDECREF_SET(__pyx_v_prop, ((struct __pyx_obj_6libzfs_ZPoolProperty *)__pyx_t_3));
        __pyx_t_3 = 0;

    +1723:                 prop.pool = self

        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        __Pyx_GOTREF(__pyx_v_prop->pool);
        __Pyx_DECREF(((PyObject *)__pyx_v_prop->pool));
        __pyx_v_prop->pool = __pyx_v_self;

    +1724:                 prop.propid = x

        __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1724, __pyx_L1_error)
        __pyx_v_prop->propid = __pyx_t_4;

    +1725:                 result[prop.name] = prop

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_prop), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1725, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (unlikely(PyDict_SetItem(__pyx_v_result, __pyx_t_3, ((PyObject *)__pyx_v_prop)) < 0)) __PYX_ERR(1, 1725, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1726:

    +1727:             return result

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
      goto __pyx_L0;

     1728:

     1729:     property features:

    +1730:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_8features_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_8features_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_8features___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_8features___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_12___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_12___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_12___get__(__pyx_ptype_6libzfs___pyx_scope_struct_12___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_7ZFSPool_8features_2generator11, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSPool___get); if (unlikely(!gen)) __PYX_ERR(1, 1730, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.features.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_7ZFSPool_8features_2generator11(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1730, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_12___get__ {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZPoolFeature *__pyx_v_f;
      zfeature_info_t *__pyx_v_feat;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_features_nv;
      long __pyx_v_i;
      uintptr_t __pyx_v_nvl;
      struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self;
      spa_feature_t __pyx_t_0;
      long __pyx_t_1;
    };

     1731:             cdef ZPoolFeature f

     1732:             cdef NVList features_nv

     1733:             cdef zfs.zfeature_info_t* feat

     1734:             cdef uintptr_t nvl

     1735:

    +1736:             if self.status == 'UNAVAIL':

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_status); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1736, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_UNAVAIL, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 1736, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_2) {
    /* … */
      }

    +1737:                 return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = NULL;
        goto __pyx_L0;

     1738:

    +1739:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L7;
            }
            __pyx_L7:;
          }
      }

    +1740:                 nvl = <uintptr_t>libzfs.zpool_get_features(self.handle)

            __pyx_cur_scope->__pyx_v_nvl = ((uintptr_t)zpool_get_features(__pyx_cur_scope->__pyx_v_self->handle));
          }

     1741:

    +1742:             features_nv = NVList(nvl)

      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_cur_scope->__pyx_v_nvl); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1742, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1742, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1742, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_features_nv = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

     1743:

    +1744:             for i in range(0, zfs.SPA_FEATURES):

      __pyx_t_4 = SPA_FEATURES;
      for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
        __pyx_cur_scope->__pyx_v_i = __pyx_t_5;

    +1745:                 feat = &zfs.spa_feature_table[i]

        __pyx_cur_scope->__pyx_v_feat = (&(spa_feature_table[__pyx_cur_scope->__pyx_v_i]));

    +1746:                 f = ZPoolFeature.__new__(ZPoolFeature)

        __pyx_t_1 = __pyx_tp_new_6libzfs_ZPoolFeature(((PyTypeObject *)__pyx_ptype_6libzfs_ZPoolFeature), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1746, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZPoolFeature)))) __PYX_ERR(1, 1746, __pyx_L1_error)
        __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_f));
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_f, ((struct __pyx_obj_6libzfs_ZPoolFeature *)__pyx_t_1));
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;

    +1747:                 f.feature = feat

        __pyx_cur_scope->__pyx_v_f->feature = __pyx_cur_scope->__pyx_v_feat;

    +1748:                 f.pool = self

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_self));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_f->pool);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_f->pool));
        __pyx_cur_scope->__pyx_v_f->pool = __pyx_cur_scope->__pyx_v_self;

    +1749:                 f.nvlist = features_nv

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_features_nv));
        __Pyx_GIVEREF(((PyObject *)__pyx_cur_scope->__pyx_v_features_nv));
        __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_f->nvlist);
        __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_f->nvlist));
        __pyx_cur_scope->__pyx_v_f->nvlist = __pyx_cur_scope->__pyx_v_features_nv;

    +1750:                 yield f

        __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_f));
        __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_f);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_4;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_5;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L10_resume_from_yield:;
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_0;
        __pyx_t_5 = __pyx_cur_scope->__pyx_t_1;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1750, __pyx_L1_error)
      }

     1751:

     1752:     property disks:

    +1753:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5disks_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5disks_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_5disks___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_5disks___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_v_result = NULL;
      PyObject *__pyx_v_g = NULL;
      PyObject *__pyx_v_v = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSPool.disks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_result);
      __Pyx_XDECREF(__pyx_v_g);
      __Pyx_XDECREF(__pyx_v_v);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1754:             result = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1754, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_result = __pyx_t_1;
      __pyx_t_1 = 0;

    +1755:             for g in self.groups.values():

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_groups); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1755, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_values); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1755, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_2) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1755, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1755, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
        __pyx_t_5 = NULL;
      } else {
        __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1755, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1755, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_5)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1755, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1755, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1755, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1755, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_5(__pyx_t_3);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1755, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +1756:                 for v in g:

        if (likely(PyList_CheckExact(__pyx_v_g)) || PyTuple_CheckExact(__pyx_v_g)) {
          __pyx_t_1 = __pyx_v_g; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_g); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1756, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1756, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_1))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 1756, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1756, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 1756, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1756, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_7(__pyx_t_1);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 1756, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_2);
          __pyx_t_2 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1757:                     result += v.disks

          __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_v, __pyx_n_s_disks); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1757, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1757, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_8);
          __pyx_t_8 = 0;

     1758:

    +1759:             return result

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_result);
      __pyx_r = __pyx_v_result;
      goto __pyx_L0;

     1760:

     1761:     property scrub:

    +1762:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5scrub_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_5scrub_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_5scrub___get__(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_5scrub___get__(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.scrub.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1763:             return ZPoolScrub(self.root, self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1763, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->root));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->root));
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_ZPoolScrub), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1763, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1764:

    +1765:     cdef NVList get_raw_config(self):

    static struct __pyx_obj_6libzfs_NVList *__pyx_f_6libzfs_7ZFSPool_get_raw_config(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      uintptr_t __pyx_v_nvl;
      struct __pyx_obj_6libzfs_NVList *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_raw_config", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.get_raw_config", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XGIVEREF((PyObject *)__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1766:         cdef uintptr_t nvl = <uintptr_t>libzfs.zpool_get_config(self.handle, NULL)

      __pyx_v_nvl = ((uintptr_t)zpool_get_config(__pyx_v_self->handle, NULL));

    +1767:         return NVList(nvl)

      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __pyx_t_1 = __Pyx_PyInt_FromSize_t(__pyx_v_nvl); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1767, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1767, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1767, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1768:

    +1769:     def create(self, name, fsopts, fstype=DatasetType.FILESYSTEM, sparse_vol=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_13create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_13create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_fsopts = 0;
      PyObject *__pyx_v_fstype = 0;
      PyObject *__pyx_v_sparse_vol = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_fsopts,&__pyx_n_s_fstype,&__pyx_n_s_sparse_vol,0};
        PyObject* values[4] = {0,0,0,0};
        values[2] = __pyx_k__46;
        values[3] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fsopts)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("create", 0, 2, 4, 1); __PYX_ERR(1, 1769, __pyx_L3_error)
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fstype);
              if (value) { values[2] = value; kw_args--; }
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sparse_vol);
              if (value) { values[3] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "create") < 0)) __PYX_ERR(1, 1769, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_name = values[0];
        __pyx_v_fsopts = values[1];
        __pyx_v_fstype = values[2];
        __pyx_v_sparse_vol = values[3];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("create", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1769, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_12create(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self), __pyx_v_name, __pyx_v_fsopts, __pyx_v_fstype, __pyx_v_sparse_vol);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_12create(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_fsopts, PyObject *__pyx_v_fstype, PyObject *__pyx_v_sparse_vol) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_cfsopts = 0;
      uint64_t __pyx_v_vol_reservation;
      char const *__pyx_v_c_name;
      zfs_type_t __pyx_v_c_fstype;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSPool.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cfsopts);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1769, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FILESYSTEM); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1769, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_k__46 = __pyx_t_3;
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;

    +1770:         cdef NVList cfsopts = NVList(otherdict=fsopts)

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_otherdict, __pyx_v_fsopts) < 0) __PYX_ERR(1, 1770, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1770, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_cfsopts = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1771:         cdef uint64_t vol_reservation

    +1772:         cdef const char *c_name = name

      __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(1, 1772, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_3;

    +1773:         cdef zfs.zfs_type_t c_fstype = <zfs.zfs_type_t>fstype

      __pyx_t_4 = ((zfs_type_t)__Pyx_PyInt_As_zfs_type_t(__pyx_v_fstype)); if (unlikely(PyErr_Occurred())) __PYX_ERR(1, 1773, __pyx_L1_error)
      __pyx_v_c_fstype = ((zfs_type_t)__pyx_t_4);

     1774:         cdef int ret

     1775:

    +1776:         if fstype == DatasetType.VOLUME and not sparse_vol:

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1776, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_VOLUME); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1776, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_v_fstype, __pyx_t_1, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1776, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 1776, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_6) {
      } else {
        __pyx_t_5 = __pyx_t_6;
        goto __pyx_L4_bool_binop_done;
      }
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_sparse_vol); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 1776, __pyx_L1_error)
      __pyx_t_7 = ((!__pyx_t_6) != 0);
      __pyx_t_5 = __pyx_t_7;
      __pyx_L4_bool_binop_done:;
      if (__pyx_t_5) {
    /* … */
      }

    +1777:             vol_reservation = libzfs.zvol_volsize_to_reservation(

        __pyx_v_vol_reservation = zvol_volsize_to_reservation(__pyx_t_12, __pyx_v_cfsopts->handle);

    +1778:                 nicestrtonum(self.root, cfsopts['volsize']),

        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_nicestrtonum); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1778, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = PyObject_GetItem(((PyObject *)__pyx_v_cfsopts), __pyx_n_s_volsize); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1778, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1778, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_9) {
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
        }
        __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self->root));
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, ((PyObject *)__pyx_v_self->root));
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1778, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_12 = __Pyx_PyInt_As_uint64_t(__pyx_t_2); if (unlikely((__pyx_t_12 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 1778, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     1779:                 cfsopts.handle)

     1780:

    +1781:             cfsopts['refreservation'] = vol_reservation

        __pyx_t_2 = __Pyx_PyInt_From_uint64_t(__pyx_v_vol_reservation); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1781, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_cfsopts), __pyx_n_s_refreservation, __pyx_t_2) < 0)) __PYX_ERR(1, 1781, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     1782:

    +1783:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L8;
            }
            __pyx_L8:;
          }
      }

    +1784:             ret = libzfs.zfs_create(

            __pyx_v_ret = zfs_create(__pyx_v_self->root->handle, __pyx_v_c_name, __pyx_v_c_fstype, __pyx_v_cfsopts->handle);
          }

     1785:                 self.root.handle,

     1786:                 c_name,

     1787:                 c_fstype,

     1788:                 cfsopts.handle

     1789:             )

     1790:

    +1791:         if ret != 0:

      __pyx_t_5 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_5) {
    /* … */
      }

    +1792:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1792, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1792, __pyx_L1_error)

     1793:

    +1794:     def attach_vdevs(self, vdevs_tree):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_15attach_vdevs(PyObject *__pyx_v_self, PyObject *__pyx_v_vdevs_tree); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_15attach_vdevs(PyObject *__pyx_v_self, PyObject *__pyx_v_vdevs_tree) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach_vdevs (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_14attach_vdevs(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self), ((PyObject *)__pyx_v_vdevs_tree));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_14attach_vdevs(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self, PyObject *__pyx_v_vdevs_tree) {
      char const *__pyx_v_command;
      struct __pyx_obj_6libzfs_ZFSVdev *__pyx_v_vd = 0;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach_vdevs", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSPool.attach_vdevs", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_vd);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1795:         cdef const char *command = 'zpool add'

      __pyx_v_command = ((char const *)"zpool add");

    +1796:         cdef ZFSVdev vd = self.root.make_vdev_tree(vdevs_tree)

      __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->make_vdev_tree(__pyx_v_self->root, __pyx_v_vdevs_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1796, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_vd = ((struct __pyx_obj_6libzfs_ZFSVdev *)__pyx_t_1);
      __pyx_t_1 = 0;

     1797:         cdef int ret

     1798:

    +1799:         ret = libzfs.zpool_add(self.handle, vd.nvlist.handle)

      __pyx_v_ret = zpool_add(__pyx_v_self->handle, __pyx_v_vd->nvlist->handle);

     1800:

    +1801:         if ret != 0:

      __pyx_t_2 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1802:             raise self.root.get_error()

        __pyx_t_1 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 1802, __pyx_L1_error)

     1803:

    +1804:         self.root.write_history(command, self.name, self.root.history_vdevs_list(vdevs_tree))

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyUnicode_FromString(__pyx_v_command); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_history_vdevs_list); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_7, function);
        }
      }
      if (!__pyx_t_8) {
        __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_vdevs_tree); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      } else {
        __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_v_vdevs_tree);
        __Pyx_GIVEREF(__pyx_v_vdevs_tree);
        PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_v_vdevs_tree);
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1804, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      }
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_10, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_10, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_10, __pyx_t_6);
      __pyx_t_4 = 0;
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1804, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1805:

    +1806:     def vdev_by_guid(self, guid):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_17vdev_by_guid(PyObject *__pyx_v_self, PyObject *__pyx_v_guid); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_17vdev_by_guid(PyObject *__pyx_v_self, PyObject *__pyx_v_guid) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("vdev_by_guid (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_16vdev_by_guid(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self), ((PyObject *)__pyx_v_guid));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    static PyObject *__pyx_pf_6libzfs_7ZFSPool_16vdev_by_guid(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self, PyObject *__pyx_v_guid) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid *__pyx_cur_scope;
      PyObject *__pyx_v_g = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("vdev_by_guid", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid *)__pyx_tp_new_6libzfs___pyx_scope_struct_13_vdev_by_guid(__pyx_ptype_6libzfs___pyx_scope_struct_13_vdev_by_guid, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSPool.vdev_by_guid", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_g);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid {
      PyObject_HEAD
      PyObject *__pyx_v_search_vdev;
    };

    +1807:         def search_vdev(vdev, g):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_12vdev_by_guid_1search_vdev(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_7ZFSPool_12vdev_by_guid_1search_vdev = {"search_vdev", (PyCFunction)__pyx_pw_6libzfs_7ZFSPool_12vdev_by_guid_1search_vdev, METH_VARARGS|METH_KEYWORDS, 0};
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_12vdev_by_guid_1search_vdev(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_vdev = 0;
      PyObject *__pyx_v_g = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("search_vdev (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vdev,&__pyx_n_s_g,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vdev)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("search_vdev", 1, 2, 2, 1); __PYX_ERR(1, 1807, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "search_vdev") < 0)) __PYX_ERR(1, 1807, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_vdev = values[0];
        __pyx_v_g = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("search_vdev", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 1807, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSPool.vdev_by_guid.search_vdev", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_12vdev_by_guid_search_vdev(__pyx_self, __pyx_v_vdev, __pyx_v_g);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_12vdev_by_guid_search_vdev(PyObject *__pyx_self, PyObject *__pyx_v_vdev, PyObject *__pyx_v_g) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid *__pyx_outer_scope;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("search_vdev", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_13_vdev_by_guid *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.vdev_by_guid.search_vdev", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__47 = PyTuple_Pack(4, __pyx_n_s_vdev, __pyx_n_s_g, __pyx_n_s_i, __pyx_n_s_ret); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(1, 1807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__47);
      __Pyx_GIVEREF(__pyx_tuple__47);
    /* … */
      __pyx_t_1 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_7ZFSPool_12vdev_by_guid_1search_vdev, 0, __pyx_n_s_vdev_by_guid_locals_search_vdev, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__48)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1807, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_search_vdev = __pyx_t_1;
      __pyx_t_1 = 0;
      __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_search_vdev, 1807, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(1, 1807, __pyx_L1_error)

    +1808:             if vdev.guid == g:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_vdev, __pyx_n_s_guid); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1808, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_v_g, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1808, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1808, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1809:                 return vdev

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_vdev);
        __pyx_r = __pyx_v_vdev;
        goto __pyx_L0;

     1810:

    +1811:             for i in vdev.children:

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_vdev, __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1811, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
        __pyx_t_5 = NULL;
      } else {
        __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1811, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1811, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_5)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1811, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1811, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1811, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1811, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_5(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1811, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1812:                 ret = search_vdev(i, g)

        if (unlikely(!__pyx_cur_scope->__pyx_v_search_vdev)) { __Pyx_RaiseClosureNameError("search_vdev"); __PYX_ERR(1, 1812, __pyx_L1_error) }
        __pyx_t_2 = __pyx_pf_6libzfs_7ZFSPool_12vdev_by_guid_search_vdev(__pyx_cur_scope->__pyx_v_search_vdev, __pyx_v_i, __pyx_v_g); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1812, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_XDECREF_SET(__pyx_v_ret, __pyx_t_2);
        __pyx_t_2 = 0;

    +1813:                 if ret:

        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ret); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1813, __pyx_L1_error)
        if (__pyx_t_3) {
    /* … */
        }

    +1814:                     return ret

          __Pyx_XDECREF(__pyx_r);
          __Pyx_INCREF(__pyx_v_ret);
          __pyx_r = __pyx_v_ret;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          goto __pyx_L0;

     1815:

    +1816:             return None

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;

     1817:

    +1818:         if guid == self.root_vdev.guid:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_root_vdev); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1818, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_guid); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1818, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyObject_RichCompare(__pyx_v_guid, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1818, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1818, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_3) {
    /* … */
      }

    +1819:             return self.root_vdev

        __Pyx_XDECREF(__pyx_r);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_root_vdev); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1819, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_r = __pyx_t_1;
        __pyx_t_1 = 0;
        goto __pyx_L0;

     1820:

    +1821:         for g in (self.data_vdevs, self.cache_vdevs, self.log_vdevs, self.spare_vdevs):

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_data_vdevs); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1821, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_cache_vdevs); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1821, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log_vdevs); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1821, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_spare_vdevs); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1821, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = PyTuple_New(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1821, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_6, 3, __pyx_t_5);
      __pyx_t_1 = 0;
      __pyx_t_2 = 0;
      __pyx_t_4 = 0;
      __pyx_t_5 = 0;
      __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      for (;;) {
        if (__pyx_t_7 >= 4) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 1821, __pyx_L1_error)
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1821, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_XDECREF_SET(__pyx_v_g, __pyx_t_6);
        __pyx_t_6 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +1822:             for i in g:

        if (likely(PyList_CheckExact(__pyx_v_g)) || PyTuple_CheckExact(__pyx_v_g)) {
          __pyx_t_6 = __pyx_v_g; __Pyx_INCREF(__pyx_t_6); __pyx_t_8 = 0;
          __pyx_t_9 = NULL;
        } else {
          __pyx_t_8 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_g); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1822, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_9 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1822, __pyx_L1_error)
        }
        for (;;) {
          if (likely(!__pyx_t_9)) {
            if (likely(PyList_CheckExact(__pyx_t_6))) {
              if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_6)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_4 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 1822, __pyx_L1_error)
              #else
              __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1822, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
            } else {
              if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(1, 1822, __pyx_L1_error)
              #else
              __pyx_t_4 = PySequence_ITEM(__pyx_t_6, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1822, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_4);
              #endif
            }
          } else {
            __pyx_t_4 = __pyx_t_9(__pyx_t_6);
            if (unlikely(!__pyx_t_4)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 1822, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_4);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
          __pyx_t_4 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +1823:                 ret = search_vdev(i, guid)

          __pyx_t_4 = __pyx_pf_6libzfs_7ZFSPool_12vdev_by_guid_search_vdev(__pyx_cur_scope->__pyx_v_search_vdev, __pyx_v_i, __pyx_v_guid); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1823, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_XDECREF_SET(__pyx_v_ret, __pyx_t_4);
          __pyx_t_4 = 0;

    +1824:                 if ret:

          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_ret); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 1824, __pyx_L1_error)
          if (__pyx_t_3) {
    /* … */
          }

    +1825:                     return ret

            __Pyx_XDECREF(__pyx_r);
            __Pyx_INCREF(__pyx_v_ret);
            __pyx_r = __pyx_v_ret;
            __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
            goto __pyx_L0;

     1826:

    +1827:     def delete(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_19delete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_19delete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_18delete(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_18delete(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPool.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1828:         cdef int ret

     1829:

    +1830:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1831:             ret = libzfs.zpool_destroy(self.handle, "destroy")

            __pyx_v_ret = zpool_destroy(__pyx_v_self->handle, ((char const *)"destroy"));
          }

     1832:

    +1833:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1834:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1834, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1834, __pyx_L1_error)

     1835:

    +1836:     def start_scrub(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_21start_scrub(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_21start_scrub(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("start_scrub (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_20start_scrub(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_20start_scrub(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("start_scrub", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSPool.start_scrub", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1837:         cdef int ret

     1838:

    +1839:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1840:             ret = libzfs.zpool_scan(self.handle, zfs.POOL_SCAN_SCRUB)

            __pyx_v_ret = zpool_scan(__pyx_v_self->handle, POOL_SCAN_SCRUB);
          }

     1841:

    +1842:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1843:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1843, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1843, __pyx_L1_error)

     1844:

    +1845:         self.root.write_history('zpool scrub', self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_scrub);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_scrub);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zpool_scrub);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     1846:

    +1847:     def stop_scrub(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_23stop_scrub(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_23stop_scrub(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("stop_scrub (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_22stop_scrub(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_22stop_scrub(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("stop_scrub", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSPool.stop_scrub", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1848:         cdef int ret

     1849:

    +1850:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1851:             ret = libzfs.zpool_scan(self.handle, zfs.POOL_SCAN_NONE)

            __pyx_v_ret = zpool_scan(__pyx_v_self->handle, POOL_SCAN_NONE);
          }

     1852:

    +1853:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1854:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1854, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1854, __pyx_L1_error)

     1855:

    +1856:         self.root.write_history('zpool scrub -s', self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_scrub_s);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_scrub_s);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zpool_scrub_s);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     1857:

    +1858:     def clear(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_25clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_25clear(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clear (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_24clear(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_24clear(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_policy = 0;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clear", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSPool.clear", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_policy);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1859:         cdef NVList policy = NVList()

      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1859, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_policy = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

     1860:         cdef int ret

    +1861:         policy["rewind-request"] = zfs.ZPOOL_NO_REWIND

      __pyx_t_1 = __Pyx_PyInt_From_int(ZPOOL_NO_REWIND); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1861, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_policy), __pyx_kp_s_rewind_request, __pyx_t_1) < 0)) __PYX_ERR(1, 1861, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1862:

    +1863:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1864:             ret = libzfs.zpool_clear(self.handle, NULL, policy.handle)

            __pyx_v_ret = zpool_clear(__pyx_v_self->handle, NULL, __pyx_v_policy->handle);
          }

     1865:

    +1866:         self.root.write_history('zpool clear', self.name)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_clear);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_clear);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_kp_s_zpool_clear);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1866, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1867:         return ret == 0

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_ret == 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1867, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1868:

    +1869:     def upgrade(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_27upgrade(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_7ZFSPool_27upgrade(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("upgrade (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_7ZFSPool_26upgrade(((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_7ZFSPool_26upgrade(struct __pyx_obj_6libzfs_ZFSPool *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("upgrade", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSPool.upgrade", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1870:         cdef int ret

     1871:

    +1872:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1873:             ret = libzfs.zpool_upgrade(self.handle, zfs.SPA_VERSION)

            __pyx_v_ret = zpool_upgrade(__pyx_v_self->handle, SPA_VERSION);
          }

     1874:

    +1875:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +1876:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1876, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 1876, __pyx_L1_error)

     1877:

    +1878:         for i in self.features:

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_features); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1878, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
        __pyx_t_5 = NULL;
      } else {
        __pyx_t_4 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1878, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1878, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_5)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1878, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1878, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(1, 1878, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1878, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_5(__pyx_t_3);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1878, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +1879:             if i.state == FeatureState.DISABLED:

        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_state); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_FeatureState); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_DISABLED); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1879, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1879, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1879, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (__pyx_t_1) {
    /* … */
        }

    +1880:                 i.enable()

          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_enable); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1880, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_2 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_2)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_2);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (__pyx_t_2) {
            __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1880, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          } else {
            __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1880, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

     1881:

    +1882:         self.root.write_history('zpool upgrade', self.name)

      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_6, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zpool_upgrade);
      __Pyx_GIVEREF(__pyx_kp_s_zpool_upgrade);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_kp_s_zpool_upgrade);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1882, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1883:

     1884:

    +1885: cdef class ZFSImportablePool(ZFSPool):

    struct __pyx_obj_6libzfs_ZFSImportablePool {
      struct __pyx_obj_6libzfs_ZFSPool __pyx_base;
      struct __pyx_obj_6libzfs_NVList *nvlist;
      PyObject *name;
    };
    /* … */
    struct __pyx_vtabstruct_6libzfs_ZFSImportablePool {
      struct __pyx_vtabstruct_6libzfs_ZFSPool __pyx_base;
    };
    static struct __pyx_vtabstruct_6libzfs_ZFSImportablePool *__pyx_vtabptr_6libzfs_ZFSImportablePool;

     1886:     cdef NVList nvlist

    +1887:     cdef public object name

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_4name___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_4name___get__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_self->name);
      __pyx_r = __pyx_v_self->name;
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    /* Python wrapper */
    static int __pyx_pw_6libzfs_17ZFSImportablePool_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_17ZFSImportablePool_4name_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_4name_2__set__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_17ZFSImportablePool_4name_2__set__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__set__", 0);
      __Pyx_INCREF(__pyx_v_value);
      __Pyx_GIVEREF(__pyx_v_value);
      __Pyx_GOTREF(__pyx_v_self->name);
      __Pyx_DECREF(__pyx_v_self->name);
      __pyx_v_self->name = __pyx_v_value;

      /* function exit code */
      __pyx_r = 0;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    /* Python wrapper */
    static int __pyx_pw_6libzfs_17ZFSImportablePool_4name_5__del__(PyObject *__pyx_v_self); /*proto*/
    static int __pyx_pw_6libzfs_17ZFSImportablePool_4name_5__del__(PyObject *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_4name_4__del__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_17ZFSImportablePool_4name_4__del__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__del__", 0);
      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __Pyx_GOTREF(__pyx_v_self->name);
      __Pyx_DECREF(__pyx_v_self->name);
      __pyx_v_self->name = Py_None;

      /* function exit code */
      __pyx_r = 0;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1888:

    +1889:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_1__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_1__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool___str__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool___str__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1890:         return "<libzfs.ZFSImportablePool name '{0}' guid '{1}'>".format(self.name, self.guid)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_ZFSImportablePool_name_0, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_guid); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_INCREF(__pyx_v_self->name);
      __Pyx_GIVEREF(__pyx_v_self->name);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_self->name);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1890, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1891:

    +1892:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_3__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_3__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_2__repr__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_2__repr__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1893:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1893, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1893, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1894:

     1895:     property config:

    +1896:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_6config_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_6config_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_6config___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_6config___get__(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.config.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1897:             return dict(self.nvlist)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1897, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->nvlist));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self->nvlist));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self->nvlist));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1897, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     1898:

     1899:     property properties:

    +1900:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_10properties_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_10properties_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_10properties___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_10properties___get__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1901:             return None

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;

     1902:

     1903:     property root_dataset:

    +1904:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_12root_dataset_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_12root_dataset_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_12root_dataset___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_12root_dataset___get__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1905:             return None

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;

     1906:

     1907:     property error_count:

    +1908:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_11error_count_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_11error_count_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_11error_count___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_11error_count___get__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1909:             return 0

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_int_0);
      __pyx_r = __pyx_int_0;
      goto __pyx_L0;

     1910:

     1911:     property features:

    +1912:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_8features_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_8features_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_8features___get__(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_8features___get__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1913:             return None

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_None);
      __pyx_r = Py_None;
      goto __pyx_L0;

     1914:

    +1915:     cdef NVList get_raw_config(self):

    static struct __pyx_obj_6libzfs_NVList *__pyx_f_6libzfs_17ZFSImportablePool_get_raw_config(struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self) {
      struct __pyx_obj_6libzfs_NVList *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_raw_config", 0);
    /* … */
      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF((PyObject *)__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1916:         return self.nvlist

      __Pyx_XDECREF(((PyObject *)__pyx_r));
      __Pyx_INCREF(((PyObject *)__pyx_v_self->nvlist));
      __pyx_r = __pyx_v_self->nvlist;
      goto __pyx_L0;

     1917:

    +1918:     def create(self, *args, **kwargs):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_5create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_5create(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      CYTHON_UNUSED PyObject *__pyx_v_args = 0;
      CYTHON_UNUSED PyObject *__pyx_v_kwargs = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create (wrapper)", 0);
      if (unlikely(__pyx_kwds) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "create", 1))) return NULL;
      __Pyx_INCREF(__pyx_args);
      __pyx_v_args = __pyx_args;
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_4create(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self), __pyx_v_args, __pyx_v_kwargs);

      /* function exit code */
      __Pyx_XDECREF(__pyx_v_args);
      __Pyx_XDECREF(__pyx_v_kwargs);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_4create(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_args, CYTHON_UNUSED PyObject *__pyx_v_kwargs) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("create", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.create", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1919:         raise NotImplementedError()

      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1919, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 1919, __pyx_L1_error)

     1920:

    +1921:     def destroy(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_7destroy(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_7destroy(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_6destroy(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_6destroy(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_name) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.destroy", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1922:         raise NotImplementedError()

      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1922, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 1922, __pyx_L1_error)

     1923:

    +1924:     def attach_vdev(self, vdev):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_9attach_vdev(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev); /*proto*/
    static PyObject *__pyx_pw_6libzfs_17ZFSImportablePool_9attach_vdev(PyObject *__pyx_v_self, PyObject *__pyx_v_vdev) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach_vdev (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_17ZFSImportablePool_8attach_vdev(((struct __pyx_obj_6libzfs_ZFSImportablePool *)__pyx_v_self), ((PyObject *)__pyx_v_vdev));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_17ZFSImportablePool_8attach_vdev(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSImportablePool *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_vdev) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("attach_vdev", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSImportablePool.attach_vdev", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1925:         raise NotImplementedError()

      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1925, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 1925, __pyx_L1_error)

     1926:

     1927:

    +1928: cdef class ZFSPropertyDict(dict):

    struct __pyx_obj_6libzfs_ZFSPropertyDict {
      PyDictObject __pyx_base;
      struct __pyx_obj_6libzfs_ZFSObject *parent;
      PyObject *props;
    };

     1929:     cdef ZFSObject parent

     1930:     cdef object props

     1931:

    +1932:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_1__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_1__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict___repr__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict___repr__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_v_k = NULL;
      PyObject *__pyx_v_v = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_k);
      __Pyx_XDECREF(__pyx_v_v);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1933:         return '{' + ', '.join(["'{0}': {1}".format(k, repr(v)) for k, v in self.items()]) + '}'

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1933, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_items); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1933, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (__pyx_t_4) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1933, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
      } else {
        __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1933, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_6)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1933, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1933, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 1933, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1933, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_6(__pyx_t_3);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1933, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
          PyObject* sequence = __pyx_t_2;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(1, 1933, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
          } else {
            __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
            __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
          }
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_7);
          #else
          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1933, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1933, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1933, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
          index = 0; __pyx_t_4 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_4);
          index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(1, 1933, __pyx_L1_error)
          __pyx_t_9 = NULL;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L6_unpacking_done;
          __pyx_L5_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_9 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(1, 1933, __pyx_L1_error)
          __pyx_L6_unpacking_done:;
        }
        __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_4);
        __pyx_t_4 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
        __pyx_t_7 = 0;
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_1, __pyx_n_s_format); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_4 = PyObject_Repr(__pyx_v_v); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = NULL;
        __pyx_t_10 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
            __pyx_t_10 = 1;
          }
        }
        __pyx_t_11 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        if (__pyx_t_8) {
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
        }
        __Pyx_INCREF(__pyx_v_k);
        __Pyx_GIVEREF(__pyx_v_k);
        PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_k);
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 1933, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyString_Join(__pyx_kp_s__50, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1933, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyNumber_Add(__pyx_kp_s__49, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1933, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_kp_s__51); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1933, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     1934:

    +1935:     def refresh(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_3refresh(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_3refresh(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("refresh (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_2refresh(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_2refresh(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      struct __pyx_obj_6libzfs_ZFSProperty *__pyx_v_prop = 0;
      struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_userprop = 0;
      nvlist_t *__pyx_v_nvlist;
      PyObject *__pyx_v_proptypes = NULL;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_nvl = NULL;
      PyObject *__pyx_v_x = NULL;
      PyObject *__pyx_v_k = NULL;
      PyObject *__pyx_v_v = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("refresh", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.refresh", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_prop);
      __Pyx_XDECREF((PyObject *)__pyx_v_userprop);
      __Pyx_XDECREF(__pyx_v_proptypes);
      __Pyx_XDECREF((PyObject *)__pyx_v_nvl);
      __Pyx_XDECREF(__pyx_v_x);
      __Pyx_XDECREF(__pyx_v_k);
      __Pyx_XDECREF(__pyx_v_v);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     1936:         cdef ZFSProperty prop

     1937:         cdef ZFSUserProperty userprop

     1938:         cdef nvpair.nvlist_t *nvlist

     1939:

    +1940:         proptypes = self.parent.root.proptypes[self.parent.type]

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = PyObject_GetItem(__pyx_v_self->parent->root->proptypes, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1940, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_proptypes = __pyx_t_2;
      __pyx_t_2 = 0;

    +1941:         self.props = {}

      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1941, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __Pyx_GOTREF(__pyx_v_self->props);
      __Pyx_DECREF(__pyx_v_self->props);
      __pyx_v_self->props = __pyx_t_2;
      __pyx_t_2 = 0;

     1942:

    +1943:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +1944:             nvlist = libzfs.zfs_get_user_props(self.parent.handle)

            __pyx_v_nvlist = zfs_get_user_props(__pyx_v_self->parent->handle);
          }

     1945:

    +1946:         nvl = NVList(<uintptr_t>nvlist)

      __pyx_t_2 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_nvlist)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1946, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1946, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1946, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_nvl = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

     1947:

    +1948:         for x in proptypes:

      if (likely(PyList_CheckExact(__pyx_v_proptypes)) || PyTuple_CheckExact(__pyx_v_proptypes)) {
        __pyx_t_2 = __pyx_v_proptypes; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_proptypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1948, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1948, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1948, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1948, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1948, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1948, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1948, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_x, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +1949:             prop = ZFSProperty.__new__(ZFSProperty)

        __pyx_t_1 = __pyx_tp_new_6libzfs_ZFSProperty(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSProperty), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1949, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZFSProperty)))) __PYX_ERR(1, 1949, __pyx_L1_error)
        __Pyx_XDECREF_SET(__pyx_v_prop, ((struct __pyx_obj_6libzfs_ZFSProperty *)__pyx_t_1));
        __pyx_t_1 = 0;

    +1950:             prop.dataset = self.parent

        __pyx_t_1 = ((PyObject *)__pyx_v_self->parent);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_GOTREF(__pyx_v_prop->dataset);
        __Pyx_DECREF(((PyObject *)__pyx_v_prop->dataset));
        __pyx_v_prop->dataset = ((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_t_1);
        __pyx_t_1 = 0;

    +1951:             prop.propid = x

        __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_x); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 1951, __pyx_L1_error)
        __pyx_v_prop->propid = __pyx_t_5;

    +1952:             prop.refresh()

        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_prop), __pyx_n_s_refresh); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1952, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_7)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_7);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (__pyx_t_7) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1952, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        } else {
          __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1952, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1953:             self.props[prop.name] = prop

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_prop), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1953, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (unlikely(PyObject_SetItem(__pyx_v_self->props, __pyx_t_1, ((PyObject *)__pyx_v_prop)) < 0)) __PYX_ERR(1, 1953, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     1954:

    +1955:         for k, v in nvl.items():

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_nvl), __pyx_n_s_items); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1955, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (__pyx_t_6) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1955, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1955, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1955, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1955, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1955, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1955, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 1955, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1955, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_4(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1955, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
          PyObject* sequence = __pyx_t_2;
          #if CYTHON_COMPILING_IN_CPYTHON
          Py_ssize_t size = Py_SIZE(sequence);
          #else
          Py_ssize_t size = PySequence_Size(sequence);
          #endif
          if (unlikely(size != 2)) {
            if (size > 2) __Pyx_RaiseTooManyValuesError(2);
            else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
            __PYX_ERR(1, 1955, __pyx_L1_error)
          }
          #if CYTHON_COMPILING_IN_CPYTHON
          if (likely(PyTuple_CheckExact(sequence))) {
            __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0);
            __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1);
          } else {
            __pyx_t_6 = PyList_GET_ITEM(sequence, 0);
            __pyx_t_7 = PyList_GET_ITEM(sequence, 1);
          }
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_7);
          #else
          __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 1955, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1955, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          #endif
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        } else {
          Py_ssize_t index = -1;
          __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1955, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
          index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L10_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_6);
          index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L10_unpacking_failed;
          __Pyx_GOTREF(__pyx_t_7);
          if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(1, 1955, __pyx_L1_error)
          __pyx_t_9 = NULL;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          goto __pyx_L11_unpacking_done;
          __pyx_L10_unpacking_failed:;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __pyx_t_9 = NULL;
          if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
          __PYX_ERR(1, 1955, __pyx_L1_error)
          __pyx_L11_unpacking_done:;
        }
        __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_6);
        __pyx_t_6 = 0;
        __Pyx_XDECREF_SET(__pyx_v_v, __pyx_t_7);
        __pyx_t_7 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1956:             userprop = ZFSUserProperty.__new__(ZFSUserProperty)

        __pyx_t_2 = __pyx_tp_new_6libzfs_ZFSUserProperty(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSUserProperty), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1956, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (!(likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6libzfs_ZFSUserProperty)))) __PYX_ERR(1, 1956, __pyx_L1_error)
        __Pyx_XDECREF_SET(__pyx_v_userprop, ((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_t_2));
        __pyx_t_2 = 0;

    +1957:             userprop.dataset = self.parent

        __pyx_t_2 = ((PyObject *)__pyx_v_self->parent);
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_v_userprop->__pyx_base.dataset);
        __Pyx_DECREF(((PyObject *)__pyx_v_userprop->__pyx_base.dataset));
        __pyx_v_userprop->__pyx_base.dataset = ((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_t_2);
        __pyx_t_2 = 0;

    +1958:             userprop.name = k

        __Pyx_INCREF(__pyx_v_k);
        __Pyx_GIVEREF(__pyx_v_k);
        __Pyx_GOTREF(__pyx_v_userprop->name);
        __Pyx_DECREF(__pyx_v_userprop->name);
        __pyx_v_userprop->name = __pyx_v_k;

    +1959:             userprop.values = v

        if (!(likely(PyDict_CheckExact(__pyx_v_v))||((__pyx_v_v) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "dict", Py_TYPE(__pyx_v_v)->tp_name), 0))) __PYX_ERR(1, 1959, __pyx_L1_error)
        __pyx_t_2 = __pyx_v_v;
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_GOTREF(__pyx_v_userprop->values);
        __Pyx_DECREF(__pyx_v_userprop->values);
        __pyx_v_userprop->values = ((PyObject*)__pyx_t_2);
        __pyx_t_2 = 0;

    +1960:             self.props[userprop.name] = userprop

        if (unlikely(PyObject_SetItem(__pyx_v_self->props, __pyx_v_userprop->name, ((PyObject *)__pyx_v_userprop)) < 0)) __PYX_ERR(1, 1960, __pyx_L1_error)

     1961:

    +1962:     def __delitem__(self, key):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_5__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_5__delitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__delitem__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_4__delitem__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), ((PyObject *)__pyx_v_key));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_15ZFSPropertyDict_4__delitem__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_key) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__delitem__", 0);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__delitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1963:         if key not in self.props:

      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_v_self->props, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 1963, __pyx_L1_error)
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1964:             raise KeyError(key)

        __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1964, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_v_key);
        __Pyx_GIVEREF(__pyx_v_key);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_key);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_KeyError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1964, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(1, 1964, __pyx_L1_error)

     1965:

    +1966:         self.props[key].inherit(recursive=True)

      __pyx_t_4 = PyObject_GetItem(__pyx_v_self->props, __pyx_v_key); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_inherit); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_recursive, Py_True) < 0) __PYX_ERR(1, 1966, __pyx_L1_error)
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 1966, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

     1967:

    +1968:     def __getitem__(self, item):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_7__getitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_item) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getitem__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_6__getitem__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), ((PyObject *)__pyx_v_item));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_6__getitem__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_item) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getitem__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__getitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +1969:         return self.props[item]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyObject_GetItem(__pyx_v_self->props, __pyx_v_item); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1969, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     1970:

    +1971:     def __setitem__(self, key, value):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value); /*proto*/
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_9__setitem__(PyObject *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__setitem__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_8__setitem__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), ((PyObject *)__pyx_v_key), ((PyObject *)__pyx_v_value));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_15ZFSPropertyDict_8__setitem__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_key, PyObject *__pyx_v_value) {
      struct __pyx_obj_6libzfs_ZFSUserProperty *__pyx_v_userprop = 0;
      int __pyx_v_ret;
      char const *__pyx_v_c_key;
      char const *__pyx_v_c_value;
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__setitem__", 0);
      __Pyx_INCREF(__pyx_v_value);
    /* … */
      /* function exit code */
      __pyx_r = 0;
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__setitem__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_userprop);
      __Pyx_XDECREF(__pyx_v_value);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_15ZFSPropertyDict_12generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

     1972:         cdef ZFSUserProperty userprop

     1973:         cdef int ret

     1974:         cdef const char *c_key

     1975:         cdef const char *c_value

     1976:

    +1977:         if type(value) is not ZFSUserProperty:

      __pyx_t_1 = (((PyObject *)Py_TYPE(__pyx_v_value)) != ((PyObject *)__pyx_ptype_6libzfs_ZFSUserProperty));
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +1978:             raise ValueError('Value should be of type ZFSUserProperty')

        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1978, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 1978, __pyx_L1_error)
    /* … */
      __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_Value_should_be_of_type_ZFSUserP); if (unlikely(!__pyx_tuple__52)) __PYX_ERR(1, 1978, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__52);
      __Pyx_GIVEREF(__pyx_tuple__52);

     1979:

    +1980:         userprop = <ZFSUserProperty>value

      __pyx_t_3 = __pyx_v_value;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_v_userprop = ((struct __pyx_obj_6libzfs_ZFSUserProperty *)__pyx_t_3);
      __pyx_t_3 = 0;

    +1981:         if userprop.dataset is None:

      __pyx_t_2 = (((PyObject *)__pyx_v_userprop->__pyx_base.dataset) == Py_None);
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

     1982:             # detached user property

    +1983:             userprop.dataset = self.parent

        __pyx_t_3 = ((PyObject *)__pyx_v_self->parent);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_3);
        __Pyx_GOTREF(__pyx_v_userprop->__pyx_base.dataset);
        __Pyx_DECREF(((PyObject *)__pyx_v_userprop->__pyx_base.dataset));
        __pyx_v_userprop->__pyx_base.dataset = ((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_t_3);
        __pyx_t_3 = 0;

    +1984:             value = str(userprop.value)

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_userprop), __pyx_n_s_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1984, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1984, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1984, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_3);
        __pyx_t_3 = 0;

    +1985:             c_key = key

        __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_key); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 1985, __pyx_L1_error)
        __pyx_v_c_key = __pyx_t_5;

    +1986:             c_value = value

        __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(1, 1986, __pyx_L1_error)
        __pyx_v_c_value = __pyx_t_6;

     1987:

    +1988:             with nogil:

        {
            #ifdef WITH_THREAD
            PyThreadState *_save;
            Py_UNBLOCK_THREADS
            #endif
            /*try:*/ {
    /* … */
            /*finally:*/ {
              /*normal exit:*/{
                #ifdef WITH_THREAD
                Py_BLOCK_THREADS
                #endif
                goto __pyx_L7;
              }
              __pyx_L7:;
            }
        }

    +1989:                 ret = libzfs.zfs_prop_set(self.parent.handle, c_key, c_value)

              __pyx_v_ret = zfs_prop_set(__pyx_v_self->parent->handle, __pyx_v_c_key, __pyx_v_c_value);
            }

     1990:

    +1991:             if ret != 0:

        __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
        if (__pyx_t_1) {
    /* … */
        }

    +1992:                 raise self.parent.root.get_error()

          __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->parent->root->__pyx_vtab)->get_error(__pyx_v_self->parent->root); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1992, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_Raise(__pyx_t_3, 0, 0, 0);
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __PYX_ERR(1, 1992, __pyx_L1_error)

     1993:

    +1994:         self.props[key] = userprop

      if (unlikely(PyObject_SetItem(__pyx_v_self->props, __pyx_v_key, ((PyObject *)__pyx_v_userprop)) < 0)) __PYX_ERR(1, 1994, __pyx_L1_error)

    +1995:         self.parent.root.write_history('zfs set', (str(key), str(userprop.value)), self.parent.name)

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_key);
      __Pyx_GIVEREF(__pyx_v_key);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_key);
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_userprop), __pyx_n_s_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_9, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_9 = PyTuple_New(2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_7);
      __pyx_t_8 = 0;
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->parent), __pyx_n_s_name_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_8)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_8);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_8) {
        __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_set);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_set);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_s_zfs_set);
      __Pyx_GIVEREF(__pyx_t_9);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
      __pyx_t_9 = 0;
      __pyx_t_7 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1995, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     1996:

    +1997:     def __iter__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_11__iter__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_11__iter__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_10__iter__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_10__iter__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_14___iter__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__iter__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_14___iter__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_14___iter__(__pyx_ptype_6libzfs___pyx_scope_struct_14___iter__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_15ZFSPropertyDict_12generator12, (PyObject *) __pyx_cur_scope, __pyx_n_s_iter, __pyx_n_s_ZFSPropertyDict___iter); if (unlikely(!gen)) __PYX_ERR(1, 1997, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_15ZFSPropertyDict_12generator12(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1997, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_14___iter__ {
      PyObject_HEAD
      PyObject *__pyx_v_i;
      struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
    };

    +1998:         for i in self.props:

      if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_self->props)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_self->props)) {
        __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->props; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
        __pyx_t_3 = NULL;
      } else {
        __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_self->props); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 1998, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1998, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_3)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 1998, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1998, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          } else {
            if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(1, 1998, __pyx_L1_error)
            #else
            __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 1998, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_4);
            #endif
          }
        } else {
          __pyx_t_4 = __pyx_t_3(__pyx_t_1);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 1998, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_4);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_4);
        __pyx_t_4 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +1999:             yield  i

        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_i);
        __pyx_r = __pyx_cur_scope->__pyx_v_i;
        __Pyx_XGIVEREF(__pyx_t_1);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_3;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L6_resume_from_yield:;
        __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_1);
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 1999, __pyx_L1_error)

     2000:

    +2001:     def get(self, k, d=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_14get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_14get(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_k = 0;
      PyObject *__pyx_v_d = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_d,0};
        PyObject* values[2] = {0,0};
        values[1] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(1, 2001, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_k = values[0];
        __pyx_v_d = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2001, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_13get(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), __pyx_v_k, __pyx_v_d);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_13get(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_k, PyObject *__pyx_v_d) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2002:         return self.props.get(k, d)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_get); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2002, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      __pyx_t_4 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_4 = 1;
        }
      }
      __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2002, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (__pyx_t_3) {
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
      }
      __Pyx_INCREF(__pyx_v_k);
      __Pyx_GIVEREF(__pyx_v_k);
      PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_k);
      __Pyx_INCREF(__pyx_v_d);
      __Pyx_GIVEREF(__pyx_v_d);
      PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_d);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2002, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2003:

    +2004:     def setdefault(self, k, d=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_16setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_16setdefault(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      CYTHON_UNUSED PyObject *__pyx_v_k = 0;
      CYTHON_UNUSED PyObject *__pyx_v_d = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("setdefault (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_d,0};
        PyObject* values[2] = {0,0};
        values[1] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "setdefault") < 0)) __PYX_ERR(1, 2004, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_k = values[0];
        __pyx_v_d = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("setdefault", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2004, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.setdefault", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_15setdefault(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), __pyx_v_k, __pyx_v_d);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_15setdefault(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_k, CYTHON_UNUSED PyObject *__pyx_v_d) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("setdefault", 0);

      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2005:         pass

     2006:

    +2007:     def keys(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_18keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_18keys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("keys (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_17keys(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_17keys(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("keys", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.keys", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2008:         return self.props.keys()

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_keys); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2008, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2008, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2008, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2009:

    +2010:     def values(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_20values(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_20values(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("values (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_19values(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_19values(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("values", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.values", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2011:         return self.props.values()

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_values); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2011, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2011, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2011, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2012:

    +2013:     def iterkeys(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_22iterkeys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_22iterkeys(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("iterkeys (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_21iterkeys(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_21iterkeys(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("iterkeys", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.iterkeys", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2014:         return self.props.iterkeys()

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_iterkeys); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2014, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2014, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2014, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2015:

    +2016:     def itervalues(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_24itervalues(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_24itervalues(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("itervalues (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_23itervalues(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_23itervalues(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("itervalues", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.itervalues", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2017:         return self.props.itervalues()

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_itervalues); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2017, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2017, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2017, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2018:

    +2019:     def has_key(self, key):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_26has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_26has_key(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("has_key (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_25has_key(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), ((PyObject *)__pyx_v_key));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_25has_key(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_key) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("has_key", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.has_key", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2020:         return key in self.props

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_v_self->props, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2020, __pyx_L1_error)
      __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2020, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     2021:

    +2022:     def items(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_28items(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_28items(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("items (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_27items(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_27items(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("items", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.items", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2023:         return self.props.items()

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->props, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2023, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2023, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2023, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2024:

    +2025:     def update(self, E=None, **F):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_30update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_15ZFSPropertyDict_30update(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      CYTHON_UNUSED PyObject *__pyx_v_E = 0;
      CYTHON_UNUSED PyObject *__pyx_v_F = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("update (wrapper)", 0);
      __pyx_v_F = PyDict_New(); if (unlikely(!__pyx_v_F)) return NULL;
      __Pyx_GOTREF(__pyx_v_F);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_E,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_E);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_F, values, pos_args, "update") < 0)) __PYX_ERR(1, 2025, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_E = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("update", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2025, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_DECREF(__pyx_v_F); __pyx_v_F = 0;
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_29update(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), __pyx_v_E, __pyx_v_F);

      /* function exit code */
      __Pyx_XDECREF(__pyx_v_F);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_15ZFSPropertyDict_29update(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_E, CYTHON_UNUSED PyObject *__pyx_v_F) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("update", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.update", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2026:         raise NotImplementedError()

      __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_builtin_NotImplementedError); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2026, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 2026, __pyx_L1_error)

     2027:

    +2028:     def __contains__(self, key):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_32__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key); /*proto*/
    static int __pyx_pw_6libzfs_15ZFSPropertyDict_32__contains__(PyObject *__pyx_v_self, PyObject *__pyx_v_key) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__contains__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_15ZFSPropertyDict_31__contains__(((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_v_self), ((PyObject *)__pyx_v_key));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_15ZFSPropertyDict_31__contains__(struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_self, PyObject *__pyx_v_key) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__contains__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSPropertyDict.__contains__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2029:         return key in self.props

      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, __pyx_v_self->props, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2029, __pyx_L1_error)
      __pyx_r = __pyx_t_1;
      goto __pyx_L0;

     2030:

     2031:

    +2032: cdef class ZFSObject(object):

    struct __pyx_obj_6libzfs_ZFSObject {
      PyObject_HEAD
      zfs_handle_t *handle;
      struct __pyx_obj_6libzfs_ZFS *root;
      struct __pyx_obj_6libzfs_ZFSPool *pool;
    };

     2033:     cdef libzfs.zfs_handle_t* handle

    +2034:     cdef readonly ZFS root

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4root_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4root_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_4root___get__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_4root___get__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->root));
      __pyx_r = ((PyObject *)__pyx_v_self->root);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2035:     cdef readonly ZFSPool pool

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4pool_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4pool_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_4pool___get__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_4pool___get__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_self->pool));
      __pyx_r = ((PyObject *)__pyx_v_self->pool);
      goto __pyx_L0;

      /* function exit code */
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2036:

    +2037:     def __init__(self):

    /* Python wrapper */
    static int __pyx_pw_6libzfs_9ZFSObject_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static int __pyx_pw_6libzfs_9ZFSObject_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
      if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
        __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
      if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject___init__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static int __pyx_pf_6libzfs_9ZFSObject___init__(CYTHON_UNUSED struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      int __pyx_r;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__init__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSObject.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = -1;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2038:         raise RuntimeError('ZFSObject cannot be instantiated by the user')

      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(1, 2038, __pyx_L1_error)
    /* … */
      __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_ZFSObject_cannot_be_instantiated); if (unlikely(!__pyx_tuple__53)) __PYX_ERR(1, 2038, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__53);
      __Pyx_GIVEREF(__pyx_tuple__53);

     2039:

    +2040:     def __dealloc__(self):

    /* Python wrapper */
    static void __pyx_pw_6libzfs_9ZFSObject_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
    static void __pyx_pw_6libzfs_9ZFSObject_3__dealloc__(PyObject *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
      __pyx_pf_6libzfs_9ZFSObject_2__dealloc__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    static void __pyx_pf_6libzfs_9ZFSObject_2__dealloc__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__dealloc__", 0);
    /* … */
      /* function exit code */
      __Pyx_RefNannyFinishContext();
    }

    +2041:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2042:             libzfs.zfs_close(self.handle)

            zfs_close(__pyx_v_self->handle);
          }

     2043:

    +2044:     def __str__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_5__str__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_5__str__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_4__str__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_4__str__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__str__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSObject.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2045:         return "<libzfs.{0} name '{1}' type '{2}'>".format(self.__class__.__name__, self.name, self.type.name)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_libzfs_0_name_1_type_2, __pyx_n_s_format); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_class); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_6);
      __pyx_t_4 = 0;
      __pyx_t_3 = 0;
      __pyx_t_6 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2045, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2046:

    +2047:     def __repr__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_7__repr__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_7__repr__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_6__repr__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_6__repr__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__repr__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSObject.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2048:         return str(self)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&PyString_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     2049:

    +2050:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_9__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_9__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_8__getstate__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_8__getstate__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSObject.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2051:         return {

      __Pyx_XDECREF(__pyx_r);

    +2052:             'id': self.name,

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_id, __pyx_t_2) < 0) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2053:             'name': self.name,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2053, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_name_2, __pyx_t_2) < 0) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2054:             'pool': self.pool.name,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->pool), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2054, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pool, __pyx_t_2) < 0) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2055:             'type': self.type.name,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2055, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2055, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_type, __pyx_t_3) < 0) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      { /* enter inner scope */
        PyObject *__pyx_8genexpr1__pyx_v_k = NULL;
        PyObject *__pyx_8genexpr1__pyx_v_p = NULL;

    +2056:             'properties': {k: p.__getstate__() for k, p in self.properties.items()},

        __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2056, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_properties); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2056, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2056, __pyx_L5_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (__pyx_t_4) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        } else {
          __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
        }
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2056, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2056, __pyx_L5_error)
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2056, __pyx_L5_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2056, __pyx_L5_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_7(__pyx_t_5);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 2056, __pyx_L5_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
            PyObject* sequence = __pyx_t_2;
            #if CYTHON_COMPILING_IN_CPYTHON
            Py_ssize_t size = Py_SIZE(sequence);
            #else
            Py_ssize_t size = PySequence_Size(sequence);
            #endif
            if (unlikely(size != 2)) {
              if (size > 2) __Pyx_RaiseTooManyValuesError(2);
              else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
              __PYX_ERR(1, 2056, __pyx_L5_error)
            }
            #if CYTHON_COMPILING_IN_CPYTHON
            if (likely(PyTuple_CheckExact(sequence))) {
              __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
              __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1);
            } else {
              __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
              __pyx_t_8 = PyList_GET_ITEM(sequence, 1);
            }
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_8);
            #else
            __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2056, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_4);
            __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2056, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_8);
            #endif
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
          } else {
            Py_ssize_t index = -1;
            __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2056, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_9);
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
            index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L8_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_4);
            index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
            __Pyx_GOTREF(__pyx_t_8);
            if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(1, 2056, __pyx_L5_error)
            __pyx_t_10 = NULL;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            goto __pyx_L9_unpacking_done;
            __pyx_L8_unpacking_failed:;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            __pyx_t_10 = NULL;
            if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
            __PYX_ERR(1, 2056, __pyx_L5_error)
            __pyx_L9_unpacking_done:;
          }
          __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_k, __pyx_t_4);
          __pyx_t_4 = 0;
          __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_p, __pyx_t_8);
          __pyx_t_8 = 0;
          __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_8genexpr1__pyx_v_p, __pyx_n_s_getstate); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2056, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_8);
          __pyx_t_4 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
            __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
            if (likely(__pyx_t_4)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
              __Pyx_INCREF(__pyx_t_4);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_8, function);
            }
          }
          if (__pyx_t_4) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
            __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          } else {
            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2056, __pyx_L5_error)
          }
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(PyDict_SetItem(__pyx_t_3, (PyObject*)__pyx_8genexpr1__pyx_v_k, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 2056, __pyx_L5_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k);
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_p);
        goto __pyx_L10_exit_scope;
        __pyx_L5_error:;
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_k);
        __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_p);
        goto __pyx_L1_error;
        __pyx_L10_exit_scope:;
      } /* exit inner scope */
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_properties, __pyx_t_3) < 0) __PYX_ERR(1, 2052, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2057:         }

     2058:

     2059:     property name:

    +2060:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_4name___get__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_4name___get__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("libzfs.ZFSObject.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2061:             return libzfs.zfs_get_name(self.handle)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyUnicode_FromString(zfs_get_name(__pyx_v_self->handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2061, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2062:

     2063:     property type:

    +2064:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_4type_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_4type___get__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_4type___get__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      zfs_type_t __pyx_v_typ;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSObject.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2065:             cdef zfs.zfs_type_t typ

     2066:

    +2067:             typ = libzfs.zfs_get_type(self.handle)

      __pyx_v_typ = zfs_get_type(__pyx_v_self->handle);

    +2068:             return DatasetType(typ)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyInt_From_zfs_type_t(__pyx_v_typ); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2068, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2068, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2068, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2068, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2069:

     2070:     property properties:

    +2071:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_10properties_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_10properties_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_10properties___get__(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_10properties___get__(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      struct __pyx_obj_6libzfs_ZFSPropertyDict *__pyx_v_d = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSObject.properties.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_d);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2072:             cdef ZFSPropertyDict d

     2073:

    +2074:             d = ZFSPropertyDict.__new__(ZFSPropertyDict)

      __pyx_t_1 = __pyx_tp_new_6libzfs_ZFSPropertyDict(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSPropertyDict), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2074, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZFSPropertyDict)))) __PYX_ERR(1, 2074, __pyx_L1_error)
      __pyx_v_d = ((struct __pyx_obj_6libzfs_ZFSPropertyDict *)__pyx_t_1);
      __pyx_t_1 = 0;

    +2075:             d.parent = self

      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      __Pyx_GOTREF(__pyx_v_d->parent);
      __Pyx_DECREF(((PyObject *)__pyx_v_d->parent));
      __pyx_v_d->parent = __pyx_v_self;

    +2076:             d.refresh()

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_d), __pyx_n_s_refresh); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2076, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2076, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2076, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +2077:             return d

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(((PyObject *)__pyx_v_d));
      __pyx_r = ((PyObject *)__pyx_v_d);
      goto __pyx_L0;

     2078:

    +2079:     def rename(self, new_name, nounmount=False, forceunmount=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_11rename(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_11rename(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_new_name = 0;
      PyObject *__pyx_v_nounmount = 0;
      PyObject *__pyx_v_forceunmount = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("rename (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_new_name,&__pyx_n_s_nounmount,&__pyx_n_s_forceunmount,0};
        PyObject* values[3] = {0,0,0};
        values[1] = ((PyObject *)Py_False);
        values[2] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_new_name)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nounmount);
              if (value) { values[1] = value; kw_args--; }
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_forceunmount);
              if (value) { values[2] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rename") < 0)) __PYX_ERR(1, 2079, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_new_name = values[0];
        __pyx_v_nounmount = values[1];
        __pyx_v_forceunmount = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("rename", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2079, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSObject.rename", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_10rename(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self), __pyx_v_new_name, __pyx_v_nounmount, __pyx_v_forceunmount);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_10rename(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self, PyObject *__pyx_v_new_name, PyObject *__pyx_v_nounmount, PyObject *__pyx_v_forceunmount) {
      renameflags_t __pyx_v_flags;
      char const *__pyx_v_c_new_name;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("rename", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSObject.rename", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2080:         cdef libzfs.renameflags_t flags

    +2081:         cdef const char *c_new_name = new_name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_new_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2081, __pyx_L1_error)
      __pyx_v_c_new_name = __pyx_t_1;

     2082:

    +2083:         flags.recurse = False

      __pyx_v_flags.recurse = 0;

    +2084:         flags.nounmount = nounmount

      __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_nounmount); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2084, __pyx_L1_error)
      __pyx_v_flags.nounmount = __pyx_t_2;

    +2085:         flags.forceunmount = forceunmount

      __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_forceunmount); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2085, __pyx_L1_error)
      __pyx_v_flags.forceunmount = __pyx_t_2;

     2086:

    +2087:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2088:             ret = libzfs.zfs_rename(self.handle, NULL, c_new_name, flags)

            __pyx_v_ret = zfs_rename(__pyx_v_self->handle, NULL, __pyx_v_c_new_name, __pyx_v_flags);
          }

     2089:

    +2090:         if ret != 0:

      __pyx_t_3 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +2091:             raise self.root.get_error()

        __pyx_t_4 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2091, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(1, 2091, __pyx_L1_error)

     2092:

    +2093:         self.root.write_history('zfs rename', '-f' if forceunmount else '', '-u' if nounmount else '', self.name)

      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2093, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_forceunmount); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2093, __pyx_L1_error)
      if (__pyx_t_3) {
        __Pyx_INCREF(__pyx_kp_s_f);
        __pyx_t_6 = __pyx_kp_s_f;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_6 = __pyx_kp_s__11;
      }
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_nounmount); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2093, __pyx_L1_error)
      if (__pyx_t_3) {
        __Pyx_INCREF(__pyx_kp_s_u);
        __pyx_t_7 = __pyx_kp_s_u;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_7 = __pyx_kp_s__11;
      }
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2093, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2093, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_rename);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_rename);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_s_zfs_rename);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_8);
      __pyx_t_6 = 0;
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2093, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     2094:

    +2095:     def delete(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_13delete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_13delete(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_12delete(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_12delete(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSObject.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2096:         cdef int ret

     2097:

    +2098:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2099:             ret = libzfs.zfs_destroy(self.handle, True)

            __pyx_v_ret = zfs_destroy(__pyx_v_self->handle, 1);
          }

     2100:

    +2101:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2102:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->root->__pyx_vtab)->get_error(__pyx_v_self->root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2102, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2102, __pyx_L1_error)

     2103:

    +2104:     def get_send_space(self, fromname=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_15get_send_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_9ZFSObject_15get_send_space(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fromname = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_send_space (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fromname,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fromname);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_send_space") < 0)) __PYX_ERR(1, 2104, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_fromname = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("get_send_space", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2104, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSObject.get_send_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_9ZFSObject_14get_send_space(((struct __pyx_obj_6libzfs_ZFSObject *)__pyx_v_self), __pyx_v_fromname);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_9ZFSObject_14get_send_space(struct __pyx_obj_6libzfs_ZFSObject *__pyx_v_self, PyObject *__pyx_v_fromname) {
      char const *__pyx_v_cfromname;
      char const *__pyx_v_c_name;
      uint64_t __pyx_v_space;
      int __pyx_v_ret;
      PyObject *__pyx_v_name = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_send_space", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSObject.get_send_space", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_name);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2105:         cdef const char *cfromname = NULL

      __pyx_v_cfromname = NULL;

     2106:         cdef const char *c_name

     2107:         cdef uint64_t space

     2108:         cdef int ret

     2109:

    +2110:         name = self.name

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2110, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_name = __pyx_t_1;
      __pyx_t_1 = 0;

    +2111:         c_name = name

      __pyx_t_2 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_2) && PyErr_Occurred())) __PYX_ERR(1, 2111, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_2;

     2112:

    +2113:         if fromname:

      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fromname); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2113, __pyx_L1_error)
      if (__pyx_t_3) {
    /* … */
      }

    +2114:             cfromname = fromname

        __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_fromname); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 2114, __pyx_L1_error)
        __pyx_v_cfromname = __pyx_t_4;

     2115:

    +2116:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2117:             ret = libzfs.lzc_send_space(c_name, cfromname, &space)

            __pyx_v_ret = lzc_send_space(__pyx_v_c_name, __pyx_v_cfromname, (&__pyx_v_space));
          }

     2118:

    +2119:         if ret != 0:

      __pyx_t_3 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +2120:             raise ZFSException(Error.FAULT, "Cannot obtain space estimate: ")

        __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_FAULT); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_7);
        __Pyx_INCREF(__pyx_kp_s_Cannot_obtain_space_estimate);
        __Pyx_GIVEREF(__pyx_kp_s_Cannot_obtain_space_estimate);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_s_Cannot_obtain_space_estimate);
        __pyx_t_7 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2120, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 2120, __pyx_L1_error)

     2121:

    +2122:         return space

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyInt_From_uint64_t(__pyx_v_space); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2122, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2123:

     2124:

    +2125: cdef class ZFSDataset(ZFSObject):

    struct __pyx_obj_6libzfs_ZFSDataset {
      struct __pyx_obj_6libzfs_ZFSObject __pyx_base;
      struct __pyx_vtabstruct_6libzfs_ZFSDataset *__pyx_vtab;
    };
    /* … */
    struct __pyx_vtabstruct_6libzfs_ZFSDataset {
      int (*__pyx___iterate)(zfs_handle_t *, void *);
    };
    static struct __pyx_vtabstruct_6libzfs_ZFSDataset *__pyx_vtabptr_6libzfs_ZFSDataset;

    +2126:     def __getstate__(self, recursive=True):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_1__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_1__getstate__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_recursive,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_True);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__getstate__") < 0)) __PYX_ERR(1, 2126, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_recursive = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("__getstate__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2126, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset___getstate__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset___getstate__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_recursive) {
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSDataset.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2127:         ret = super(ZFSDataset, self).__getstate__()

      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_ptype_6libzfs_ZFSDataset));
      __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6libzfs_ZFSDataset));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6libzfs_ZFSDataset));
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getstate); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2127, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2127, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2127, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_ret = __pyx_t_1;
      __pyx_t_1 = 0;

    +2128:         ret['mountpoint'] = self.mountpoint

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mountpoint); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2128, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely(PyObject_SetItem(__pyx_v_ret, __pyx_n_s_mountpoint, __pyx_t_1) < 0)) __PYX_ERR(1, 2128, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     2129:

    +2130:         if recursive:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2130, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +2131:             ret['children'] = [i.__getstate__() for i in self.children]

        __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2131, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2131, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
          __pyx_t_6 = NULL;
        } else {
          __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2131, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2131, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (likely(!__pyx_t_6)) {
            if (likely(PyList_CheckExact(__pyx_t_3))) {
              if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 2131, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2131, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(1, 2131, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2131, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_6(__pyx_t_3);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 2131, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
          __pyx_t_2 = 0;
          __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_getstate); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2131, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __pyx_t_8 = NULL;
          if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_7))) {
            __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
            if (likely(__pyx_t_8)) {
              PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
              __Pyx_INCREF(__pyx_t_8);
              __Pyx_INCREF(function);
              __Pyx_DECREF_SET(__pyx_t_7, function);
            }
          }
          if (__pyx_t_8) {
            __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2131, __pyx_L1_error)
            __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          } else {
            __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2131, __pyx_L1_error)
          }
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_2))) __PYX_ERR(1, 2131, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(PyObject_SetItem(__pyx_v_ret, __pyx_n_s_children, __pyx_t_1) < 0)) __PYX_ERR(1, 2131, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     2132:

    +2133:         return ret

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_ret);
      __pyx_r = __pyx_v_ret;
      goto __pyx_L0;

     2134:

     2135:     @staticmethod

    +2136:     cdef int __iterate(libzfs.zfs_handle_t* handle, void *arg) nogil:

    static int __pyx_f_6libzfs_10ZFSDataset___iterate(zfs_handle_t *__pyx_v_handle, void *__pyx_v_arg) {
      struct __pyx_t_6libzfs_iter_state *__pyx_v_iter;
      int __pyx_r;
    /* … */
      /* function exit code */
      __pyx_r = 0;
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_8children_2generator13(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

     2137:         cdef iter_state *iter

     2138:

    +2139:         iter = <iter_state *>arg

      __pyx_v_iter = ((struct __pyx_t_6libzfs_iter_state *)__pyx_v_arg);

    +2140:         if iter.length == iter.alloc:

      __pyx_t_1 = ((__pyx_v_iter->length == __pyx_v_iter->alloc) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2141:             iter.alloc += 128

        __pyx_v_iter->alloc = (__pyx_v_iter->alloc + 0x80);

    +2142:             iter.array = <uintptr_t *>realloc(iter.array, iter.alloc * sizeof(uintptr_t))

        __pyx_v_iter->array = ((uintptr_t *)realloc(__pyx_v_iter->array, (__pyx_v_iter->alloc * (sizeof(uintptr_t)))));

     2143:

    +2144:         iter.array[iter.length] = <uintptr_t>handle

      (__pyx_v_iter->array[__pyx_v_iter->length]) = ((uintptr_t)__pyx_v_handle);

    +2145:         iter.length += 1

      __pyx_v_iter->length = (__pyx_v_iter->length + 1);

     2146:

     2147:     property children:

    +2148:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_8children_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_8children_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_8children___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_8children___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_15___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_15___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_15___get__(__pyx_ptype_6libzfs___pyx_scope_struct_15___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_8children_2generator13, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2148, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.children.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_8children_2generator13(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2148, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_18children_recursive_2generator14(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_15___get__ {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_dataset;
      PyObject *__pyx_v_datasets;
      size_t __pyx_v_h;
      struct __pyx_t_6libzfs_iter_state __pyx_v_iter;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      size_t __pyx_t_0;
      size_t __pyx_t_1;
    };

     2149:             cdef ZFSDataset dataset

     2150:             cdef iter_state iter

     2151:

    +2152:             datasets = []

      __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __pyx_cur_scope->__pyx_v_datasets = ((PyObject*)__pyx_t_1);
      __pyx_t_1 = 0;

    +2153:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2154:                 libzfs.zfs_iter_filesystems(self.handle, self.__iterate, <void*>&iter)

            zfs_iter_filesystems(__pyx_cur_scope->__pyx_v_self->__pyx_base.handle, ((struct __pyx_vtabstruct_6libzfs_ZFSDataset *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->__pyx___iterate, ((void *)(&__pyx_cur_scope->__pyx_v_iter)));
          }

     2155:

    +2156:             try:

      /*try:*/ {

    +2157:                 for h in range(0, iter.length):

        __pyx_t_2 = __pyx_cur_scope->__pyx_v_iter.length;
        for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
          __pyx_cur_scope->__pyx_v_h = __pyx_t_3;

    +2158:                     dataset = ZFSDataset.__new__(ZFSDataset)

          __pyx_t_1 = __pyx_tp_new_6libzfs_ZFSDataset(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSDataset), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2158, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_1);
          if (!(likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6libzfs_ZFSDataset)))) __PYX_ERR(1, 2158, __pyx_L8_error)
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dataset, ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_1));
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_1 = 0;

    +2159:                     dataset.root = self.root

          __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_dataset->__pyx_base.root);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset->__pyx_base.root));
          __pyx_cur_scope->__pyx_v_dataset->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_1);
          __pyx_t_1 = 0;

    +2160:                     dataset.pool = self.pool

          __pyx_t_1 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.pool);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_1);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool));
          __pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_1);
          __pyx_t_1 = 0;

    +2161:                     dataset.handle = <libzfs.zfs_handle_t*>iter.array[h]

          __pyx_cur_scope->__pyx_v_dataset->__pyx_base.handle = ((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_h]));

    +2162:                     yield dataset

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset));
          __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_dataset);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L12_resume_from_yield:;
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2162, __pyx_L8_error)
        }
      }

     2163:             finally:

    +2164:                 free(iter.array)

      /*finally:*/ {
        /*normal exit:*/{
          free(__pyx_cur_scope->__pyx_v_iter.array);
          goto __pyx_L9;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L8_error:;
          __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
          {
            free(__pyx_cur_scope->__pyx_v_iter.array);
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
          }
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
          __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
          goto __pyx_L1_error;
        }
        __pyx_L9:;
      }

     2165:

     2166:     property children_recursive:

    +2167:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_18children_recursive_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_18children_recursive_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_18children_recursive___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_18children_recursive___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_16___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_16___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_16___get__(__pyx_ptype_6libzfs___pyx_scope_struct_16___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_18children_recursive_2generator14, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2167, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.children_recursive.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_18children_recursive_2generator14(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2167, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_9snapshots_2generator15(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_16___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_c;
      PyObject *__pyx_v_i;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
      PyObject *__pyx_t_3;
      Py_ssize_t __pyx_t_4;
      PyObject *(*__pyx_t_5)(PyObject *);
    };

    +2168:             for c in self.children:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2168, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2168, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2168, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2168, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2168, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2168, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 2168, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2169:                 yield c

        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_c);
        __pyx_r = __pyx_cur_scope->__pyx_v_c;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L6_resume_from_yield:;
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2169, __pyx_L1_error)

    +2170:                 for i in c.children_recursive:

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_c, __pyx_n_s_children_recursive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2170, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
          __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2170, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2170, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2170, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2170, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2170, __pyx_L1_error)
              #else
              __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2170, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_1);
              #endif
            }
          } else {
            __pyx_t_1 = __pyx_t_7(__pyx_t_5);
            if (unlikely(!__pyx_t_1)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 2170, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_1);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_1);
          __pyx_t_1 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +2171:                     yield i

          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_i);
          __pyx_r = __pyx_cur_scope->__pyx_v_i;
          __Pyx_XGIVEREF(__pyx_t_2);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
          __Pyx_XGIVEREF(__pyx_t_5);
          __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
          __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
          __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L9_resume_from_yield:;
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_2);
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
          __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
          __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
          __pyx_cur_scope->__pyx_t_3 = 0;
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
          __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2171, __pyx_L1_error)

     2172:

     2173:     property snapshots:

    +2174:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9snapshots_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9snapshots_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_9snapshots___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_9snapshots___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_17___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_17___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_17___get__(__pyx_ptype_6libzfs___pyx_scope_struct_17___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_9snapshots_2generator15, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2174, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.snapshots.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_9snapshots_2generator15(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2174, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_9bookmarks_2generator16(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_17___get__ {
      PyObject_HEAD
      size_t __pyx_v_h;
      struct __pyx_t_6libzfs_iter_state __pyx_v_iter;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_snapshot;
      size_t __pyx_t_0;
      size_t __pyx_t_1;
    };

     2175:             cdef ZFSSnapshot snapshot

     2176:             cdef iter_state iter

     2177:

    +2178:             memset(&iter, 0, sizeof(iter))

      memset((&__pyx_cur_scope->__pyx_v_iter), 0, (sizeof(__pyx_cur_scope->__pyx_v_iter)));

    +2179:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2180:                 libzfs.zfs_iter_snapshots(self.handle, False, self.__iterate, <void*>&iter)

            zfs_iter_snapshots(__pyx_cur_scope->__pyx_v_self->__pyx_base.handle, 0, ((struct __pyx_vtabstruct_6libzfs_ZFSDataset *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->__pyx___iterate, ((void *)(&__pyx_cur_scope->__pyx_v_iter)));
          }

     2181:

    +2182:             try:

      /*try:*/ {

    +2183:                 for h in range(0, iter.length):

        __pyx_t_1 = __pyx_cur_scope->__pyx_v_iter.length;
        for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
          __pyx_cur_scope->__pyx_v_h = __pyx_t_2;

    +2184:                     snapshot = ZFSSnapshot.__new__(ZFSSnapshot)

          __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSSnapshot(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSSnapshot), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2184, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSSnapshot)))) __PYX_ERR(1, 2184, __pyx_L8_error)
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_snapshot, ((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_t_3));
          __Pyx_GIVEREF(__pyx_t_3);
          __pyx_t_3 = 0;

    +2185:                     snapshot.root = self.root

          __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root));
          __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_3);
          __pyx_t_3 = 0;

    +2186:                     snapshot.pool = self.pool

          __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.pool);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool));
          __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
          __pyx_t_3 = 0;

    +2187:                     snapshot.handle = <libzfs.zfs_handle_t*>iter.array[h]

          __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.handle = ((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_h]));

    +2188:                     if snapshot.snapshot_name == '$ORIGIN':

          __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2188, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_kp_s_ORIGIN, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2188, __pyx_L8_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (__pyx_t_4) {
    /* … */
          }

    +2189:                         continue

            goto __pyx_L10_continue;

     2190:

    +2191:                     yield snapshot

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot));
          __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_snapshot);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L13_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2191, __pyx_L8_error)
          __pyx_L10_continue:;
        }
      }

     2192:             finally:

    +2193:                 free(iter.array)

      /*finally:*/ {
        /*normal exit:*/{
          free(__pyx_cur_scope->__pyx_v_iter.array);
          goto __pyx_L9;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L8_error:;
          __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
          {
            free(__pyx_cur_scope->__pyx_v_iter.array);
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          }
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
          __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
          goto __pyx_L1_error;
        }
        __pyx_L9:;
      }

     2194:

     2195:     property bookmarks:

    +2196:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9bookmarks_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9bookmarks_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_9bookmarks___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_9bookmarks___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_18___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_18___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_18___get__(__pyx_ptype_6libzfs___pyx_scope_struct_18___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_9bookmarks_2generator16, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2196, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.bookmarks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_9bookmarks_2generator16(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2196, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_19snapshots_recursive_2generator17(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_18___get__ {
      PyObject_HEAD
      size_t __pyx_v_b;
      struct __pyx_obj_6libzfs_ZFSBookmark *__pyx_v_bookmark;
      struct __pyx_t_6libzfs_iter_state __pyx_v_iter;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      size_t __pyx_t_0;
      size_t __pyx_t_1;
    };

     2197:             cdef ZFSBookmark bookmark

     2198:             cdef iter_state iter

     2199:

    +2200:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2201:                 libzfs.zfs_iter_bookmarks(self.handle, self.__iterate, <void *>&iter)

            zfs_iter_bookmarks(__pyx_cur_scope->__pyx_v_self->__pyx_base.handle, ((struct __pyx_vtabstruct_6libzfs_ZFSDataset *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->__pyx___iterate, ((void *)(&__pyx_cur_scope->__pyx_v_iter)));
          }

     2202:

    +2203:             try:

      /*try:*/ {

    +2204:                 for b in range(0, iter.length):

        __pyx_t_1 = __pyx_cur_scope->__pyx_v_iter.length;
        for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
          __pyx_cur_scope->__pyx_v_b = __pyx_t_2;

    +2205:                     bookmark = ZFSBookmark.__new__(ZFSBookmark)

          __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSBookmark(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSBookmark), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2205, __pyx_L8_error)
          __Pyx_GOTREF(__pyx_t_3);
          if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSBookmark)))) __PYX_ERR(1, 2205, __pyx_L8_error)
          __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_bookmark));
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_bookmark, ((struct __pyx_obj_6libzfs_ZFSBookmark *)__pyx_t_3));
          __Pyx_GIVEREF(__pyx_t_3);
          __pyx_t_3 = 0;

    +2206:                     bookmark.root = self.root

          __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_bookmark->__pyx_base.root);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_bookmark->__pyx_base.root));
          __pyx_cur_scope->__pyx_v_bookmark->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_3);
          __pyx_t_3 = 0;

    +2207:                     bookmark.pool = self.pool

          __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.pool);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_GIVEREF(__pyx_t_3);
          __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_bookmark->__pyx_base.pool);
          __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_bookmark->__pyx_base.pool));
          __pyx_cur_scope->__pyx_v_bookmark->__pyx_base.pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
          __pyx_t_3 = 0;

    +2208:                     bookmark.handle = <libzfs.zfs_handle_t*>iter.array[b]

          __pyx_cur_scope->__pyx_v_bookmark->__pyx_base.handle = ((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_b]));

    +2209:                     yield bookmark

          __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_bookmark));
          __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_bookmark);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 1;
          return __pyx_r;
          __pyx_L12_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2209, __pyx_L8_error)
        }
      }

     2210:             finally:

    +2211:                 free(iter.array)

      /*finally:*/ {
        /*normal exit:*/{
          free(__pyx_cur_scope->__pyx_v_iter.array);
          goto __pyx_L9;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L8_error:;
          __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9) < 0)) __Pyx_ErrFetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_7);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __pyx_t_4 = __pyx_lineno; __pyx_t_5 = __pyx_clineno; __pyx_t_6 = __pyx_filename;
          {
            free(__pyx_cur_scope->__pyx_v_iter.array);
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
          }
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_ErrRestore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
          __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0;
          __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_5; __pyx_filename = __pyx_t_6;
          goto __pyx_L1_error;
        }
        __pyx_L9:;
      }

     2212:

     2213:     property snapshots_recursive:

    +2214:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_19snapshots_recursive_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_19snapshots_recursive_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_19snapshots_recursive___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_19snapshots_recursive___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_19___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_19___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_19___get__(__pyx_ptype_6libzfs___pyx_scope_struct_19___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_19snapshots_recursive_2generator17, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2214, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.snapshots_recursive.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_19snapshots_recursive_2generator17(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2214, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_10dependents_2generator18(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_19___get__ {
      PyObject_HEAD
      PyObject *__pyx_v_c;
      PyObject *__pyx_v_i;
      PyObject *__pyx_v_s;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *(*__pyx_t_2)(PyObject *);
      PyObject *__pyx_t_3;
      Py_ssize_t __pyx_t_4;
      PyObject *(*__pyx_t_5)(PyObject *);
      PyObject *__pyx_t_6;
      Py_ssize_t __pyx_t_7;
      PyObject *(*__pyx_t_8)(PyObject *);
    };

    +2215:             for s in self.snapshots:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_snapshots); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2215, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2215, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2215, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_2))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2215, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2215, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2215, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2215, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_4(__pyx_t_2);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 2215, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2216:                 yield s

        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s);
        __pyx_r = __pyx_cur_scope->__pyx_v_s;
        __Pyx_XGIVEREF(__pyx_t_2);
        __pyx_cur_scope->__pyx_t_0 = __pyx_t_2;
        __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
        __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L6_resume_from_yield:;
        __pyx_t_2 = __pyx_cur_scope->__pyx_t_0;
        __pyx_cur_scope->__pyx_t_0 = 0;
        __Pyx_XGOTREF(__pyx_t_2);
        __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
        __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2216, __pyx_L1_error)

     2217:

    +2218:             for c in self.children:

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2218, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
        __pyx_t_4 = NULL;
      } else {
        __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2218, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2218, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_4)) {
          if (likely(PyList_CheckExact(__pyx_t_1))) {
            if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2218, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2218, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 2218, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2218, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_4(__pyx_t_1);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 2218, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_c);
        __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_c, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +2219:                 for s in c.snapshots:

        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_c, __pyx_n_s_snapshots); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2219, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
          __pyx_t_5 = __pyx_t_2; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2219, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2219, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_5))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2219, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2219, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2219, __pyx_L1_error)
              #else
              __pyx_t_2 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2219, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_2);
              #endif
            }
          } else {
            __pyx_t_2 = __pyx_t_7(__pyx_t_5);
            if (unlikely(!__pyx_t_2)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 2219, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_2);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, __pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_2);
          __pyx_t_2 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +2220:                     yield s

          __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s);
          __pyx_r = __pyx_cur_scope->__pyx_v_s;
          __Pyx_XGIVEREF(__pyx_t_1);
          __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
          __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
          __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
          __Pyx_XGIVEREF(__pyx_t_5);
          __pyx_cur_scope->__pyx_t_3 = __pyx_t_5;
          __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
          __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
          __Pyx_XGIVEREF(__pyx_r);
          __Pyx_RefNannyFinishContext();
          /* return from generator, yielding value */
          __pyx_generator->resume_label = 2;
          return __pyx_r;
          __pyx_L11_resume_from_yield:;
          __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
          __pyx_cur_scope->__pyx_t_0 = 0;
          __Pyx_XGOTREF(__pyx_t_1);
          __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
          __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
          __pyx_t_5 = __pyx_cur_scope->__pyx_t_3;
          __pyx_cur_scope->__pyx_t_3 = 0;
          __Pyx_XGOTREF(__pyx_t_5);
          __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
          __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
          if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2220, __pyx_L1_error)

    +2221:                 for i in c.children_recursive:

        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_c, __pyx_n_s_children_recursive); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2221, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
          __pyx_t_2 = __pyx_t_5; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
          __pyx_t_7 = NULL;
        } else {
          __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2221, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2221, __pyx_L1_error)
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        for (;;) {
          if (likely(!__pyx_t_7)) {
            if (likely(PyList_CheckExact(__pyx_t_2))) {
              if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2221, __pyx_L1_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2221, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            } else {
              if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
              #if CYTHON_COMPILING_IN_CPYTHON
              __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2221, __pyx_L1_error)
              #else
              __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2221, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_5);
              #endif
            }
          } else {
            __pyx_t_5 = __pyx_t_7(__pyx_t_2);
            if (unlikely(!__pyx_t_5)) {
              PyObject* exc_type = PyErr_Occurred();
              if (exc_type) {
                if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                else __PYX_ERR(1, 2221, __pyx_L1_error)
              }
              break;
            }
            __Pyx_GOTREF(__pyx_t_5);
          }
          __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_i);
          __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_i, __pyx_t_5);
          __Pyx_GIVEREF(__pyx_t_5);
          __pyx_t_5 = 0;
    /* … */
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2222:                     for s in i.snapshots:

          __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_i, __pyx_n_s_snapshots); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2222, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
          if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
            __pyx_t_8 = __pyx_t_5; __Pyx_INCREF(__pyx_t_8); __pyx_t_9 = 0;
            __pyx_t_10 = NULL;
          } else {
            __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2222, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_8);
            __pyx_t_10 = Py_TYPE(__pyx_t_8)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2222, __pyx_L1_error)
          }
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          for (;;) {
            if (likely(!__pyx_t_10)) {
              if (likely(PyList_CheckExact(__pyx_t_8))) {
                if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_8)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_5 = PyList_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 2222, __pyx_L1_error)
                #else
                __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2222, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                #endif
              } else {
                if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_8)) break;
                #if CYTHON_COMPILING_IN_CPYTHON
                __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 2222, __pyx_L1_error)
                #else
                __pyx_t_5 = PySequence_ITEM(__pyx_t_8, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2222, __pyx_L1_error)
                __Pyx_GOTREF(__pyx_t_5);
                #endif
              }
            } else {
              __pyx_t_5 = __pyx_t_10(__pyx_t_8);
              if (unlikely(!__pyx_t_5)) {
                PyObject* exc_type = PyErr_Occurred();
                if (exc_type) {
                  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                  else __PYX_ERR(1, 2222, __pyx_L1_error)
                }
                break;
              }
              __Pyx_GOTREF(__pyx_t_5);
            }
            __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, __pyx_t_5);
            __Pyx_GIVEREF(__pyx_t_5);
            __pyx_t_5 = 0;
    /* … */
          }
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    +2223:                         yield s

            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_s);
            __pyx_r = __pyx_cur_scope->__pyx_v_s;
            __Pyx_XGIVEREF(__pyx_t_1);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __Pyx_XGIVEREF(__pyx_t_2);
            __pyx_cur_scope->__pyx_t_3 = __pyx_t_2;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
            __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
            __pyx_cur_scope->__pyx_t_4 = __pyx_t_6;
            __pyx_cur_scope->__pyx_t_5 = __pyx_t_7;
            __Pyx_XGIVEREF(__pyx_t_8);
            __pyx_cur_scope->__pyx_t_6 = __pyx_t_8;
            __pyx_cur_scope->__pyx_t_7 = __pyx_t_9;
            __pyx_cur_scope->__pyx_t_8 = __pyx_t_10;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 3;
            return __pyx_r;
            __pyx_L16_resume_from_yield:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_cur_scope->__pyx_t_0 = 0;
            __Pyx_XGOTREF(__pyx_t_1);
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_3;
            __pyx_cur_scope->__pyx_t_3 = 0;
            __Pyx_XGOTREF(__pyx_t_2);
            __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
            __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
            __pyx_t_6 = __pyx_cur_scope->__pyx_t_4;
            __pyx_t_7 = __pyx_cur_scope->__pyx_t_5;
            __pyx_t_8 = __pyx_cur_scope->__pyx_t_6;
            __pyx_cur_scope->__pyx_t_6 = 0;
            __Pyx_XGOTREF(__pyx_t_8);
            __pyx_t_9 = __pyx_cur_scope->__pyx_t_7;
            __pyx_t_10 = __pyx_cur_scope->__pyx_t_8;
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2223, __pyx_L1_error)

     2224:

     2225:     property dependents:

    +2226:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_10dependents_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_10dependents_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_10dependents___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_10dependents___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_20___get__ *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_20___get__ *)__pyx_tp_new_6libzfs___pyx_scope_struct_20___get__(__pyx_ptype_6libzfs___pyx_scope_struct_20___get__, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_10dependents_2generator18, (PyObject *) __pyx_cur_scope, __pyx_n_s_get_2, __pyx_n_s_ZFSDataset___get); if (unlikely(!gen)) __PYX_ERR(1, 2226, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.dependents.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_10dependents_2generator18(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2226, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_20___get__ {
      PyObject_HEAD
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_dataset;
      size_t __pyx_v_h;
      struct __pyx_t_6libzfs_iter_state __pyx_v_iter;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_snapshot;
      zfs_type_t __pyx_v_type;
      size_t __pyx_t_0;
      size_t __pyx_t_1;
    };

     2227:             cdef ZFSDataset dataset

     2228:             cdef ZFSSnapshot snapshot

     2229:             cdef zfs.zfs_type_t type

     2230:             cdef iter_state iter

     2231:

    +2232:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2233:                 libzfs.zfs_iter_dependents(self.handle, False, self.__iterate, <void*>&iter)

            zfs_iter_dependents(__pyx_cur_scope->__pyx_v_self->__pyx_base.handle, 0, ((struct __pyx_vtabstruct_6libzfs_ZFSDataset *)__pyx_cur_scope->__pyx_v_self->__pyx_vtab)->__pyx___iterate, ((void *)(&__pyx_cur_scope->__pyx_v_iter)));
          }

     2234:

    +2235:             try:

      /*try:*/ {

    +2236:                 for h in range(0, iter.length):

        __pyx_t_1 = __pyx_cur_scope->__pyx_v_iter.length;
        for (__pyx_t_2 = 0; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
          __pyx_cur_scope->__pyx_v_h = __pyx_t_2;

    +2237:                     type = libzfs.zfs_get_type(<libzfs.zfs_handle_t*>iter.array[h])

          __pyx_cur_scope->__pyx_v_type = zfs_get_type(((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_h])));

     2238:

    +2239:                     if type == zfs.ZFS_TYPE_FILESYSTEM or type == zfs.ZFS_TYPE_VOLUME:

          switch (__pyx_cur_scope->__pyx_v_type) {
            case ZFS_TYPE_FILESYSTEM:
            case ZFS_TYPE_VOLUME:
    /* … */
            break;
            default: break;
          }

    +2240:                         dataset = ZFSDataset.__new__(ZFSDataset)

            __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSDataset(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSDataset), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2240, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSDataset)))) __PYX_ERR(1, 2240, __pyx_L8_error)
            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset));
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_dataset, ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_3));
            __Pyx_GIVEREF(__pyx_t_3);
            __pyx_t_3 = 0;

    +2241:                         dataset.root = self.root

            __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_dataset->__pyx_base.root);
            __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset->__pyx_base.root));
            __pyx_cur_scope->__pyx_v_dataset->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_3);
            __pyx_t_3 = 0;

    +2242:                         dataset.pool = self.pool

            __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.pool);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool);
            __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool));
            __pyx_cur_scope->__pyx_v_dataset->__pyx_base.pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
            __pyx_t_3 = 0;

    +2243:                         dataset.handle = <libzfs.zfs_handle_t*>iter.array[h]

            __pyx_cur_scope->__pyx_v_dataset->__pyx_base.handle = ((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_h]));

    +2244:                         yield dataset

            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_dataset));
            __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_dataset);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 1;
            return __pyx_r;
            __pyx_L12_resume_from_yield:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2244, __pyx_L8_error)

     2245:

    +2246:                     if type == zfs.ZFS_TYPE_SNAPSHOT:

          __pyx_t_4 = ((__pyx_cur_scope->__pyx_v_type == ZFS_TYPE_SNAPSHOT) != 0);
          if (__pyx_t_4) {
    /* … */
          }
        }
      }

    +2247:                         snapshot = ZFSSnapshot.__new__(ZFSSnapshot)

            __pyx_t_3 = __pyx_tp_new_6libzfs_ZFSSnapshot(((PyTypeObject *)__pyx_ptype_6libzfs_ZFSSnapshot), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2247, __pyx_L8_error)
            __Pyx_GOTREF(__pyx_t_3);
            if (!(likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6libzfs_ZFSSnapshot)))) __PYX_ERR(1, 2247, __pyx_L8_error)
            __Pyx_XGOTREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot));
            __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_snapshot, ((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_t_3));
            __Pyx_GIVEREF(__pyx_t_3);
            __pyx_t_3 = 0;

    +2248:                         snapshot.root = self.root

            __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root);
            __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root));
            __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.root = ((struct __pyx_obj_6libzfs_ZFS *)__pyx_t_3);
            __pyx_t_3 = 0;

    +2249:                         snapshot.pool = self.pool

            __pyx_t_3 = ((PyObject *)__pyx_cur_scope->__pyx_v_self->__pyx_base.pool);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool);
            __Pyx_DECREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool));
            __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.pool = ((struct __pyx_obj_6libzfs_ZFSPool *)__pyx_t_3);
            __pyx_t_3 = 0;

    +2250:                         snapshot.handle = <libzfs.zfs_handle_t*>iter.array[h]

            __pyx_cur_scope->__pyx_v_snapshot->__pyx_base.handle = ((zfs_handle_t *)(__pyx_cur_scope->__pyx_v_iter.array[__pyx_cur_scope->__pyx_v_h]));

    +2251:                         yield snapshot

            __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_v_snapshot));
            __pyx_r = ((PyObject *)__pyx_cur_scope->__pyx_v_snapshot);
            __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
            __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
            __Pyx_XGIVEREF(__pyx_r);
            __Pyx_RefNannyFinishContext();
            /* return from generator, yielding value */
            __pyx_generator->resume_label = 2;
            return __pyx_r;
            __pyx_L14_resume_from_yield:;
            __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
            __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
            if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2251, __pyx_L8_error)

     2252:             finally:

    +2253:                 free(iter.array)

      /*finally:*/ {
        /*normal exit:*/{
          free(__pyx_cur_scope->__pyx_v_iter.array);
          goto __pyx_L9;
        }
        /*exception exit:*/{
          __Pyx_PyThreadState_declare
          __pyx_L8_error:;
          __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10) < 0)) __Pyx_ErrFetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_8);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          __pyx_t_5 = __pyx_lineno; __pyx_t_6 = __pyx_clineno; __pyx_t_7 = __pyx_filename;
          {
            free(__pyx_cur_scope->__pyx_v_iter.array);
          }
          __Pyx_PyThreadState_assign
          if (PY_MAJOR_VERSION >= 3) {
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_XGIVEREF(__pyx_t_12);
            __Pyx_XGIVEREF(__pyx_t_13);
            __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          }
          __Pyx_XGIVEREF(__pyx_t_8);
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_ErrRestore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
          __pyx_t_8 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0;
          __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_6; __pyx_filename = __pyx_t_7;
          goto __pyx_L1_error;
        }
        __pyx_L9:;
      }

     2254:

     2255:     property mountpoint:

    +2256:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_10mountpoint_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_10mountpoint_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_10mountpoint___get__(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_10mountpoint___get__(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      char *__pyx_v_mntpt;
      char *__pyx_v_result;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSDataset.mountpoint.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2257:             cdef char *mntpt

    +2258:             if libzfs.zfs_is_mounted(self.handle, &mntpt) == 0:

      __pyx_t_1 = ((zfs_is_mounted(__pyx_v_self->__pyx_base.handle, (&__pyx_v_mntpt)) == 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2259:                 return None

        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(Py_None);
        __pyx_r = Py_None;
        goto __pyx_L0;

     2260:

    +2261:             result = mntpt

      __pyx_v_result = __pyx_v_mntpt;

    +2262:             free(mntpt)

      free(__pyx_v_mntpt);

    +2263:             return result

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyUnicode_FromString(__pyx_v_result); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2263, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     2264:

    +2265:     def destroy_snapshot(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_3destroy_snapshot(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_3destroy_snapshot(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy_snapshot (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_2destroy_snapshot(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_2destroy_snapshot(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_name) {
      char const *__pyx_v_c_name;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("destroy_snapshot", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSDataset.destroy_snapshot", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2266:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2266, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

     2267:         cdef int ret

     2268:

    +2269:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2270:             ret = libzfs.zfs_destroy_snaps(self.handle, c_name, True)

            __pyx_v_ret = zfs_destroy_snaps(__pyx_v_self->__pyx_base.handle, __pyx_v_c_name, 1);
          }

     2271:

    +2272:         if ret != 0:

      __pyx_t_2 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2273:             raise self.root.get_error()

        __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2273, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2273, __pyx_L1_error)

     2274:

    +2275:         self.root.write_history('zfs destroy', name)

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_destroy);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_destroy);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zfs_destroy);
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2275, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2276:

    +2277:     def mount(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_5mount(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_5mount(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("mount (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_4mount(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_4mount(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("mount", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSDataset.mount", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2278:         cdef int ret

     2279:

    +2280:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2281:             ret = libzfs.zfs_mount(self.handle, NULL, 0)

            __pyx_v_ret = zfs_mount(__pyx_v_self->__pyx_base.handle, NULL, 0);
          }

     2282:

    +2283:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2284:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2284, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2284, __pyx_L1_error)

     2285:

    +2286:         self.root.write_history('zfs mount', self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_mount);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_mount);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zfs_mount);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2287:

    +2288:     def mount_recursive(self, ignore_errors=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_7mount_recursive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_7mount_recursive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_ignore_errors = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("mount_recursive (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ignore_errors,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ignore_errors);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mount_recursive") < 0)) __PYX_ERR(1, 2288, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_ignore_errors = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("mount_recursive", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2288, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.mount_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_6mount_recursive(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_ignore_errors);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_6mount_recursive(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_ignore_errors) {
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("mount_recursive", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_XDECREF(__pyx_t_12);
      __Pyx_AddTraceback("libzfs.ZFSDataset.mount_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2289:         if self.type != DatasetType.FILESYSTEM:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FILESYSTEM); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2289, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2289, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2289, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_4) {
    /* … */
      }

    +2290:             return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        goto __pyx_L0;

     2291:

    +2292:         if self.properties['canmount'].value == 'on':

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_properties); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_GetItem(__pyx_t_2, __pyx_n_s_canmount); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2292, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_n_s_on, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2292, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_4) {
    /* … */
      }

    +2293:             try:

        {
          /*try:*/ {
    /* … */
          }
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          goto __pyx_L12_try_end;
          __pyx_L5_error:;
          __Pyx_PyThreadState_assign
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    /* … */
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          goto __pyx_L1_error;
          __pyx_L6_exception_handled:;
          __Pyx_PyThreadState_assign
          __Pyx_XGIVEREF(__pyx_t_5);
          __Pyx_XGIVEREF(__pyx_t_6);
          __Pyx_XGIVEREF(__pyx_t_7);
          __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
          __pyx_L12_try_end:;
        }

    +2294:                 self.mount()

            __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mount); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2294, __pyx_L5_error)
            __Pyx_GOTREF(__pyx_t_3);
            __pyx_t_1 = NULL;
            if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
              if (likely(__pyx_t_1)) {
                PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
                __Pyx_INCREF(__pyx_t_1);
                __Pyx_INCREF(function);
                __Pyx_DECREF_SET(__pyx_t_3, function);
              }
            }
            if (__pyx_t_1) {
              __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2294, __pyx_L5_error)
              __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            } else {
              __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2294, __pyx_L5_error)
            }
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    +2295:             except:

          /*except:*/ {
            __Pyx_AddTraceback("libzfs.ZFSDataset.mount_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_1) < 0) __PYX_ERR(1, 2295, __pyx_L7_except_error)
            __Pyx_GOTREF(__pyx_t_2);
            __Pyx_GOTREF(__pyx_t_3);
            __Pyx_GOTREF(__pyx_t_1);

    +2296:                 if not ignore_errors:

            __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_errors); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2296, __pyx_L7_except_error)
            __pyx_t_8 = ((!__pyx_t_4) != 0);
            if (__pyx_t_8) {
    /* … */
            }
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
            goto __pyx_L6_exception_handled;
          }
          __pyx_L7_except_error:;

    +2297:                     raise

              __Pyx_GIVEREF(__pyx_t_2);
              __Pyx_GIVEREF(__pyx_t_3);
              __Pyx_XGIVEREF(__pyx_t_1);
              __Pyx_ErrRestoreWithState(__pyx_t_2, __pyx_t_3, __pyx_t_1);
              __pyx_t_2 = 0; __pyx_t_3 = 0; __pyx_t_1 = 0;
              __PYX_ERR(1, 2297, __pyx_L7_except_error)

     2298:

    +2299:         for i in self.children:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2299, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
        __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_9 = 0;
        __pyx_t_10 = NULL;
      } else {
        __pyx_t_9 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2299, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_10 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(1, 2299, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      for (;;) {
        if (likely(!__pyx_t_10)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 2299, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2299, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          } else {
            if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_9); __Pyx_INCREF(__pyx_t_1); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(1, 2299, __pyx_L1_error)
            #else
            __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2299, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_1);
            #endif
          }
        } else {
          __pyx_t_1 = __pyx_t_10(__pyx_t_3);
          if (unlikely(!__pyx_t_1)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 2299, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_1);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
        __pyx_t_1 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +2300:             i.mount_recursive(ignore_errors)

        __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_mount_recursive); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_11 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
          __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_2);
          if (likely(__pyx_t_11)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_11);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_2, function);
          }
        }
        if (!__pyx_t_11) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_ignore_errors); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2300, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2300, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_12);
          __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
          __Pyx_INCREF(__pyx_v_ignore_errors);
          __Pyx_GIVEREF(__pyx_v_ignore_errors);
          PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_v_ignore_errors);
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2300, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        }
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     2301:

    +2302:     def umount(self, force=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9umount(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_9umount(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_force = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("umount (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "umount") < 0)) __PYX_ERR(1, 2302, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_force = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("umount", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2302, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.umount", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_8umount(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_force);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_8umount(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_force) {
      int __pyx_v_flags;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("umount", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSDataset.umount", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2303:         cdef int flags = 0

      __pyx_v_flags = 0;

     2304:         cdef int ret

     2305:

    +2306:         if force:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2306, __pyx_L1_error)
      if (__pyx_t_1) {
    /* … */
      }

    +2307:             flags = zfs.MS_FORCE

        __pyx_v_flags = MS_FORCE;

     2308:

    +2309:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2310:             ret = libzfs.zfs_unmountall(self.handle, flags)

            __pyx_v_ret = zfs_unmountall(__pyx_v_self->__pyx_base.handle, __pyx_v_flags);
          }

     2311:

    +2312:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2313:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2313, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2313, __pyx_L1_error)

     2314:

    +2315:         self.root.write_history('zfs umount', '-f' if force else '', self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2315, __pyx_L1_error)
      if (__pyx_t_1) {
        __Pyx_INCREF(__pyx_kp_s_f);
        __pyx_t_4 = __pyx_kp_s_f;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_4 = __pyx_kp_s__11;
      }
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = NULL;
      __pyx_t_7 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_7 = 1;
        }
      }
      __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_umount);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_umount);
      PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_kp_s_zfs_umount);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
      __pyx_t_4 = 0;
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2315, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2316:

    +2317:     def umount_recursive(self, force=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_11umount_recursive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_11umount_recursive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_force = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("umount_recursive (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "umount_recursive") < 0)) __PYX_ERR(1, 2317, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_force = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("umount_recursive", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2317, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.umount_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_10umount_recursive(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_force);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_10umount_recursive(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_force) {
      PyObject *__pyx_v_i = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("umount_recursive", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.ZFSDataset.umount_recursive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_i);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2318:         if self.type != DatasetType.FILESYSTEM:

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_type); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2318, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_DatasetType); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2318, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FILESYSTEM); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2318, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2318, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2318, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (__pyx_t_4) {
    /* … */
      }

    +2319:             return

        __Pyx_XDECREF(__pyx_r);
        __pyx_r = Py_None; __Pyx_INCREF(Py_None);
        goto __pyx_L0;

     2320:

    +2321:         self.umount(force)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_umount); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2321, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_1)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_1) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_force); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2321, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2321, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
        __Pyx_INCREF(__pyx_v_force);
        __Pyx_GIVEREF(__pyx_v_force);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_force);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2321, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2322:

    +2323:         for i in self.children:

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_children); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2323, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
        __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
        __pyx_t_7 = NULL;
      } else {
        __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2323, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2323, __pyx_L1_error)
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      for (;;) {
        if (likely(!__pyx_t_7)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2323, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2323, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          } else {
            if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
            #if CYTHON_COMPILING_IN_CPYTHON
            __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 2323, __pyx_L1_error)
            #else
            __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2323, __pyx_L1_error)
            __Pyx_GOTREF(__pyx_t_2);
            #endif
          }
        } else {
          __pyx_t_2 = __pyx_t_7(__pyx_t_3);
          if (unlikely(!__pyx_t_2)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
              else __PYX_ERR(1, 2323, __pyx_L1_error)
            }
            break;
          }
          __Pyx_GOTREF(__pyx_t_2);
        }
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
        __pyx_t_2 = 0;
    /* … */
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +2324:             i.umount_recursive(force)

        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_n_s_umount_recursive); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2324, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_1 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_1)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_1);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_1) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_force); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2324, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2324, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1); __pyx_t_1 = NULL;
          __Pyx_INCREF(__pyx_v_force);
          __Pyx_GIVEREF(__pyx_v_force);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_force);
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2324, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2325:

    +2326:     def send(self, fd, **kwargs):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_13send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_13send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fd = 0;
      PyObject *__pyx_v_kwargs = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send (wrapper)", 0);
      __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
      __Pyx_GOTREF(__pyx_v_kwargs);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,0};
        PyObject* values[1] = {0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "send") < 0)) __PYX_ERR(1, 2326, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        }
        __pyx_v_fd = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("send", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2326, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
      __Pyx_AddTraceback("libzfs.ZFSDataset.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_12send(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_fd, __pyx_v_kwargs);

      /* function exit code */
      __Pyx_XDECREF(__pyx_v_kwargs);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_12send(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_kwargs) {
      int __pyx_v_cfd;
      int __pyx_v_err;
      char *__pyx_v_ctoname;
      char *__pyx_v_cfromname;
      sendflags_t __pyx_v_cflags;
      PyObject *__pyx_v_toname = NULL;
      PyObject *__pyx_v_fromname = NULL;
      PyObject *__pyx_v_flags = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSDataset.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_toname);
      __Pyx_XDECREF(__pyx_v_fromname);
      __Pyx_XDECREF(__pyx_v_flags);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2327:         cdef int cfd = fd

      __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2327, __pyx_L1_error)
      __pyx_v_cfd = __pyx_t_1;

     2328:         cdef int err

     2329:         cdef char *ctoname

    +2330:         cdef char *cfromname = NULL

      __pyx_v_cfromname = NULL;

     2331:         cdef libzfs.sendflags_t cflags

     2332:

    +2333:         toname = kwargs.get('toname')

      __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_toname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2333, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_toname = __pyx_t_2;
      __pyx_t_2 = 0;

    +2334:         fromname = kwargs.get('fromname')

      __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_fromname, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2334, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_fromname = __pyx_t_2;
      __pyx_t_2 = 0;

    +2335:         flags = kwargs.get('flags')

      __pyx_t_2 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_flags, Py_None); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2335, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_flags = __pyx_t_2;
      __pyx_t_2 = 0;

    +2336:         memset(&cflags, 0, cython.sizeof(libzfs.sendflags_t))

      memset((&__pyx_v_cflags), 0, (sizeof(sendflags_t)));

     2337:

    +2338:         if not toname:

      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_toname); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2338, __pyx_L1_error)
      __pyx_t_4 = ((!__pyx_t_3) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +2339:             raise ValueError('toname argument is required')

        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2339, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2339, __pyx_L1_error)
    /* … */
      __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_toname_argument_is_required); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(1, 2339, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__54);
      __Pyx_GIVEREF(__pyx_tuple__54);

     2340:

    +2341:         ctoname = toname

      __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_toname); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 2341, __pyx_L1_error)
      __pyx_v_ctoname = __pyx_t_5;

     2342:

    +2343:         if fromname:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_fromname); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2343, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +2344:             cfromname = fromname

        __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_fromname); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 2344, __pyx_L1_error)
        __pyx_v_cfromname = __pyx_t_5;

     2345:

    +2346:         if flags:

      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_flags); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2346, __pyx_L1_error)
      if (__pyx_t_4) {
    /* … */
      }

    +2347:             convert_sendflags(flags, &cflags)

        __pyx_t_2 = __pyx_f_6libzfs_convert_sendflags(__pyx_v_flags, (&__pyx_v_cflags)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2347, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2348:

    +2349:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L8;
            }
            __pyx_L8:;
          }
      }

    +2350:             err = libzfs.zfs_send(self.handle, cfromname, ctoname, &cflags, cfd, NULL, NULL, NULL)

            __pyx_v_err = zfs_send(__pyx_v_self->__pyx_base.handle, __pyx_v_cfromname, __pyx_v_ctoname, (&__pyx_v_cflags), __pyx_v_cfd, NULL, NULL, NULL);
          }

     2351:

    +2352:         if err != 0:

      __pyx_t_4 = ((__pyx_v_err != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +2353:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2353, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2353, __pyx_L1_error)

     2354:

    +2355:     def get_send_progress(self, fd):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_15get_send_progress(PyObject *__pyx_v_self, PyObject *__pyx_v_fd); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_15get_send_progress(PyObject *__pyx_v_self, PyObject *__pyx_v_fd) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_send_progress (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_14get_send_progress(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), ((PyObject *)__pyx_v_fd));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_14get_send_progress(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_fd) {
      zfs_cmd_t __pyx_v_cmd;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("get_send_progress", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSDataset.get_send_progress", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2356:         cdef zfs.zfs_cmd_t cmd

     2357:         cdef int ret

     2358:

    +2359:         memset(&cmd, 0, cython.sizeof(libzfs.zfs_cmd))

      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_libzfs); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2359, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zfs_cmd); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2359, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      memset((&__pyx_v_cmd), 0, (sizeof(__pyx_t_2)));
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2360:

    +2361:         cmd.zc_cookie = fd

      __pyx_t_3 = __Pyx_PyInt_As_uint64_t(__pyx_v_fd); if (unlikely((__pyx_t_3 == (uint64_t)-1) && PyErr_Occurred())) __PYX_ERR(1, 2361, __pyx_L1_error)
      __pyx_v_cmd.zc_cookie = __pyx_t_3;

    +2362:         strncpy(cmd.zc_name, self.name, zfs.MAXPATHLEN)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 2362, __pyx_L1_error)
      strncpy(__pyx_v_cmd.zc_name, __pyx_t_4, MAXPATHLEN);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2363:

    +2364:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2365:             ret = libzfs.zfs_ioctl(self.root.handle, zfs.ZFS_IOC_SEND_PROGRESS, &cmd)

            __pyx_v_ret = zfs_ioctl(__pyx_v_self->__pyx_base.root->handle, ZFS_IOC_SEND_PROGRESS, (&__pyx_v_cmd));
          }

     2366:

    +2367:         if ret != 0:

      __pyx_t_5 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_5) {
    /* … */
      }

    +2368:             raise ZFSException(Error.FAULT, "Cannot obtain send progress")

        __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_ZFSException); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_Error); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_FAULT); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = NULL;
        __pyx_t_8 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_8 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_GIVEREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_t_7);
        __Pyx_INCREF(__pyx_kp_s_Cannot_obtain_send_progress);
        __Pyx_GIVEREF(__pyx_kp_s_Cannot_obtain_send_progress);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_kp_s_Cannot_obtain_send_progress);
        __pyx_t_7 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2368, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2368, __pyx_L1_error)

     2369:

    +2370:         return cmd.zc_cookie

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyInt_From_uint64_t(__pyx_v_cmd.zc_cookie); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2370, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

     2371:

    +2372:     def promote(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_17promote(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_17promote(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("promote (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_16promote(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_16promote(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self) {
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("promote", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSDataset.promote", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2373:         cdef int ret

     2374:

    +2375:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2376:             ret = libzfs.zfs_promote(self.handle)

            __pyx_v_ret = zfs_promote(__pyx_v_self->__pyx_base.handle);
          }

     2377:

    +2378:         if ret != 0:

      __pyx_t_1 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2379:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2379, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2379, __pyx_L1_error)

     2380:

    +2381:         self.root.write_history('zfs promote', self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_5) {
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_promote);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_promote);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_kp_s_zfs_promote);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2381, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2382:

    +2383:     def snapshot(self, name, fsopts=None, recursive=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_19snapshot(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_19snapshot(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_fsopts = 0;
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("snapshot (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_fsopts,&__pyx_n_s_recursive,0};
        PyObject* values[3] = {0,0,0};
        values[1] = ((PyObject *)Py_None);
        values[2] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fsopts);
              if (value) { values[1] = value; kw_args--; }
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[2] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "snapshot") < 0)) __PYX_ERR(1, 2383, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_name = values[0];
        __pyx_v_fsopts = values[1];
        __pyx_v_recursive = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("snapshot", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2383, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.snapshot", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_18snapshot(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_name, __pyx_v_fsopts, __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_18snapshot(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_fsopts, PyObject *__pyx_v_recursive) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_cfsopts = 0;
      char const *__pyx_v_c_name;
      int __pyx_v_c_recursive;
      int __pyx_v_ret;
      PyObject *__pyx_v_hfsopts = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("snapshot", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSDataset.snapshot", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_cfsopts);
      __Pyx_XDECREF(__pyx_v_hfsopts);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2384:         cdef NVList cfsopts = NVList(otherdict=fsopts or {})

      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_fsopts); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2384, __pyx_L1_error)
      if (!__pyx_t_3) {
      } else {
        __Pyx_INCREF(__pyx_v_fsopts);
        __pyx_t_2 = __pyx_v_fsopts;
        goto __pyx_L3_bool_binop_done;
      }
      __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_2 = __pyx_t_4;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_L3_bool_binop_done:;
      if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_otherdict, __pyx_t_2) < 0) __PYX_ERR(1, 2384, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_cfsopts = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +2385:         cdef const char *c_name = name

      __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(1, 2385, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_5;

    +2386:         cdef int c_recursive = recursive

      __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_recursive); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2386, __pyx_L1_error)
      __pyx_v_c_recursive = __pyx_t_6;

     2387:         cdef int ret

     2388:

    +2389:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L7;
            }
            __pyx_L7:;
          }
      }

    +2390:             ret = libzfs.zfs_snapshot(

            __pyx_v_ret = zfs_snapshot(__pyx_v_self->__pyx_base.root->handle, __pyx_v_c_name, __pyx_v_c_recursive, __pyx_v_cfsopts->handle);
          }

     2391:                 self.root.handle,

     2392:                 c_name,

     2393:                 c_recursive,

     2394:                 cfsopts.handle

     2395:             )

     2396:

    +2397:         if ret != 0:

      __pyx_t_3 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +2398:             raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2398, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2398, __pyx_L1_error)

     2399:

    +2400:         if self.root.history:

      __pyx_t_3 = (__pyx_v_self->__pyx_base.root->history != 0);
      if (__pyx_t_3) {
    /* … */
      }

    +2401:             hfsopts = self.root.generate_history_opts(fsopts, '-o')

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_generate_history_opts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_INCREF(__pyx_v_fsopts);
        __Pyx_GIVEREF(__pyx_v_fsopts);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_fsopts);
        __Pyx_INCREF(__pyx_kp_s_o);
        __Pyx_GIVEREF(__pyx_kp_s_o);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_o);
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_v_hfsopts = __pyx_t_2;
        __pyx_t_2 = 0;

    +2402:             self.root.write_history('zfs snapshot', '-r' if recursive else '', hfsopts, name)

        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2402, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(1, 2402, __pyx_L1_error)
        if (__pyx_t_3) {
          __Pyx_INCREF(__pyx_kp_s_r);
          __pyx_t_8 = __pyx_kp_s_r;
        } else {
          __Pyx_INCREF(__pyx_kp_s__11);
          __pyx_t_8 = __pyx_kp_s__11;
        }
        __pyx_t_4 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_4)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_4);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2402, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_4) {
          __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_4); __pyx_t_4 = NULL;
        }
        __Pyx_INCREF(__pyx_kp_s_zfs_snapshot);
        __Pyx_GIVEREF(__pyx_kp_s_zfs_snapshot);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_kp_s_zfs_snapshot);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_t_8);
        __Pyx_INCREF(__pyx_v_hfsopts);
        __Pyx_GIVEREF(__pyx_v_hfsopts);
        PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_7, __pyx_v_hfsopts);
        __Pyx_INCREF(__pyx_v_name);
        __Pyx_GIVEREF(__pyx_v_name);
        PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_7, __pyx_v_name);
        __pyx_t_8 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2402, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

     2403:

    +2404:     def receive(self, fd, force=False, nomount=False, resumable=False, props=None, limitds=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_21receive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_21receive(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fd = 0;
      PyObject *__pyx_v_force = 0;
      PyObject *__pyx_v_nomount = 0;
      PyObject *__pyx_v_resumable = 0;
      PyObject *__pyx_v_props = 0;
      PyObject *__pyx_v_limitds = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("receive (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,&__pyx_n_s_force,&__pyx_n_s_nomount,&__pyx_n_s_resumable,&__pyx_n_s_props,&__pyx_n_s_limitds,0};
        PyObject* values[6] = {0,0,0,0,0,0};
        values[1] = ((PyObject *)Py_False);
        values[2] = ((PyObject *)Py_False);
        values[3] = ((PyObject *)Py_False);
        values[4] = ((PyObject *)Py_None);
        values[5] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force);
              if (value) { values[1] = value; kw_args--; }
            }
            case  2:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_nomount);
              if (value) { values[2] = value; kw_args--; }
            }
            case  3:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_resumable);
              if (value) { values[3] = value; kw_args--; }
            }
            case  4:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_props);
              if (value) { values[4] = value; kw_args--; }
            }
            case  5:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_limitds);
              if (value) { values[5] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "receive") < 0)) __PYX_ERR(1, 2404, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
            case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
            case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_fd = values[0];
        __pyx_v_force = values[1];
        __pyx_v_nomount = values[2];
        __pyx_v_resumable = values[3];
        __pyx_v_props = values[4];
        __pyx_v_limitds = values[5];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("receive", 0, 1, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2404, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_20receive(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_fd, __pyx_v_force, __pyx_v_nomount, __pyx_v_resumable, __pyx_v_props, __pyx_v_limitds);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_20receive(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_force, PyObject *__pyx_v_nomount, PyObject *__pyx_v_resumable, PyObject *__pyx_v_props, PyObject *__pyx_v_limitds) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("receive", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZFSDataset.receive", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_24generator19(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

    +2405:         self.root.receive(

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    /* … */
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __Pyx_INCREF(__pyx_v_fd);
      __Pyx_GIVEREF(__pyx_v_fd);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_fd);
      __pyx_t_2 = 0;
    /* … */
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2405, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +2406:             self.name,

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2406, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);

     2407:             fd,

    +2408:             force=force,

      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2408, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_force, __pyx_v_force) < 0) __PYX_ERR(1, 2408, __pyx_L1_error)

    +2409:             nomount=nomount,

      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_nomount, __pyx_v_nomount) < 0) __PYX_ERR(1, 2408, __pyx_L1_error)

    +2410:             resumable=resumable,

      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_resumable, __pyx_v_resumable) < 0) __PYX_ERR(1, 2408, __pyx_L1_error)

    +2411:             props=props,

      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_props, __pyx_v_props) < 0) __PYX_ERR(1, 2408, __pyx_L1_error)

     2412:             limitds=limitds

    +2413:         )

      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_limitds, __pyx_v_limitds) < 0) __PYX_ERR(1, 2408, __pyx_L1_error)

     2414:

    +2415:     def diff(self, fromsnap, tosnap):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_23diff(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_23diff(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fromsnap = 0;
      PyObject *__pyx_v_tosnap = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("diff (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fromsnap,&__pyx_n_s_tosnap,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fromsnap)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tosnap)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("diff", 1, 2, 2, 1); __PYX_ERR(1, 2415, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "diff") < 0)) __PYX_ERR(1, 2415, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_fromsnap = values[0];
        __pyx_v_tosnap = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("diff", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2415, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_22diff(((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_v_self), __pyx_v_fromsnap, __pyx_v_tosnap);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_22diff(struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self, PyObject *__pyx_v_fromsnap, PyObject *__pyx_v_tosnap) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff *__pyx_cur_scope;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("diff", 0);
      __pyx_cur_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff *)__pyx_tp_new_6libzfs___pyx_scope_struct_21_diff(__pyx_ptype_6libzfs___pyx_scope_struct_21_diff, __pyx_empty_tuple, NULL);
      if (unlikely(!__pyx_cur_scope)) {
        __Pyx_RefNannyFinishContext();
        return NULL;
      }
      __Pyx_GOTREF(__pyx_cur_scope);
      __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
      __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
      __pyx_cur_scope->__pyx_v_fromsnap = __pyx_v_fromsnap;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_fromsnap);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_fromsnap);
      __pyx_cur_scope->__pyx_v_tosnap = __pyx_v_tosnap;
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_tosnap);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_tosnap);
      {
        __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_6libzfs_10ZFSDataset_24generator19, (PyObject *) __pyx_cur_scope, __pyx_n_s_diff, __pyx_n_s_ZFSDataset_diff); if (unlikely(!gen)) __PYX_ERR(1, 2415, __pyx_L1_error)
        __Pyx_DECREF(__pyx_cur_scope);
        __Pyx_RefNannyFinishContext();
        return (PyObject *) gen;
      }

      /* function exit code */
      __pyx_L1_error:;
      __Pyx_AddTraceback("libzfs.ZFSDataset.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    static PyObject *__pyx_gb_6libzfs_10ZFSDataset_24generator19(__pyx_CoroutineObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
    {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("None", 0);
      __pyx_L3_first_run:;
      if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2415, __pyx_L1_error)
    /* … */
      /* function exit code */
      PyErr_SetNone(PyExc_StopIteration);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_r); __pyx_r = 0;
      __pyx_generator->resume_label = -1;
      __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
    struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff {
      PyObject_HEAD
      int __pyx_v_c_flags;
      char *__pyx_v_c_fromsnap;
      char *__pyx_v_c_tosnap;
      PyObject *__pyx_v_f;
      PyObject *__pyx_v_fromsnap;
      PyObject *__pyx_v_line;
      PyObject *__pyx_v_ret;
      PyObject *__pyx_v_rfd;
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_self;
      PyObject *__pyx_v_thr;
      PyObject *__pyx_v_tosnap;
      PyObject *__pyx_v_wfd;
      PyObject *__pyx_v_worker;
      PyObject *__pyx_t_0;
      Py_ssize_t __pyx_t_1;
      PyObject *__pyx_t_2;
      PyObject *__pyx_t_3;
      PyObject *__pyx_t_4;
      PyObject *__pyx_t_5;
      PyObject *(*__pyx_t_6)(PyObject *);
    };

    +2416:         cdef char *c_fromsnap = fromsnap

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_fromsnap); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2416, __pyx_L1_error)
      __pyx_cur_scope->__pyx_v_c_fromsnap = __pyx_t_1;

    +2417:         cdef char *c_tosnap = tosnap

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_cur_scope->__pyx_v_tosnap); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2417, __pyx_L1_error)
      __pyx_cur_scope->__pyx_v_c_tosnap = __pyx_t_1;

    +2418:         cdef int c_flags = libzfs.ZFS_DIFF_PARSEABLE | libzfs.ZFS_DIFF_TIMESTAMP | libzfs.ZFS_DIFF_CLASSIFY

      __pyx_cur_scope->__pyx_v_c_flags = ((ZFS_DIFF_PARSEABLE | ZFS_DIFF_TIMESTAMP) | ZFS_DIFF_CLASSIFY);

    +2419:         ret = None

      __Pyx_INCREF(Py_None);
      __Pyx_GIVEREF(Py_None);
      __pyx_cur_scope->__pyx_v_ret = Py_None;

     2420:

    +2421:         def worker(fd):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_4diff_1worker(PyObject *__pyx_self, PyObject *__pyx_v_fd); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_10ZFSDataset_4diff_1worker = {"worker", (PyCFunction)__pyx_pw_6libzfs_10ZFSDataset_4diff_1worker, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_10ZFSDataset_4diff_1worker(PyObject *__pyx_self, PyObject *__pyx_v_fd) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("worker (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_10ZFSDataset_4diff_worker(__pyx_self, ((PyObject *)__pyx_v_fd));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10ZFSDataset_4diff_worker(PyObject *__pyx_self, PyObject *__pyx_v_fd) {
      struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff *__pyx_cur_scope;
      struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff *__pyx_outer_scope;
      int __pyx_v_c_fd;
      int __pyx_v_c_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("worker", 0);
      __pyx_outer_scope = (struct __pyx_obj_6libzfs___pyx_scope_struct_21_diff *) __Pyx_CyFunction_GetClosure(__pyx_self);
      __pyx_cur_scope = __pyx_outer_scope;
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSDataset.diff.worker", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__55 = PyTuple_Pack(3, __pyx_n_s_fd, __pyx_n_s_c_fd, __pyx_n_s_c_ret); if (unlikely(!__pyx_tuple__55)) __PYX_ERR(1, 2421, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__55);
      __Pyx_GIVEREF(__pyx_tuple__55);
    /* … */
      __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_6libzfs_10ZFSDataset_4diff_1worker, 0, __pyx_n_s_diff_locals_worker, ((PyObject*)__pyx_cur_scope), __pyx_n_s_libzfs, __pyx_d, ((PyObject *)__pyx_codeobj__56)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2421, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_cur_scope->__pyx_v_worker = __pyx_t_2;
      __pyx_t_2 = 0;
      __pyx_codeobj__56 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__55, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_worker, 2421, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__56)) __PYX_ERR(1, 2421, __pyx_L1_error)

    +2422:             cdef int c_fd = fd

      __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2422, __pyx_L1_error)
      __pyx_v_c_fd = __pyx_t_1;

     2423:             cdef int c_ret

     2424:             nonlocal ret

     2425:

    +2426:             with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L4_error: {
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L1_error;
            }
            __pyx_L5:;
          }
      }

    +2427:                 c_ret = libzfs.zfs_show_diffs(self.handle, c_fd, c_fromsnap, c_tosnap, c_flags)

            if (unlikely(!__pyx_cur_scope->__pyx_v_self)) { __Pyx_RaiseClosureNameError("self"); __PYX_ERR(1, 2427, __pyx_L4_error) }
            __pyx_v_c_ret = zfs_show_diffs(__pyx_cur_scope->__pyx_v_self->__pyx_base.handle, __pyx_v_c_fd, __pyx_cur_scope->__pyx_v_c_fromsnap, __pyx_cur_scope->__pyx_v_c_tosnap, __pyx_cur_scope->__pyx_v_c_flags);
          }

     2428:

    +2429:             ret = c_ret

      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_c_ret); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2429, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_ret);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_ret, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;

     2430:

    +2431:         rfd, wfd = os.pipe()

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2431, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_pipe); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2431, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_4, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2431, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_2 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2431, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
        PyObject* sequence = __pyx_t_2;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          __PYX_ERR(1, 2431, __pyx_L1_error)
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0);
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1);
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0);
          __pyx_t_3 = PyList_GET_ITEM(sequence, 1);
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_3);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2431, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2431, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        #endif
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2431, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
        index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_3 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_3)) goto __pyx_L4_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) __PYX_ERR(1, 2431, __pyx_L1_error)
        __pyx_t_6 = NULL;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        goto __pyx_L5_unpacking_done;
        __pyx_L4_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_6 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        __PYX_ERR(1, 2431, __pyx_L1_error)
        __pyx_L5_unpacking_done:;
      }
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_cur_scope->__pyx_v_rfd = __pyx_t_4;
      __pyx_t_4 = 0;
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_cur_scope->__pyx_v_wfd = __pyx_t_3;
      __pyx_t_3 = 0;

    +2432:         thr = threading.Thread(target=worker, args=(wfd,), daemon=True)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_threading); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Thread); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_target, __pyx_cur_scope->__pyx_v_worker) < 0) __PYX_ERR(1, 2432, __pyx_L1_error)
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_cur_scope->__pyx_v_wfd);
      __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_wfd);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_cur_scope->__pyx_v_wfd);
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_args, __pyx_t_4) < 0) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_daemon, Py_True) < 0) __PYX_ERR(1, 2432, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2432, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_cur_scope->__pyx_v_thr = __pyx_t_4;
      __pyx_t_4 = 0;

    +2433:         thr.start()

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_thr, __pyx_n_s_start); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2433, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2433, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_4 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2433, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     2434:

    +2435:         with os.fdopen(rfd, 'r') as f:

      /*with:*/ {
        __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_fdopen); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_5 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__pyx_t_2) {
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
        }
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rfd);
        __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rfd);
        PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_7, __pyx_cur_scope->__pyx_v_rfd);
        __Pyx_INCREF(__pyx_n_s_r_2);
        __Pyx_GIVEREF(__pyx_n_s_r_2);
        PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_7, __pyx_n_s_r_2);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_8 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2435, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_5 = __Pyx_PyObject_LookupSpecial(__pyx_t_4, __pyx_n_s_enter); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2435, __pyx_L6_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_2 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (__pyx_t_2) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2435, __pyx_L6_error)
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        } else {
          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2435, __pyx_L6_error)
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = __pyx_t_3;
        __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        /*try:*/ {
          {
            /*try:*/ {
              __Pyx_GIVEREF(__pyx_t_5);
              __pyx_cur_scope->__pyx_v_f = __pyx_t_5;
              __pyx_t_5 = 0;
    /* … */
            }
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
            __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
            goto __pyx_L17_try_end;
            __pyx_L10_error:;
            __Pyx_PyThreadState_assign
            __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            /*except:*/ {
              __Pyx_AddTraceback("libzfs.ZFSDataset.diff", __pyx_clineno, __pyx_lineno, __pyx_filename);
              if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_2, &__pyx_t_3) < 0) __PYX_ERR(1, 2435, __pyx_L12_except_error)
              __Pyx_GOTREF(__pyx_t_5);
              __Pyx_GOTREF(__pyx_t_2);
              __Pyx_GOTREF(__pyx_t_3);
              __pyx_t_4 = PyTuple_Pack(3, __pyx_t_5, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2435, __pyx_L12_except_error)
              __Pyx_GOTREF(__pyx_t_4);
              __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
              if (unlikely(!__pyx_t_13)) __PYX_ERR(1, 2435, __pyx_L12_except_error)
              __Pyx_GOTREF(__pyx_t_13);
              __pyx_t_14 = __Pyx_PyObject_IsTrue(__pyx_t_13);
              __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
              if (__pyx_t_14 < 0) __PYX_ERR(1, 2435, __pyx_L12_except_error)
              __pyx_t_15 = ((!(__pyx_t_14 != 0)) != 0);
              if (__pyx_t_15) {
                __Pyx_GIVEREF(__pyx_t_5);
                __Pyx_GIVEREF(__pyx_t_2);
                __Pyx_XGIVEREF(__pyx_t_3);
                __Pyx_ErrRestoreWithState(__pyx_t_5, __pyx_t_2, __pyx_t_3);
                __pyx_t_5 = 0; __pyx_t_2 = 0; __pyx_t_3 = 0;
                __PYX_ERR(1, 2435, __pyx_L12_except_error)
              }
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              goto __pyx_L11_exception_handled;
            }
            __pyx_L12_except_error:;
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            goto __pyx_L1_error;
            __pyx_L11_exception_handled:;
            __Pyx_PyThreadState_assign
            __Pyx_XGIVEREF(__pyx_t_9);
            __Pyx_XGIVEREF(__pyx_t_10);
            __Pyx_XGIVEREF(__pyx_t_11);
            __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
            __pyx_L17_try_end:;
          }
        }
        /*finally:*/ {
          /*normal exit:*/{
            if (__pyx_t_8) {
              __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__57, NULL);
              __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
              if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2435, __pyx_L1_error)
              __Pyx_GOTREF(__pyx_t_11);
              __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
            }
            goto __pyx_L9;
          }
          __pyx_L9:;
        }
        goto __pyx_L24;
        __pyx_L6_error:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L1_error;
        __pyx_L24:;
      }
    /* … */
      __pyx_tuple__57 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_tuple__57)) __PYX_ERR(1, 2435, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__57);
      __Pyx_GIVEREF(__pyx_tuple__57);

    +2436:             for line in f:

              if (likely(PyList_CheckExact(__pyx_cur_scope->__pyx_v_f)) || PyTuple_CheckExact(__pyx_cur_scope->__pyx_v_f)) {
                __pyx_t_5 = __pyx_cur_scope->__pyx_v_f; __Pyx_INCREF(__pyx_t_5); __pyx_t_7 = 0;
                __pyx_t_12 = NULL;
              } else {
                __pyx_t_7 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_cur_scope->__pyx_v_f); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2436, __pyx_L10_error)
                __Pyx_GOTREF(__pyx_t_5);
                __pyx_t_12 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 2436, __pyx_L10_error)
              }
              for (;;) {
                if (likely(!__pyx_t_12)) {
                  if (likely(PyList_CheckExact(__pyx_t_5))) {
                    if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_5)) break;
                    #if CYTHON_COMPILING_IN_CPYTHON
                    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 2436, __pyx_L10_error)
                    #else
                    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2436, __pyx_L10_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    #endif
                  } else {
                    if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
                    #if CYTHON_COMPILING_IN_CPYTHON
                    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_7); __Pyx_INCREF(__pyx_t_4); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 2436, __pyx_L10_error)
                    #else
                    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2436, __pyx_L10_error)
                    __Pyx_GOTREF(__pyx_t_4);
                    #endif
                  }
                } else {
                  __pyx_t_4 = __pyx_t_12(__pyx_t_5);
                  if (unlikely(!__pyx_t_4)) {
                    PyObject* exc_type = PyErr_Occurred();
                    if (exc_type) {
                      if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
                      else __PYX_ERR(1, 2436, __pyx_L10_error)
                    }
                    break;
                  }
                  __Pyx_GOTREF(__pyx_t_4);
                }
                __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_line);
                __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_line, __pyx_t_4);
                __Pyx_GIVEREF(__pyx_t_4);
                __pyx_t_4 = 0;
    /* … */
              }
              __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +2437:                 yield DiffRecord(raw=line)

                __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_DiffRecord); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2437, __pyx_L10_error)
                __Pyx_GOTREF(__pyx_t_4);
                __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2437, __pyx_L10_error)
                __Pyx_GOTREF(__pyx_t_3);
                if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_raw, __pyx_cur_scope->__pyx_v_line) < 0) __PYX_ERR(1, 2437, __pyx_L10_error)
                __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2437, __pyx_L10_error)
                __Pyx_GOTREF(__pyx_t_2);
                __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
                __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
                __pyx_r = __pyx_t_2;
                __pyx_t_2 = 0;
                __Pyx_XGIVEREF(__pyx_t_5);
                __pyx_cur_scope->__pyx_t_0 = __pyx_t_5;
                __pyx_cur_scope->__pyx_t_1 = __pyx_t_7;
                __Pyx_XGIVEREF(__pyx_t_8);
                __pyx_cur_scope->__pyx_t_2 = __pyx_t_8;
                __Pyx_XGIVEREF(__pyx_t_9);
                __pyx_cur_scope->__pyx_t_3 = __pyx_t_9;
                __Pyx_XGIVEREF(__pyx_t_10);
                __pyx_cur_scope->__pyx_t_4 = __pyx_t_10;
                __Pyx_XGIVEREF(__pyx_t_11);
                __pyx_cur_scope->__pyx_t_5 = __pyx_t_11;
                __pyx_cur_scope->__pyx_t_6 = __pyx_t_12;
                __Pyx_XGIVEREF(__pyx_r);
                __Pyx_RefNannyFinishContext();
                /* return from generator, yielding value */
                __pyx_generator->resume_label = 1;
                return __pyx_r;
                __pyx_L20_resume_from_yield:;
                __pyx_t_5 = __pyx_cur_scope->__pyx_t_0;
                __pyx_cur_scope->__pyx_t_0 = 0;
                __Pyx_XGOTREF(__pyx_t_5);
                __pyx_t_7 = __pyx_cur_scope->__pyx_t_1;
                __pyx_t_8 = __pyx_cur_scope->__pyx_t_2;
                __pyx_cur_scope->__pyx_t_2 = 0;
                __Pyx_XGOTREF(__pyx_t_8);
                __pyx_t_9 = __pyx_cur_scope->__pyx_t_3;
                __pyx_cur_scope->__pyx_t_3 = 0;
                __Pyx_XGOTREF(__pyx_t_9);
                __pyx_t_10 = __pyx_cur_scope->__pyx_t_4;
                __pyx_cur_scope->__pyx_t_4 = 0;
                __Pyx_XGOTREF(__pyx_t_10);
                __pyx_t_11 = __pyx_cur_scope->__pyx_t_5;
                __pyx_cur_scope->__pyx_t_5 = 0;
                __Pyx_XGOTREF(__pyx_t_11);
                __pyx_t_12 = __pyx_cur_scope->__pyx_t_6;
                if (unlikely(!__pyx_sent_value)) __PYX_ERR(1, 2437, __pyx_L10_error)

     2438:

    +2439:         thr.join()

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_thr, __pyx_n_s_join); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_5) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2439, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2439, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2440:

    +2441:         if ret != 0:

      __pyx_t_3 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_ret, __pyx_int_0, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2441, __pyx_L1_error)
      __pyx_t_15 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_15 < 0)) __PYX_ERR(1, 2441, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_15) {
    /* … */
      }

    +2442:             raise self.root.get_error()

        __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_cur_scope->__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_cur_scope->__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2442, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2442, __pyx_L1_error)

     2443:

     2444:

    +2445: cdef class ZFSSnapshot(ZFSObject):

    struct __pyx_obj_6libzfs_ZFSSnapshot {
      struct __pyx_obj_6libzfs_ZFSObject __pyx_base;
    };

    +2446:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot___getstate__(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot___getstate__(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self) {
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2447:         ret = super(ZFSSnapshot, self).__getstate__()

      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
      __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getstate); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2447, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2447, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2447, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_ret = __pyx_t_1;
      __pyx_t_1 = 0;

    +2448:         ret.update({

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ret, __pyx_n_s_update); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2448, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);

    +2449:             'holds': self.holds,

      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_holds); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_holds, __pyx_t_4) < 0) __PYX_ERR(1, 2449, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    +2450:             'dataset': self.parent.name,

      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2450, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2450, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dataset, __pyx_t_5) < 0) __PYX_ERR(1, 2449, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +2451:             'snapshot_name': self.snapshot_name

      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2451, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_snapshot_name, __pyx_t_5) < 0) __PYX_ERR(1, 2449, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2448, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     2452:         })

    +2453:         return ret

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_ret);
      __pyx_r = __pyx_v_ret;
      goto __pyx_L0;

     2454:

    +2455:     def rollback(self, force=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_3rollback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_3rollback(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_force = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("rollback (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_force,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_force);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rollback") < 0)) __PYX_ERR(1, 2455, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_force = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("rollback", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2455, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.rollback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_2rollback(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_force);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_2rollback(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_force) {
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_parent = 0;
      int __pyx_v_c_force;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("rollback", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.rollback", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_parent);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2456:         cdef ZFSDataset parent

    +2457:         cdef int c_force = force

      __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_force); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2457, __pyx_L1_error)
      __pyx_v_c_force = __pyx_t_1;

     2458:         cdef int ret

     2459:

    +2460:         parent = <ZFSDataset>self.parent

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2460, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __pyx_t_2;
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_parent = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_3);
      __pyx_t_3 = 0;

     2461:

    +2462:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2463:             ret = libzfs.zfs_rollback(parent.handle, self.handle, c_force)

            __pyx_v_ret = zfs_rollback(__pyx_v_parent->__pyx_base.handle, __pyx_v_self->__pyx_base.handle, __pyx_v_c_force);
          }

     2464:

    +2465:         if ret != 0:

      __pyx_t_4 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_4) {
    /* … */
      }

    +2466:             raise self.root.get_error()

        __pyx_t_3 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2466, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2466, __pyx_L1_error)

     2467:

    +2468:         self.root.write_history('zfs rollback', '-f' if force else '', self.name)

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2468, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_force); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2468, __pyx_L1_error)
      if (__pyx_t_4) {
        __Pyx_INCREF(__pyx_kp_s_f);
        __pyx_t_5 = __pyx_kp_s_f;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_5 = __pyx_kp_s__11;
      }
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2468, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_7 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_7)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_7);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2468, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_7) {
        __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_rollback);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_rollback);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_zfs_rollback);
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_6);
      __pyx_t_5 = 0;
      __pyx_t_6 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2468, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2469:

    +2470:     def bookmark(self, name):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_5bookmark(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_5bookmark(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("bookmark (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_4bookmark(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), ((PyObject *)__pyx_v_name));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_4bookmark(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_name) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_bookmarks = 0;
      nvlist_t *__pyx_v_c_bookmarks;
      int __pyx_v_ret;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("bookmark", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.bookmark", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_bookmarks);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2471:         cdef NVList bookmarks

     2472:         cdef nvpair.nvlist_t *c_bookmarks

     2473:         cdef int ret

     2474:

    +2475:         bookmarks = NVList()

      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_bookmarks = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

    +2476:         bookmarks['{0}#{1}'.format(self.parent.name, name)] = self.name

      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_0_1_2, __pyx_n_s_format); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      __pyx_t_6 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_6 = 1;
        }
      }
      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      if (__pyx_t_4) {
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
      }
      __Pyx_GIVEREF(__pyx_t_5);
      PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, __pyx_t_5);
      __Pyx_INCREF(__pyx_v_name);
      __Pyx_GIVEREF(__pyx_v_name);
      PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_name);
      __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_bookmarks), __pyx_t_2, __pyx_t_1) < 0)) __PYX_ERR(1, 2476, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +2477:         c_bookmarks = bookmarks.handle

      __pyx_t_8 = __pyx_v_bookmarks->handle;
      __pyx_v_c_bookmarks = __pyx_t_8;

     2478:

    +2479:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2480:             ret = libzfs.lzc_bookmark(c_bookmarks, NULL)

            __pyx_v_ret = lzc_bookmark(__pyx_v_c_bookmarks, NULL);
          }

     2481:

    +2482:         if ret != 0:

      __pyx_t_9 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_9) {
    /* … */
      }

    +2483:             raise OSError(ret, os.strerror(ret))

        __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_strerror); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ret); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_7, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2483, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_GOTREF(__pyx_t_2);
        } else {
          __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2483, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_4);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_GIVEREF(__pyx_t_3);
          PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
          __pyx_t_3 = 0;
          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2483, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        }
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_2);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
        __pyx_t_1 = 0;
        __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2483, __pyx_L1_error)

     2484:

    +2485:     def clone(self, name, opts=None):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_7clone(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_7clone(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_name = 0;
      PyObject *__pyx_v_opts = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clone (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_opts,0};
        PyObject* values[2] = {0,0};
        values[1] = ((PyObject *)Py_None);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_opts);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "clone") < 0)) __PYX_ERR(1, 2485, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_name = values[0];
        __pyx_v_opts = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("clone", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2485, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_6clone(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_name, __pyx_v_opts);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_6clone(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_opts) {
      struct __pyx_obj_6libzfs_NVList *__pyx_v_copts = 0;
      nvlist_t *__pyx_v_copts_handle;
      char const *__pyx_v_c_name;
      int __pyx_v_ret;
      PyObject *__pyx_v_hopts = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clone", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.clone", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_copts);
      __Pyx_XDECREF(__pyx_v_hopts);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2486:         cdef NVList copts = None

      __Pyx_INCREF(Py_None);
      __pyx_v_copts = ((struct __pyx_obj_6libzfs_NVList *)Py_None);

    +2487:         cdef nvpair.nvlist_t *copts_handle = NULL

      __pyx_v_copts_handle = NULL;

    +2488:         cdef const char *c_name = name

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_name); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2488, __pyx_L1_error)
      __pyx_v_c_name = __pyx_t_1;

     2489:         cdef int ret

     2490:

    +2491:         if opts:

      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_opts); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2491, __pyx_L1_error)
      if (__pyx_t_2) {
    /* … */
      }

    +2492:             copts = NVList(otherdict=opts)

        __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_otherdict, __pyx_v_opts) < 0) __PYX_ERR(1, 2492, __pyx_L1_error)
        __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_empty_tuple, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2492, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF_SET(__pyx_v_copts, ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_4));
        __pyx_t_4 = 0;

    +2493:             copts_handle = copts.handle

        __pyx_t_5 = __pyx_v_copts->handle;
        __pyx_v_copts_handle = __pyx_t_5;

     2494:

    +2495:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2496:             ret = libzfs.zfs_clone(

            __pyx_v_ret = zfs_clone(__pyx_v_self->__pyx_base.handle, __pyx_v_c_name, __pyx_v_copts_handle);
          }

     2497:                 self.handle,

     2498:                 c_name,

     2499:                 copts_handle

     2500:             )

     2501:

    +2502:         if ret != 0:

      __pyx_t_2 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2503:             raise self.root.get_error()

        __pyx_t_4 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2503, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_Raise(__pyx_t_4, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __PYX_ERR(1, 2503, __pyx_L1_error)

     2504:

    +2505:         if self.root.history:

      __pyx_t_2 = (__pyx_v_self->__pyx_base.root->history != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2506:             hopts = self.root.generate_history_opts(opts, '-o')

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_generate_history_opts); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(__pyx_v_opts);
        __Pyx_GIVEREF(__pyx_v_opts);
        PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_opts);
        __Pyx_INCREF(__pyx_kp_s_o);
        __Pyx_GIVEREF(__pyx_kp_s_o);
        PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_kp_s_o);
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2506, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_v_hopts = __pyx_t_4;
        __pyx_t_4 = 0;

    +2507:             self.root.write_history('zfs clone', hopts, self.name)

        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = NULL;
        __pyx_t_7 = 0;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_3, function);
            __pyx_t_7 = 1;
          }
        }
        __pyx_t_9 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        if (__pyx_t_6) {
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
        }
        __Pyx_INCREF(__pyx_kp_s_zfs_clone);
        __Pyx_GIVEREF(__pyx_kp_s_zfs_clone);
        PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_7, __pyx_kp_s_zfs_clone);
        __Pyx_INCREF(__pyx_v_hopts);
        __Pyx_GIVEREF(__pyx_v_hopts);
        PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_7, __pyx_v_hopts);
        __Pyx_GIVEREF(__pyx_t_8);
        PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_7, __pyx_t_8);
        __pyx_t_8 = 0;
        __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2507, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

     2508:

    +2509:     def hold(self, tag, recursive=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_9hold(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_9hold(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_tag = 0;
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("hold (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_tag,&__pyx_n_s_recursive,0};
        PyObject* values[2] = {0,0};
        values[1] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "hold") < 0)) __PYX_ERR(1, 2509, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_tag = values[0];
        __pyx_v_recursive = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("hold", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2509, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.hold", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_8hold(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_tag, __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_8hold(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_recursive) {
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_parent = 0;
      char const *__pyx_v_c_snapshot_name;
      char const *__pyx_v_c_tag;
      int __pyx_v_c_recursive;
      int __pyx_v_ret;
      PyObject *__pyx_v_snapshot_name = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("hold", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.hold", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_parent);
      __Pyx_XDECREF(__pyx_v_snapshot_name);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2510:         cdef ZFSDataset parent

     2511:         cdef const char *c_snapshot_name

    +2512:         cdef const char *c_tag = tag

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_tag); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2512, __pyx_L1_error)
      __pyx_v_c_tag = __pyx_t_1;

    +2513:         cdef int c_recursive = recursive

      __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_recursive); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2513, __pyx_L1_error)
      __pyx_v_c_recursive = __pyx_t_2;

     2514:         cdef int ret

     2515:

    +2516:         snapshot_name = self.snapshot_name

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2516, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_snapshot_name = __pyx_t_3;
      __pyx_t_3 = 0;

    +2517:         c_snapshot_name = snapshot_name

      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_snapshot_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 2517, __pyx_L1_error)
      __pyx_v_c_snapshot_name = __pyx_t_4;

    +2518:         parent = <ZFSDataset>self.parent

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2518, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __pyx_t_3;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_parent = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_5);
      __pyx_t_5 = 0;

     2519:

    +2520:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2521:             ret = libzfs.zfs_hold(parent.handle, c_snapshot_name, c_tag, c_recursive, -1)

            __pyx_v_ret = zfs_hold(__pyx_v_parent->__pyx_base.handle, __pyx_v_c_snapshot_name, __pyx_v_c_tag, __pyx_v_c_recursive, -1);
          }

     2522:

    +2523:         if ret != 0:

      __pyx_t_6 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_6) {
    /* … */
      }

    +2524:             raise self.root.get_error()

        __pyx_t_5 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2524, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(1, 2524, __pyx_L1_error)

     2525:

    +2526:         self.root.write_history('zfs hold', '-r' if recursive else '', tag, self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 2526, __pyx_L1_error)
      if (__pyx_t_6) {
        __Pyx_INCREF(__pyx_kp_s_r);
        __pyx_t_7 = __pyx_kp_s_r;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_7 = __pyx_kp_s__11;
      }
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_hold);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_hold);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_s_zfs_hold);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_7);
      __Pyx_INCREF(__pyx_v_tag);
      __Pyx_GIVEREF(__pyx_v_tag);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_v_tag);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_8);
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2526, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

     2527:

    +2528:     def release(self, tag, recursive=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_11release(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_11release(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_tag = 0;
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("release (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_tag,&__pyx_n_s_recursive,0};
        PyObject* values[2] = {0,0};
        values[1] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tag)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[1] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "release") < 0)) __PYX_ERR(1, 2528, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_tag = values[0];
        __pyx_v_recursive = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("release", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2528, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_10release(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_tag, __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_10release(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_recursive) {
      struct __pyx_obj_6libzfs_ZFSDataset *__pyx_v_parent = 0;
      char const *__pyx_v_c_snapshot_name;
      char const *__pyx_v_c_tag;
      int __pyx_v_c_recursive;
      int __pyx_v_ret;
      PyObject *__pyx_v_snapshot_name = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("release", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_XDECREF(__pyx_t_11);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.release", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_parent);
      __Pyx_XDECREF(__pyx_v_snapshot_name);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2529:         cdef ZFSDataset parent

     2530:         cdef const char *c_snapshot_name

    +2531:         cdef const char *c_tag = tag

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_tag); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2531, __pyx_L1_error)
      __pyx_v_c_tag = __pyx_t_1;

    +2532:         cdef int c_recursive = recursive

      __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_v_recursive); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2532, __pyx_L1_error)
      __pyx_v_c_recursive = __pyx_t_2;

     2533:         cdef int ret

     2534:

    +2535:         snapshot_name = self.snapshot_name

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_snapshot_name = __pyx_t_3;
      __pyx_t_3 = 0;

    +2536:         c_snapshot_name = snapshot_name

      __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_v_snapshot_name); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(1, 2536, __pyx_L1_error)
      __pyx_v_c_snapshot_name = __pyx_t_4;

    +2537:         parent = <ZFSDataset>self.parent

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __pyx_t_3;
      __Pyx_INCREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_parent = ((struct __pyx_obj_6libzfs_ZFSDataset *)__pyx_t_5);
      __pyx_t_5 = 0;

     2538:

    +2539:         with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L5;
            }
            __pyx_L5:;
          }
      }

    +2540:             ret = libzfs.zfs_release(parent.handle, c_snapshot_name, c_tag, c_recursive)

            __pyx_v_ret = zfs_release(__pyx_v_parent->__pyx_base.handle, __pyx_v_c_snapshot_name, __pyx_v_c_tag, __pyx_v_c_recursive);
          }

     2541:

    +2542:         if ret != 0:

      __pyx_t_6 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_6) {
    /* … */
      }

    +2543:             raise self.root.get_error()

        __pyx_t_5 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2543, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(1, 2543, __pyx_L1_error)

     2544:

    +2545:         self.root.write_history('zfs release', '-r' if recursive else '', tag, self.name)

      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(1, 2545, __pyx_L1_error)
      if (__pyx_t_6) {
        __Pyx_INCREF(__pyx_kp_s_r);
        __pyx_t_7 = __pyx_kp_s_r;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_7 = __pyx_kp_s__11;
      }
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = NULL;
      __pyx_t_10 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_9)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_9);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_10 = 1;
        }
      }
      __pyx_t_11 = PyTuple_New(4+__pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 2545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      if (__pyx_t_9) {
        __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_release);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_release);
      PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_kp_s_zfs_release);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_t_7);
      __Pyx_INCREF(__pyx_v_tag);
      __Pyx_GIVEREF(__pyx_v_tag);
      PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_v_tag);
      __Pyx_GIVEREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_8);
      __pyx_t_7 = 0;
      __pyx_t_8 = 0;
      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

     2546:

    +2547:     def delete(self, recursive=False):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_13delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_13delete(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_recursive = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_recursive,0};
        PyObject* values[1] = {0};
        values[0] = ((PyObject *)Py_False);
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (kw_args > 0) {
              PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_recursive);
              if (value) { values[0] = value; kw_args--; }
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "delete") < 0)) __PYX_ERR(1, 2547, __pyx_L3_error)
          }
        } else {
          switch (PyTuple_GET_SIZE(__pyx_args)) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
        }
        __pyx_v_recursive = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("delete", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2547, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_12delete(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_recursive);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_12delete(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_recursive) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("delete", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_7);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.delete", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2548:         if not recursive:

      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2548, __pyx_L1_error)
      __pyx_t_2 = ((!__pyx_t_1) != 0);
      if (__pyx_t_2) {
    /* … */
        goto __pyx_L3;
      }

    +2549:             super(ZFSSnapshot, self).delete()

        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_INCREF(((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
        __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
        PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_ptype_6libzfs_ZFSSnapshot));
        __Pyx_INCREF(((PyObject *)__pyx_v_self));
        __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
        PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_self));
        __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_delete); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2549, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (__pyx_t_5) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2549, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        } else {
          __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2549, __pyx_L1_error)
        }
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2550:         else:

    +2551:             self.parent.destroy_snapshot(self.snapshot_name)

      /*else*/ {
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2551, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_destroy_snapshot); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2551, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2551, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_6 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
          __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
          if (likely(__pyx_t_6)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_5, function);
          }
        }
        if (!__pyx_t_6) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2551, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 2551, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_7);
          __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
          __Pyx_GIVEREF(__pyx_t_4);
          PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
          __pyx_t_4 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2551, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        }
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __pyx_L3:;

     2552:

    +2553:         self.root.write_history('zfs destroy', '-r' if recursive else '', self.name)

      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_write_history); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_recursive); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2553, __pyx_L1_error)
      if (__pyx_t_2) {
        __Pyx_INCREF(__pyx_kp_s_r);
        __pyx_t_7 = __pyx_kp_s_r;
      } else {
        __Pyx_INCREF(__pyx_kp_s__11);
        __pyx_t_7 = __pyx_kp_s__11;
      }
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = NULL;
      __pyx_t_8 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_5, function);
          __pyx_t_8 = 1;
        }
      }
      __pyx_t_9 = PyTuple_New(3+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      if (__pyx_t_6) {
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_6); __pyx_t_6 = NULL;
      }
      __Pyx_INCREF(__pyx_kp_s_zfs_destroy);
      __Pyx_GIVEREF(__pyx_kp_s_zfs_destroy);
      PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, __pyx_kp_s_zfs_destroy);
      __Pyx_GIVEREF(__pyx_t_7);
      PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_8, __pyx_t_4);
      __pyx_t_7 = 0;
      __pyx_t_4 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2554:

    +2555:     def send(self, fd, **kwargs):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_15send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_15send(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_fd = 0;
      PyObject *__pyx_v_kwargs = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send (wrapper)", 0);
      __pyx_v_kwargs = PyDict_New(); if (unlikely(!__pyx_v_kwargs)) return NULL;
      __Pyx_GOTREF(__pyx_v_kwargs);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fd,0};
        PyObject* values[1] = {0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fd)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, pos_args, "send") < 0)) __PYX_ERR(1, 2555, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        }
        __pyx_v_fd = values[0];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("send", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2555, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_14send(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self), __pyx_v_fd, __pyx_v_kwargs);

      /* function exit code */
      __Pyx_XDECREF(__pyx_v_kwargs);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_14send(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self, PyObject *__pyx_v_fd, PyObject *__pyx_v_kwargs) {
      PyObject *__pyx_v_fromname = NULL;
      PyObject *__pyx_v_flags = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("send", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.send", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_fromname);
      __Pyx_XDECREF(__pyx_v_flags);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2556:         fromname = kwargs.get('fromname')

      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_fromname, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2556, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_fromname = __pyx_t_1;
      __pyx_t_1 = 0;

    +2557:         flags = kwargs.get('flags')

      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_kwargs, __pyx_n_s_flags, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2557, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_v_flags = __pyx_t_1;
      __pyx_t_1 = 0;

    +2558:         return self.parent.send(fd, toname=self.snapshot_name, fromname=fromname, flags=flags)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_send); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_v_fd);
      __Pyx_GIVEREF(__pyx_v_fd);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_fd);
      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_snapshot_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_toname, __pyx_t_4) < 0) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_fromname, __pyx_v_fromname) < 0) __PYX_ERR(1, 2558, __pyx_L1_error)
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_flags, __pyx_v_flags) < 0) __PYX_ERR(1, 2558, __pyx_L1_error)
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2558, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_r = __pyx_t_4;
      __pyx_t_4 = 0;
      goto __pyx_L0;

     2559:

     2560:     property snapshot_name:

    +2561:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_13snapshot_name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_13snapshot_name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_13snapshot_name___get__(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_13snapshot_name___get__(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.snapshot_name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2562:             return self.name.partition('@')[-1]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_partition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s__58); if (unlikely(!__pyx_tuple__59)) __PYX_ERR(1, 2562, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__59);
      __Pyx_GIVEREF(__pyx_tuple__59);

     2563:

     2564:     property parent:

    +2565:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_6parent_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_6parent___get__(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_6parent___get__(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.parent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2566:             return self.root.get_dataset(self.name.partition('@')[0])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_get_dataset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_partition); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2566, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2566, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2566, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s__58); if (unlikely(!__pyx_tuple__60)) __PYX_ERR(1, 2566, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__60);
      __Pyx_GIVEREF(__pyx_tuple__60);

     2567:

     2568:     property holds:

    +2569:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_5holds_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSSnapshot_5holds_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSSnapshot_5holds___get__(((struct __pyx_obj_6libzfs_ZFSSnapshot *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSSnapshot_5holds___get__(struct __pyx_obj_6libzfs_ZFSSnapshot *__pyx_v_self) {
      nvlist_t *__pyx_v_ptr;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_nvl = 0;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.ZFSSnapshot.holds.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_nvl);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

     2570:             cdef nvpair.nvlist_t* ptr

     2571:             cdef NVList nvl

     2572:

    +2573:             if libzfs.zfs_get_holds(self.handle, &ptr) != 0:

      __pyx_t_1 = ((zfs_get_holds(__pyx_v_self->__pyx_base.handle, (&__pyx_v_ptr)) != 0) != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2574:                 raise self.root.get_error()

        __pyx_t_2 = ((struct __pyx_vtabstruct_6libzfs_ZFS *)__pyx_v_self->__pyx_base.root->__pyx_vtab)->get_error(__pyx_v_self->__pyx_base.root); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2574, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_Raise(__pyx_t_2, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __PYX_ERR(1, 2574, __pyx_L1_error)

     2575:

    +2576:             nvl = NVList(<uintptr_t>ptr)

      __pyx_t_2 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_ptr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2576, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_nvl = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_2);
      __pyx_t_2 = 0;

    +2577:             return dict(nvl)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2577, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_v_nvl));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_nvl));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_nvl));
      __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2577, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     2578:

     2579:

    +2580: cdef class ZFSBookmark(ZFSObject):

    struct __pyx_obj_6libzfs_ZFSBookmark {
      struct __pyx_obj_6libzfs_ZFSObject __pyx_base;
    };

    +2581:     def __getstate__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_1__getstate__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSBookmark___getstate__(((struct __pyx_obj_6libzfs_ZFSBookmark *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSBookmark___getstate__(struct __pyx_obj_6libzfs_ZFSBookmark *__pyx_v_self) {
      PyObject *__pyx_v_ret = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__getstate__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSBookmark.__getstate__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF(__pyx_v_ret);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2582:         ret = super(ZFSBookmark, self).__getstate__()

      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(((PyObject *)__pyx_ptype_6libzfs_ZFSBookmark));
      __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6libzfs_ZFSBookmark));
      PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6libzfs_ZFSBookmark));
      __Pyx_INCREF(((PyObject *)__pyx_v_self));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
      PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self));
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_super, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_getstate); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2582, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2582, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2582, __pyx_L1_error)
      }
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_v_ret = __pyx_t_1;
      __pyx_t_1 = 0;

    +2583:         ret.update({

      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_ret, __pyx_n_s_update); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);

    +2584:             'dataset': self.parent.name,

      __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_parent); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_name_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2584, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dataset, __pyx_t_5) < 0) __PYX_ERR(1, 2584, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    +2585:             'bookmark_name': self.bookmark_name

      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_bookmark_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_bookmark_name, __pyx_t_5) < 0) __PYX_ERR(1, 2584, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_5 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_5)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_5);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_5) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2583, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2583, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

     2586:         })

    +2587:         return ret

      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_ret);
      __pyx_r = __pyx_v_ret;
      goto __pyx_L0;

     2588:

     2589:     property parent:

    +2590:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_6parent_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_6parent_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSBookmark_6parent___get__(((struct __pyx_obj_6libzfs_ZFSBookmark *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSBookmark_6parent___get__(struct __pyx_obj_6libzfs_ZFSBookmark *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_AddTraceback("libzfs.ZFSBookmark.parent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2591:             return self.root.get_dataset(self.name.partition('#')[0])

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->__pyx_base.root), __pyx_n_s_get_dataset); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_partition); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
        if (likely(__pyx_t_3)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
          __Pyx_INCREF(__pyx_t_3);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_2, function);
        }
      }
      if (!__pyx_t_3) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2591, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 2591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2591, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s__61); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(1, 2591, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__62);
      __Pyx_GIVEREF(__pyx_tuple__62);

     2592:

     2593:     property bookmark_name:

    +2594:         def __get__(self):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_13bookmark_name_1__get__(PyObject *__pyx_v_self); /*proto*/
    static PyObject *__pyx_pw_6libzfs_11ZFSBookmark_13bookmark_name_1__get__(PyObject *__pyx_v_self) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_11ZFSBookmark_13bookmark_name___get__(((struct __pyx_obj_6libzfs_ZFSBookmark *)__pyx_v_self));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_11ZFSBookmark_13bookmark_name___get__(struct __pyx_obj_6libzfs_ZFSBookmark *__pyx_v_self) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("__get__", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_AddTraceback("libzfs.ZFSBookmark.bookmark_name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2595:             return self.name.partition('#')[-1]

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_partition); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    /* … */
      __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s__61); if (unlikely(!__pyx_tuple__63)) __PYX_ERR(1, 2595, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__63);
      __Pyx_GIVEREF(__pyx_tuple__63);

     2596:

     2597:

    +2598: cdef convert_sendflags(flags, libzfs.sendflags_t *cflags):

    static PyObject *__pyx_f_6libzfs_convert_sendflags(PyObject *__pyx_v_flags, sendflags_t *__pyx_v_cflags) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("convert_sendflags", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_AddTraceback("libzfs.convert_sendflags", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = 0;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    +2599:     if not isinstance(flags, set):

      __pyx_t_1 = PySet_Check(__pyx_v_flags);
      __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2600:         raise ValueError('flags must be passed as a set')

        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2600, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2600, __pyx_L1_error)
    /* … */
      __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_flags_must_be_passed_as_a_set); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(1, 2600, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__64);
      __Pyx_GIVEREF(__pyx_tuple__64);

     2601:

    +2602:     if SendFlag.VERBOSE in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_VERBOSE); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2602, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2602, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2603:         cflags.verbose = 1

        __pyx_v_cflags->verbose = 1;

     2604:

    +2605:     if SendFlag.REPLICATE in flags:

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_REPLICATE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2605, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2605, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2606:         cflags.replicate = 1

        __pyx_v_cflags->replicate = 1;

     2607:

    +2608:     if SendFlag.DOALL in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DOALL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2608, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2608, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2609:         cflags.doall = 1

        __pyx_v_cflags->doall = 1;

     2610:

    +2611:     if SendFlag.FROMORIGIN in flags:

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_FROMORIGIN); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2611, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2611, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2612:         cflags.fromorigin = 1

        __pyx_v_cflags->fromorigin = 1;

     2613:

    +2614:     if SendFlag.DEDUP in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DEDUP); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2614, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2614, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2615:         cflags.dedup = 1

        __pyx_v_cflags->dedup = 1;

     2616:

    +2617:     if SendFlag.PROPS in flags:

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2617, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_PROPS); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2617, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2617, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2618:         cflags.props = 1

        __pyx_v_cflags->props = 1;

     2619:

    +2620:     if SendFlag.DRYRUN in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_DRYRUN); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2620, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2620, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2621:         cflags.dryrun = 1

        __pyx_v_cflags->dryrun = 1;

     2622:

    +2623:     if SendFlag.PARSABLE in flags:

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_PARSABLE); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2623, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2623, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2624:         cflags.parsable = 1

        __pyx_v_cflags->parsable = 1;

     2625:

    +2626:     if SendFlag.PROGRESS in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_PROGRESS); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2626, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2626, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2627:         cflags.progress = 1

        __pyx_v_cflags->progress = 1;

     2628:

    +2629:     if SendFlag.LARGEBLOCK in flags:

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2629, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_LARGEBLOCK); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2629, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_3, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 2629, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__pyx_t_1 != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2630:         cflags.largeblock = 1

        __pyx_v_cflags->largeblock = 1;

     2631:

    +2632:     if SendFlag.EMBED_DATA in flags:

      __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_SendFlag); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_EMBED_DATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2632, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_4, __pyx_v_flags, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 2632, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_1 = (__pyx_t_2 != 0);
      if (__pyx_t_1) {
    /* … */
      }

    +2633:         cflags.embed_data = 1

        __pyx_v_cflags->embed_data = 1;

     2634:

     2635:

    +2636: def nicestrtonum(ZFS zfs, value):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_9nicestrtonum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_9nicestrtonum = {"nicestrtonum", (PyCFunction)__pyx_pw_6libzfs_9nicestrtonum, METH_VARARGS|METH_KEYWORDS, 0};
    static PyObject *__pyx_pw_6libzfs_9nicestrtonum(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      struct __pyx_obj_6libzfs_ZFS *__pyx_v_zfs = 0;
      PyObject *__pyx_v_value = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("nicestrtonum (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_zfs,&__pyx_n_s_value,0};
        PyObject* values[2] = {0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_zfs)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("nicestrtonum", 1, 2, 2, 1); __PYX_ERR(1, 2636, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "nicestrtonum") < 0)) __PYX_ERR(1, 2636, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        }
        __pyx_v_zfs = ((struct __pyx_obj_6libzfs_ZFS *)values[0]);
        __pyx_v_value = values[1];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("nicestrtonum", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2636, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.nicestrtonum", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_zfs), __pyx_ptype_6libzfs_ZFS, 1, "zfs", 0))) __PYX_ERR(1, 2636, __pyx_L1_error)
      __pyx_r = __pyx_pf_6libzfs_8nicestrtonum(__pyx_self, __pyx_v_zfs, __pyx_v_value);

      /* function exit code */
      goto __pyx_L0;
      __pyx_L1_error:;
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_8nicestrtonum(CYTHON_UNUSED PyObject *__pyx_self, struct __pyx_obj_6libzfs_ZFS *__pyx_v_zfs, PyObject *__pyx_v_value) {
      uint64_t __pyx_v_result;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("nicestrtonum", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_5);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_AddTraceback("libzfs.nicestrtonum", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__91 = PyTuple_Pack(3, __pyx_n_s_zfs, __pyx_n_s_value, __pyx_n_s_result); if (unlikely(!__pyx_tuple__91)) __PYX_ERR(1, 2636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__91);
      __Pyx_GIVEREF(__pyx_tuple__91);
    /* … */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6libzfs_9nicestrtonum, NULL, __pyx_n_s_libzfs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2636, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_nicestrtonum, __pyx_t_3) < 0) __PYX_ERR(1, 2636, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_codeobj__92 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__91, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_nicestrtonum, 2636, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__92)) __PYX_ERR(1, 2636, __pyx_L1_error)

     2637:     cdef uint64_t result

     2638:

    +2639:     if libzfs.zfs_nicestrtonum(zfs.handle, value, &result) != 0:

      __pyx_t_1 = __Pyx_PyObject_AsString(__pyx_v_value); if (unlikely((!__pyx_t_1) && PyErr_Occurred())) __PYX_ERR(1, 2639, __pyx_L1_error)
      __pyx_t_2 = ((zfs_nicestrtonum(__pyx_v_zfs->handle, __pyx_t_1, (&__pyx_v_result)) != 0) != 0);
      if (__pyx_t_2) {
    /* … */
      }

    +2640:         raise ValueError('Cannot convert {0} to integer'.format(value))

        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_kp_s_Cannot_convert_0_to_integer, __pyx_n_s_format); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2640, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_5)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_5);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_5) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
          __Pyx_INCREF(__pyx_v_value);
          __Pyx_GIVEREF(__pyx_v_value);
          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_value);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2640, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2640, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2640, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2640, __pyx_L1_error)

     2641:

    +2642:     return result

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_3 = __Pyx_PyInt_From_uint64_t(__pyx_v_result); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2642, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

     2643:

     2644:

    +2645: def vdev_label_offset(psize, l, offset):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_11vdev_label_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_11vdev_label_offset = {"vdev_label_offset", (PyCFunction)__pyx_pw_6libzfs_11vdev_label_offset, METH_VARARGS|METH_KEYWORDS, 0};
    static PyObject *__pyx_pw_6libzfs_11vdev_label_offset(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
      PyObject *__pyx_v_psize = 0;
      PyObject *__pyx_v_l = 0;
      PyObject *__pyx_v_offset = 0;
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("vdev_label_offset (wrapper)", 0);
      {
        static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_psize,&__pyx_n_s_l,&__pyx_n_s_offset,0};
        PyObject* values[3] = {0,0,0};
        if (unlikely(__pyx_kwds)) {
          Py_ssize_t kw_args;
          const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
          switch (pos_args) {
            case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
            case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
            case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
            case  0: break;
            default: goto __pyx_L5_argtuple_error;
          }
          kw_args = PyDict_Size(__pyx_kwds);
          switch (pos_args) {
            case  0:
            if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_psize)) != 0)) kw_args--;
            else goto __pyx_L5_argtuple_error;
            case  1:
            if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("vdev_label_offset", 1, 3, 3, 1); __PYX_ERR(1, 2645, __pyx_L3_error)
            }
            case  2:
            if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_offset)) != 0)) kw_args--;
            else {
              __Pyx_RaiseArgtupleInvalid("vdev_label_offset", 1, 3, 3, 2); __PYX_ERR(1, 2645, __pyx_L3_error)
            }
          }
          if (unlikely(kw_args > 0)) {
            if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vdev_label_offset") < 0)) __PYX_ERR(1, 2645, __pyx_L3_error)
          }
        } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
          goto __pyx_L5_argtuple_error;
        } else {
          values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
          values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
          values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        }
        __pyx_v_psize = values[0];
        __pyx_v_l = values[1];
        __pyx_v_offset = values[2];
      }
      goto __pyx_L4_argument_unpacking_done;
      __pyx_L5_argtuple_error:;
      __Pyx_RaiseArgtupleInvalid("vdev_label_offset", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 2645, __pyx_L3_error)
      __pyx_L3_error:;
      __Pyx_AddTraceback("libzfs.vdev_label_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __Pyx_RefNannyFinishContext();
      return NULL;
      __pyx_L4_argument_unpacking_done:;
      __pyx_r = __pyx_pf_6libzfs_10vdev_label_offset(__pyx_self, __pyx_v_psize, __pyx_v_l, __pyx_v_offset);

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_10vdev_label_offset(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_psize, PyObject *__pyx_v_l, PyObject *__pyx_v_offset) {
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("vdev_label_offset", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_AddTraceback("libzfs.vdev_label_offset", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__93 = PyTuple_Pack(3, __pyx_n_s_psize, __pyx_n_s_l, __pyx_n_s_offset); if (unlikely(!__pyx_tuple__93)) __PYX_ERR(1, 2645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__93);
      __Pyx_GIVEREF(__pyx_tuple__93);
    /* … */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6libzfs_11vdev_label_offset, NULL, __pyx_n_s_libzfs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2645, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_vdev_label_offset, __pyx_t_3) < 0) __PYX_ERR(1, 2645, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_codeobj__94 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__93, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_vdev_label_offset, 2645, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__94)) __PYX_ERR(1, 2645, __pyx_L1_error)

    +2646:     return offset + l * sizeof(zfs.vdev_label_t) + 0 \

      __Pyx_XDECREF(__pyx_r);
    /* … */
        __pyx_t_3 = __Pyx_PyInt_FromSize_t((sizeof(vdev_label_t))); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2646, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_2 = PyNumber_Multiply(__pyx_v_l, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2646, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyNumber_Add(__pyx_v_offset, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2646, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2646, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_1 = __pyx_t_2;
        __pyx_t_2 = 0;
      } else {

    +2647:         if l < zfs.VDEV_LABELS / 2 \

      __pyx_t_2 = __Pyx_PyInt_From_long(__Pyx_div_long(VDEV_LABELS, 2)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2647, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyObject_RichCompare(__pyx_v_l, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2647, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(1, 2647, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (__pyx_t_4) {

    +2648:         else psize - zfs.VDEV_LABELS * sizeof(zfs.vdev_label_t)

        __pyx_t_2 = __Pyx_PyInt_FromSize_t((VDEV_LABELS * (sizeof(vdev_label_t)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2648, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_3 = PyNumber_Subtract(__pyx_v_psize, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2648, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_1 = __pyx_t_3;
        __pyx_t_3 = 0;
      }
      __pyx_r = __pyx_t_1;
      __pyx_t_1 = 0;
      goto __pyx_L0;

     2649:

     2650:

    +2651: def read_label(device):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_13read_label(PyObject *__pyx_self, PyObject *__pyx_v_device); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_13read_label = {"read_label", (PyCFunction)__pyx_pw_6libzfs_13read_label, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_13read_label(PyObject *__pyx_self, PyObject *__pyx_v_device) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("read_label (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_12read_label(__pyx_self, ((PyObject *)__pyx_v_device));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_12read_label(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_device) {
      nvlist_t *__pyx_v_handle;
      struct __pyx_obj_6libzfs_NVList *__pyx_v_nvlist = 0;
      int __pyx_v_ret;
      PyObject *__pyx_v_fd = NULL;
      PyObject *__pyx_v_st = NULL;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("read_label", 0);
    /* … */
      /* function exit code */
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8);
      __Pyx_AddTraceback("libzfs.read_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XDECREF((PyObject *)__pyx_v_nvlist);
      __Pyx_XDECREF(__pyx_v_fd);
      __Pyx_XDECREF(__pyx_v_st);
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__95 = PyTuple_Pack(8, __pyx_n_s_device, __pyx_n_s_handle, __pyx_n_s_nvlist, __pyx_n_s_buf, __pyx_n_s_read, __pyx_n_s_ret, __pyx_n_s_fd, __pyx_n_s_st); if (unlikely(!__pyx_tuple__95)) __PYX_ERR(1, 2651, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__95);
      __Pyx_GIVEREF(__pyx_tuple__95);
    /* … */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6libzfs_13read_label, NULL, __pyx_n_s_libzfs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2651, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_read_label, __pyx_t_3) < 0) __PYX_ERR(1, 2651, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_codeobj__96 = (PyObject*)__Pyx_PyCode_New(1, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__95, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_usr_nas_source_py_libzfs_libzfs, __pyx_n_s_read_label, 2651, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(1, 2651, __pyx_L1_error)

     2652:     cdef nvpair.nvlist_t *handle

     2653:     cdef NVList nvlist

     2654:     cdef char *buf

     2655:     cdef char *read

     2656:     cdef int ret

     2657:

    +2658:     fd = os.open(device, os.O_RDONLY)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_open); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_O_RDONLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_INCREF(__pyx_v_device);
      __Pyx_GIVEREF(__pyx_v_device);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_device);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2658, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_v_fd = __pyx_t_1;
      __pyx_t_1 = 0;

    +2659:     if fd < 0:

      __pyx_t_1 = PyObject_RichCompare(__pyx_v_fd, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2659, __pyx_L1_error)
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 2659, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__pyx_t_7) {
    /* … */
      }

    +2660:         raise OSError(errno, os.strerror(errno))

        __pyx_t_1 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_strerror); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_2) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2660, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2660, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2660, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
        __pyx_t_1 = 0;
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2660, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2660, __pyx_L1_error)

     2661:

    +2662:     st = os.fstat(fd)

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2662, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fstat); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2662, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_1, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_v_fd);
        __Pyx_GIVEREF(__pyx_v_fd);
        PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_fd);
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2662, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      }
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_st = __pyx_t_3;
      __pyx_t_3 = 0;

    +2663:     if not stat.S_ISCHR(st.st_mode):

      __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2663, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_S_ISCHR); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2663, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_st, __pyx_n_s_st_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2663, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_4)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_4);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (!__pyx_t_4) {
        __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2663, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_GOTREF(__pyx_t_3);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2663, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_1);
        __pyx_t_1 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2663, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 2663, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = ((!__pyx_t_7) != 0);
      if (__pyx_t_9) {
    /* … */
      }

    +2664:         os.close(fd)

        __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2664, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_close); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2664, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_8 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
          __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
          if (likely(__pyx_t_8)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
            __Pyx_INCREF(__pyx_t_8);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_6, function);
          }
        }
        if (!__pyx_t_8) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_fd); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2664, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2664, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_8); __pyx_t_8 = NULL;
          __Pyx_INCREF(__pyx_v_fd);
          __Pyx_GIVEREF(__pyx_v_fd);
          PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_fd);
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2664, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        }
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +2665:         raise OSError(errno.EINVAL, 'Not a character device')

        __pyx_t_3 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_EINVAL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_6);
        PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
        __Pyx_INCREF(__pyx_kp_s_Not_a_character_device);
        __Pyx_GIVEREF(__pyx_kp_s_Not_a_character_device);
        PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_s_Not_a_character_device);
        __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(1, 2665, __pyx_L1_error)

     2666:

    +2667:     ret = libzfs.zpool_read_label(fd, &handle)

      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_v_fd); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2667, __pyx_L1_error)
      __pyx_v_ret = zpool_read_label(__pyx_t_10, (&__pyx_v_handle));

    +2668:     if ret != 0:

      __pyx_t_9 = ((__pyx_v_ret != 0) != 0);
      if (__pyx_t_9) {
    /* … */
      }

    +2669:         os.close(fd)

        __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2669, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2669, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_3 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_3)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_3) {
          __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_fd); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2669, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        } else {
          __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2669, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_8);
          __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
          __Pyx_INCREF(__pyx_v_fd);
          __Pyx_GIVEREF(__pyx_v_fd);
          PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_fd);
          __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2669, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    +2670:         raise OSError(errno.EINVAL, 'Cannot read label')

        __pyx_t_6 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2670, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_EINVAL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2670, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2670, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
        __Pyx_INCREF(__pyx_kp_s_Cannot_read_label);
        __Pyx_GIVEREF(__pyx_kp_s_Cannot_read_label);
        PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_kp_s_Cannot_read_label);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2670, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 2670, __pyx_L1_error)

     2671:

    +2672:     os.close(fd)

      __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_close); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2672, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
        if (likely(__pyx_t_6)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
          __Pyx_INCREF(__pyx_t_6);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_8, function);
        }
      }
      if (!__pyx_t_6) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_fd); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2672, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2672, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
        __Pyx_INCREF(__pyx_v_fd);
        __Pyx_GIVEREF(__pyx_v_fd);
        PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_fd);
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2672, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      }
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    +2673:     nvlist = NVList(<uintptr_t>handle)

      __pyx_t_1 = __Pyx_PyInt_FromSize_t(((uintptr_t)__pyx_v_handle)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2673, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2673, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_GIVEREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_1);
      __pyx_t_1 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6libzfs_NVList), __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2673, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_v_nvlist = ((struct __pyx_obj_6libzfs_NVList *)__pyx_t_1);
      __pyx_t_1 = 0;

    +2674:     return dict(nvlist)

      __Pyx_XDECREF(__pyx_r);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2674, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_INCREF(((PyObject *)__pyx_v_nvlist));
      __Pyx_GIVEREF(((PyObject *)__pyx_v_nvlist));
      PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_nvlist));
      __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)(&PyDict_Type)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 2674, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_r = __pyx_t_8;
      __pyx_t_8 = 0;
      goto __pyx_L0;

     2675:

     2676:

    +2677: def clear_label(device):

    /* Python wrapper */
    static PyObject *__pyx_pw_6libzfs_15clear_label(PyObject *__pyx_self, PyObject *__pyx_v_device); /*proto*/
    static PyMethodDef __pyx_mdef_6libzfs_15clear_label = {"clear_label", (PyCFunction)__pyx_pw_6libzfs_15clear_label, METH_O, 0};
    static PyObject *__pyx_pw_6libzfs_15clear_label(PyObject *__pyx_self, PyObject *__pyx_v_device) {
      PyObject *__pyx_r = 0;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clear_label (wrapper)", 0);
      __pyx_r = __pyx_pf_6libzfs_14clear_label(__pyx_self, ((PyObject *)__pyx_v_device));

      /* function exit code */
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }

    static PyObject *__pyx_pf_6libzfs_14clear_label(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_device) {
      int __pyx_v_fd;
      int __pyx_v_err;
      PyObject *__pyx_r = NULL;
      __Pyx_RefNannyDeclarations
      __Pyx_RefNannySetupContext("clear_label", 0);
    /* … */
      /* function exit code */
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
      __pyx_L1_error:;
      __Pyx_XDECREF(__pyx_t_1);
      __Pyx_XDECREF(__pyx_t_2);
      __Pyx_XDECREF(__pyx_t_3);
      __Pyx_XDECREF(__pyx_t_4);
      __Pyx_XDECREF(__pyx_t_6);
      __Pyx_XDECREF(__pyx_t_9);
      __Pyx_AddTraceback("libzfs.clear_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
      __pyx_r = NULL;
      __pyx_L0:;
      __Pyx_XGIVEREF(__pyx_r);
      __Pyx_RefNannyFinishContext();
      return __pyx_r;
    }
    /* … */
      __pyx_tuple__97 = PyTuple_Pack(3, __pyx_n_s_device, __pyx_n_s_fd, __pyx_n_s_err); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(1, 2677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_tuple__97);
      __Pyx_GIVEREF(__pyx_tuple__97);
    /* … */
      __pyx_t_3 = PyCFunction_NewEx(&__pyx_mdef_6libzfs_15clear_label, NULL, __pyx_n_s_libzfs); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2677, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (PyDict_SetItem(__pyx_d, __pyx_n_s_clear_label, __pyx_t_3) < 0) __PYX_ERR(1, 2677, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

     2678:     cdef int fd

     2679:     cdef int err

     2680:

    +2681:     fd = os.open(device, os.O_WRONLY)

      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_open); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_O_WRONLY); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = NULL;
      __pyx_t_5 = 0;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
          __pyx_t_5 = 1;
        }
      }
      __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__pyx_t_2) {
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
      }
      __Pyx_INCREF(__pyx_v_device);
      __Pyx_GIVEREF(__pyx_v_device);
      PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_v_device);
      __Pyx_GIVEREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 2681, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_v_fd = __pyx_t_7;

    +2682:     if fd < 0:

      __pyx_t_8 = ((__pyx_v_fd < 0) != 0);
      if (__pyx_t_8) {
    /* … */
      }

    +2683:         raise OSError(errno, os.strerror(errno))

        __pyx_t_1 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_strerror); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_2 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_2)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_2);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_2) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2683, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 2683, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
          __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_9, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2683, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
        __pyx_t_1 = 0;
        __pyx_t_3 = 0;
        __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2683, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_3, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __PYX_ERR(1, 2683, __pyx_L1_error)

     2684:

    +2685:     with nogil:

      {
          #ifdef WITH_THREAD
          PyThreadState *_save;
          Py_UNBLOCK_THREADS
          #endif
          /*try:*/ {
    /* … */
          /*finally:*/ {
            /*normal exit:*/{
              #ifdef WITH_THREAD
              Py_BLOCK_THREADS
              #endif
              goto __pyx_L6;
            }
            __pyx_L6:;
          }
      }

    +2686:         err = libzfs.zpool_clear_label(fd)

            __pyx_v_err = zpool_clear_label(__pyx_v_fd);
          }

     2687:

    +2688:     if err != 0:

      __pyx_t_8 = ((__pyx_v_err != 0) != 0);
      if (__pyx_t_8) {
    /* … */
      }

    +2689:         os.close(fd)

        __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_close); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2689, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_1);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_1, function);
          }
        }
        if (!__pyx_t_9) {
          __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2689, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_GOTREF(__pyx_t_3);
        } else {
          __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2689, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_9); __pyx_t_9 = NULL;
          __Pyx_GIVEREF(__pyx_t_4);
          PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
          __pyx_t_4 = 0;
          __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2689, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        }
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    +2690:         raise OSError(errno, os.strerror(errno))

        __pyx_t_3 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_strerror); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_6 = __Pyx_PyInt_From_int(errno); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_9 = NULL;
        if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
          if (likely(__pyx_t_9)) {
            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(function);
            __Pyx_DECREF_SET(__pyx_t_4, function);
          }
        }
        if (!__pyx_t_9) {
          __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2690, __pyx_L1_error)
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_GOTREF(__pyx_t_1);
        } else {
          __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 2690, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_2);
          __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_9); __pyx_t_9 = NULL;
          __Pyx_GIVEREF(__pyx_t_6);
          PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
          __pyx_t_6 = 0;
          __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2690, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_1);
          __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        }
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_GIVEREF(__pyx_t_3);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
        __Pyx_GIVEREF(__pyx_t_1);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
        __pyx_t_3 = 0;
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_OSError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2690, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __PYX_ERR(1, 2690, __pyx_L1_error)

     2691:

    +2692:     os.close(fd)

      __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_os); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_close); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 2692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_fd); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 2692, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = NULL;
      if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
        if (likely(__pyx_t_2)) {
          PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
          __Pyx_INCREF(__pyx_t_2);
          __Pyx_INCREF(function);
          __Pyx_DECREF_SET(__pyx_t_3, function);
        }
      }
      if (!__pyx_t_2) {
        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2692, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_GOTREF(__pyx_t_1);
      } else {
        __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 2692, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2); __pyx_t_2 = NULL;
        __Pyx_GIVEREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
        __pyx_t_4 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 2692, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;