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/spa_impl.h
          +++ new/usr/src/uts/common/fs/zfs/sys/spa_impl.h
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  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 (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  23      - * Copyright (c) 2012 by Delphix. All rights reserved.
       23 + * Copyright (c) 2013 by Delphix. All rights reserved.
  24   24   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
  25   25   */
  26   26  
  27   27  #ifndef _SYS_SPA_IMPL_H
  28   28  #define _SYS_SPA_IMPL_H
  29   29  
  30   30  #include <sys/spa.h>
  31   31  #include <sys/vdev.h>
  32   32  #include <sys/metaslab.h>
  33   33  #include <sys/dmu.h>
↓ open down ↓ 193 lines elided ↑ open up ↑
 227  227          uint64_t        spa_did;                /* if procp != p0, did of t1 */
 228  228          boolean_t       spa_autoreplace;        /* autoreplace set in open */
 229  229          int             spa_vdev_locks;         /* locks grabbed */
 230  230          uint64_t        spa_creation_version;   /* version at pool creation */
 231  231          uint64_t        spa_prev_software_version; /* See ub_software_version */
 232  232          uint64_t        spa_feat_for_write_obj; /* required to write to pool */
 233  233          uint64_t        spa_feat_for_read_obj;  /* required to read from pool */
 234  234          uint64_t        spa_feat_desc_obj;      /* Feature descriptions */
 235  235          cyclic_id_t     spa_deadman_cycid;      /* cyclic id */
 236  236          uint64_t        spa_deadman_calls;      /* number of deadman calls */
 237      -        uint64_t        spa_sync_starttime;     /* starting time fo spa_sync */
      237 +        hrtime_t        spa_sync_starttime;     /* starting time fo spa_sync */
 238  238          uint64_t        spa_deadman_synctime;   /* deadman expiration timer */
 239      -        kmutex_t        spa_iokstat_lock;       /* protects spa_iokstat_* */
      239 +
      240 +        /*
      241 +         * spa_iokstat_lock protects spa_iokstat and
      242 +         * spa_queue_stats[].
      243 +         */
      244 +        kmutex_t        spa_iokstat_lock;
 240  245          struct kstat    *spa_iokstat;           /* kstat of io to this pool */
      246 +        struct {
      247 +                int spa_active;
      248 +                int spa_queued;
      249 +        } spa_queue_stats[ZIO_PRIORITY_NUM_QUEUEABLE];
      250 +
 241  251          hrtime_t        spa_ccw_fail_time;      /* Conf cache write fail time */
      252 +
 242  253          /*
 243  254           * spa_refcount & spa_config_lock must be the last elements
 244  255           * because refcount_t changes size based on compilation options.
 245  256           * In order for the MDB module to function correctly, the other
 246  257           * fields must remain in the same location.
 247  258           */
 248  259          spa_config_lock_t spa_config_lock[SCL_LOCKS]; /* config changes */
 249  260          refcount_t      spa_refcount;           /* number of opens */
 250  261  };
 251  262  
 252  263  extern const char *spa_config_path;
 253  264  
 254  265  extern void spa_taskq_dispatch_ent(spa_t *spa, zio_type_t t, zio_taskq_type_t q,
 255  266      task_func_t *func, void *arg, uint_t flags, taskq_ent_t *ent);
 256  267  
 257  268  #ifdef  __cplusplus
 258  269  }
 259  270  #endif
 260  271  
 261  272  #endif  /* _SYS_SPA_IMPL_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX