Print this page
5269 zfs: zpool import slow
PORTING: this code relies on the property of taskq_wait to wait
until no more tasks are queued and no more tasks are active. As
we always queue new tasks from within other tasks, task_wait
reliably waits for the full recursion to finish, even though we
enqueue new tasks after taskq_wait has been called.
On platforms other than illumos, taskq_wait may not have this
property.
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Dan McDonald <danmcd@omniti.com>
Reviewed by: George Wilson <george.wilson@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/dmu.h
          +++ new/usr/src/uts/common/fs/zfs/sys/dmu.h
↓ open down ↓ 235 lines elided ↑ open up ↑
 236  236  void byteswap_uint32_array(void *buf, size_t size);
 237  237  void byteswap_uint16_array(void *buf, size_t size);
 238  238  void byteswap_uint8_array(void *buf, size_t size);
 239  239  void zap_byteswap(void *buf, size_t size);
 240  240  void zfs_oldacl_byteswap(void *buf, size_t size);
 241  241  void zfs_acl_byteswap(void *buf, size_t size);
 242  242  void zfs_znode_byteswap(void *buf, size_t size);
 243  243  
 244  244  #define DS_FIND_SNAPSHOTS       (1<<0)
 245  245  #define DS_FIND_CHILDREN        (1<<1)
      246 +#define DS_FIND_SERIALIZE       (1<<2)
 246  247  
 247  248  /*
 248  249   * The maximum number of bytes that can be accessed as part of one
 249  250   * operation, including metadata.
 250  251   */
 251  252  #define DMU_MAX_ACCESS (32 * 1024 * 1024) /* 32MB */
 252  253  #define DMU_MAX_DELETEBLKCNT (20480) /* ~5MB of indirect blocks */
 253  254  
 254  255  #define DMU_USERUSED_OBJECT     (-1ULL)
 255  256  #define DMU_GROUPUSED_OBJECT    (-2ULL)
↓ open down ↓ 684 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX