Print this page
3740 Poor ZFS send / receive performance due to snapshot hold / release processing
Submitted by: Steven Hartland <steven.hartland@multiplay.co.uk>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/dsl_userhold.h
          +++ new/usr/src/uts/common/fs/zfs/sys/dsl_userhold.h
↓ open down ↓ 15 lines elided ↑ open up ↑
  16   16   * If applicable, add the following below this CDDL HEADER, with the
  17   17   * fields enclosed by brackets "[]" replaced with your own identifying
  18   18   * information: Portions Copyright [yyyy] [name of copyright owner]
  19   19   *
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*
  23   23   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  24   24   * Copyright (c) 2012 by Delphix. All rights reserved.
  25   25   * Copyright (c) 2012, Joyent, Inc. All rights reserved.
       26 + * Copyright (c) 2013 Steven Hartland. All rights reserved.
  26   27   */
  27   28  
  28   29  #ifndef _SYS_DSL_USERHOLD_H
  29   30  #define _SYS_DSL_USERHOLD_H
  30   31  
  31   32  #include <sys/nvpair.h>
  32   33  #include <sys/types.h>
  33   34  
  34   35  #ifdef  __cplusplus
  35   36  extern "C" {
  36   37  #endif
  37   38  
  38   39  struct dsl_pool;
  39   40  struct dsl_dataset;
  40   41  struct dmu_tx;
  41   42  
  42   43  int dsl_dataset_user_hold(nvlist_t *holds, minor_t cleanup_minor,
  43   44      nvlist_t *errlist);
  44   45  int dsl_dataset_user_release(nvlist_t *holds, nvlist_t *errlist);
  45   46  int dsl_dataset_get_holds(const char *dsname, nvlist_t *nvl);
  46      -void dsl_dataset_user_release_tmp(struct dsl_pool *dp, uint64_t dsobj,
  47      -    const char *htag);
       47 +void dsl_dataset_user_release_tmp(struct dsl_pool *dp, nvlist_t *holds);
  48   48  int dsl_dataset_user_hold_check_one(struct dsl_dataset *ds, const char *htag,
  49   49      boolean_t temphold, struct dmu_tx *tx);
  50   50  void dsl_dataset_user_hold_sync_one(struct dsl_dataset *ds, const char *htag,
  51   51      minor_t minor, uint64_t now, struct dmu_tx *tx);
  52   52  
  53   53  #ifdef  __cplusplus
  54   54  }
  55   55  #endif
  56   56  
  57   57  #endif /* _SYS_DSL_USERHOLD_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX