Print this page
NEX-10069 ZFS_READONLY is a little too strict (fix test lint)
NEX-9553 Move ss_fill gap logic from scan algorithm into range_tree.c
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
NEX-6088 ZFS scrub/resilver take excessively long due to issuing lots of random IO
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
NEX-4620 ZFS autotrim triggering is unreliable
NEX-4622 On-demand TRIM code illogically enumerates metaslabs via mg_ms_tree
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
NEX-4619 Want kstats to monitor TRIM and UNMAP operation
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
NEX-4245 WRC: Code cleanup and refactoring to simplify merge with upstream
Reviewed by: Alek Pinchuk <alek.pinchuk@nexenta.com>
Reviewed by: Alex Aizman <alex.aizman@nexenta.com>
NEX-3984 On-demand TRIM
Reviewed by: Alek Pinchuk <alek@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Conflicts:
        usr/src/common/zfs/zpool_prop.c
        usr/src/uts/common/sys/fs/zfs.h
NEX-3558 KRRP Integration

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/metaslab.h
          +++ new/usr/src/uts/common/fs/zfs/sys/metaslab.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 2015 Nexenta Systems, Inc. All rights reserved.
  23   24   * Copyright (c) 2011, 2016 by Delphix. All rights reserved.
  24   25   */
  25   26  
  26   27  #ifndef _SYS_METASLAB_H
  27   28  #define _SYS_METASLAB_H
  28   29  
  29   30  #include <sys/spa.h>
  30   31  #include <sys/space_map.h>
  31   32  #include <sys/txg.h>
  32   33  #include <sys/zio.h>
↓ open down ↓ 16 lines elided ↑ open up ↑
  49   50  void metaslab_fini(metaslab_t *);
  50   51  
  51   52  void metaslab_load_wait(metaslab_t *);
  52   53  int metaslab_load(metaslab_t *);
  53   54  void metaslab_unload(metaslab_t *);
  54   55  
  55   56  void metaslab_sync(metaslab_t *, uint64_t);
  56   57  void metaslab_sync_done(metaslab_t *, uint64_t);
  57   58  void metaslab_sync_reassess(metaslab_group_t *);
  58   59  uint64_t metaslab_block_maxsize(metaslab_t *);
       60 +void metaslab_auto_trim(metaslab_t *, uint64_t);
  59   61  
  60      -#define METASLAB_HINTBP_FAVOR           0x0
  61      -#define METASLAB_HINTBP_AVOID           0x1
  62      -#define METASLAB_GANG_HEADER            0x2
  63      -#define METASLAB_GANG_CHILD             0x4
  64      -#define METASLAB_ASYNC_ALLOC            0x8
  65      -#define METASLAB_DONT_THROTTLE          0x10
       62 +#define METASLAB_HINTBP_FAVOR           0x00
       63 +#define METASLAB_HINTBP_AVOID           0x01
       64 +#define METASLAB_GANG_HEADER            0x02
       65 +#define METASLAB_GANG_CHILD             0x04
       66 +#define METASLAB_ASYNC_ALLOC            0x08
       67 +#define METASLAB_DONT_THROTTLE          0x10
       68 +#define METASLAB_USE_WEIGHT_SECONDARY   0x20
  66   69  
  67   70  int metaslab_alloc(spa_t *, metaslab_class_t *, uint64_t,
  68   71      blkptr_t *, int, uint64_t, blkptr_t *, int, zio_alloc_list_t *, zio_t *);
  69      -int metaslab_alloc_dva(spa_t *, metaslab_class_t *, uint64_t,
  70      -    dva_t *, int, dva_t *, uint64_t, int, zio_alloc_list_t *);
  71   72  void metaslab_free(spa_t *, const blkptr_t *, uint64_t, boolean_t);
  72      -void metaslab_free_concrete(vdev_t *, uint64_t, uint64_t, uint64_t);
  73      -void metaslab_free_dva(spa_t *, const dva_t *, uint64_t);
  74      -void metaslab_free_impl_cb(uint64_t, vdev_t *, uint64_t, uint64_t, void *);
  75      -void metaslab_unalloc_dva(spa_t *, const dva_t *, uint64_t);
       73 +void metaslab_free_dva(spa_t *, const dva_t *, uint64_t, boolean_t);
  76   74  int metaslab_claim(spa_t *, const blkptr_t *, uint64_t);
  77      -int metaslab_claim_impl(vdev_t *, uint64_t, uint64_t, uint64_t);
  78   75  void metaslab_check_free(spa_t *, const blkptr_t *);
       76 +zio_t *metaslab_trim_all(metaslab_t *, uint64_t *);
  79   77  
  80   78  void metaslab_alloc_trace_init(void);
  81   79  void metaslab_alloc_trace_fini(void);
  82   80  void metaslab_trace_init(zio_alloc_list_t *);
  83   81  void metaslab_trace_fini(zio_alloc_list_t *);
  84   82  
  85   83  metaslab_class_t *metaslab_class_create(spa_t *, metaslab_ops_t *);
  86   84  void metaslab_class_destroy(metaslab_class_t *);
  87   85  int metaslab_class_validate(metaslab_class_t *);
  88   86  void metaslab_class_histogram_verify(metaslab_class_t *);
↓ open down ↓ 15 lines elided ↑ open up ↑
 104  102  void metaslab_group_activate(metaslab_group_t *);
 105  103  void metaslab_group_passivate(metaslab_group_t *);
 106  104  boolean_t metaslab_group_initialized(metaslab_group_t *);
 107  105  uint64_t metaslab_group_get_space(metaslab_group_t *);
 108  106  void metaslab_group_histogram_verify(metaslab_group_t *);
 109  107  uint64_t metaslab_group_fragmentation(metaslab_group_t *);
 110  108  void metaslab_group_histogram_remove(metaslab_group_t *, metaslab_t *);
 111  109  void metaslab_group_alloc_decrement(spa_t *, uint64_t, void *, int);
 112  110  void metaslab_group_alloc_verify(spa_t *, const blkptr_t *, void *);
 113  111  
      112 +void metaslab_trimstats_create(spa_t *spa);
      113 +void metaslab_trimstats_destroy(spa_t *spa);
      114 +
 114  115  #ifdef  __cplusplus
 115  116  }
 116  117  #endif
 117  118  
 118  119  #endif  /* _SYS_METASLAB_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX