Print this page
4045 zfs write throttle & i/o scheduler performance work
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>
Reviewed by: Christopher Siden <christopher.siden@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/dmu_tx.h
          +++ new/usr/src/uts/common/fs/zfs/sys/dmu_tx.h
↓ open down ↓ 15 lines elided ↑ open up ↑
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
  25   25  /*
  26      - * Copyright (c) 2012 by Delphix. All rights reserved.
       26 + * Copyright (c) 2013 by Delphix. All rights reserved.
  27   27   */
  28   28  
  29   29  #ifndef _SYS_DMU_TX_H
  30   30  #define _SYS_DMU_TX_H
  31   31  
  32   32  #include <sys/inttypes.h>
  33   33  #include <sys/dmu.h>
  34   34  #include <sys/txg.h>
  35   35  #include <sys/refcount.h>
  36   36  
↓ open down ↓ 16 lines elided ↑ open up ↑
  53   53          list_t tx_holds; /* list of dmu_tx_hold_t */
  54   54          objset_t *tx_objset;
  55   55          struct dsl_dir *tx_dir;
  56   56          struct dsl_pool *tx_pool;
  57   57          uint64_t tx_txg;
  58   58          uint64_t tx_lastsnap_txg;
  59   59          uint64_t tx_lasttried_txg;
  60   60          txg_handle_t tx_txgh;
  61   61          void *tx_tempreserve_cookie;
  62   62          struct dmu_tx_hold *tx_needassign_txh;
  63      -        list_t tx_callbacks; /* list of dmu_tx_callback_t on this dmu_tx */
  64      -        uint8_t tx_anyobj;
       63 +
       64 +        /* list of dmu_tx_callback_t on this dmu_tx */
       65 +        list_t tx_callbacks;
       66 +
       67 +        /* placeholder for syncing context, doesn't need specific holds */
       68 +        boolean_t tx_anyobj;
       69 +
       70 +        /* has this transaction already been delayed? */
       71 +        boolean_t tx_waited;
       72 +
       73 +        /* time this transaction was created */
       74 +        hrtime_t tx_start;
       75 +
       76 +        /* need to wait for sufficient dirty space */
       77 +        boolean_t tx_wait_dirty;
       78 +
  65   79          int tx_err;
  66   80  #ifdef ZFS_DEBUG
  67   81          uint64_t tx_space_towrite;
  68   82          uint64_t tx_space_tofree;
  69   83          uint64_t tx_space_tooverwrite;
  70   84          uint64_t tx_space_tounref;
  71   85          refcount_t tx_space_written;
  72   86          refcount_t tx_space_freed;
  73   87  #endif
  74   88  };
↓ open down ↓ 78 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX