The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/cmd/raidz_test/raidz_test.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or https://opensource.org/licenses/CDDL-1.0.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 
   22 /*
   23  * Copyright (C) 2016 Gvozden Nešković. All rights reserved.
   24  */
   25 
   26 #ifndef RAIDZ_TEST_H
   27 #define RAIDZ_TEST_H
   28 
   29 #include <sys/spa.h>
   30 
   31 static const char *const raidz_impl_names[] = {
   32         "original",
   33         "scalar",
   34         "sse2",
   35         "ssse3",
   36         "avx2",
   37         "avx512f",
   38         "avx512bw",
   39         "aarch64_neon",
   40         "aarch64_neonx2",
   41         "powerpc_altivec",
   42         NULL
   43 };
   44 
   45 enum raidz_verbosity {
   46         D_ALL,
   47         D_INFO,
   48         D_DEBUG,
   49 };
   50 
   51 typedef struct raidz_test_opts {
   52         size_t rto_ashift;
   53         uint64_t rto_offset;
   54         size_t rto_dcols;
   55         size_t rto_dsize;
   56         enum raidz_verbosity rto_v;
   57         size_t rto_sweep;
   58         size_t rto_sweep_timeout;
   59         size_t rto_benchmark;
   60         size_t rto_expand;
   61         uint64_t rto_expand_offset;
   62         size_t rto_sanity;
   63         size_t rto_gdb;
   64 
   65         /* non-user options */
   66         boolean_t rto_should_stop;
   67 
   68         zio_t *zio_golden;
   69         raidz_map_t *rm_golden;
   70 } raidz_test_opts_t;
   71 
   72 static const raidz_test_opts_t rto_opts_defaults = {
   73         .rto_ashift = 9,
   74         .rto_offset = 1ULL << 0,
   75         .rto_dcols = 8,
   76         .rto_dsize = 1<<19,
   77         .rto_v = D_ALL,
   78         .rto_sweep = 0,
   79         .rto_benchmark = 0,
   80         .rto_expand = 0,
   81         .rto_expand_offset = -1ULL,
   82         .rto_sanity = 0,
   83         .rto_gdb = 0,
   84         .rto_should_stop = B_FALSE
   85 };
   86 
   87 extern raidz_test_opts_t rto_opts;
   88 
   89 static inline size_t ilog2(size_t a)
   90 {
   91         return (a > 1 ? 1 + ilog2(a >> 1) : 0);
   92 }
   93 
   94 
   95 #define LOG(lvl, ...)                           \
   96 {                                               \
   97         if (rto_opts.rto_v >= lvl)              \
   98                 (void) fprintf(stdout, __VA_ARGS__);    \
   99 }                                               \
  100 
  101 #define LOG_OPT(lvl, opt, ...)                  \
  102 {                                               \
  103         if (opt->rto_v >= lvl)                  \
  104                 (void) fprintf(stdout, __VA_ARGS__);    \
  105 }                                               \
  106 
  107 #define ERR(...)        (void) fprintf(stderr, __VA_ARGS__)
  108 
  109 
  110 #define DBLSEP "================\n"
  111 #define SEP    "----------------\n"
  112 
  113 
  114 #define raidz_alloc(size)       abd_alloc(size, B_FALSE)
  115 #define raidz_free(p, size)     abd_free(p)
  116 
  117 
  118 void init_zio_abd(zio_t *zio);
  119 
  120 void run_raidz_benchmark(void);
  121 
  122 struct raidz_map *vdev_raidz_map_alloc_expanded(abd_t *, uint64_t, uint64_t,
  123     uint64_t, uint64_t, uint64_t, uint64_t, uint64_t);
  124 
  125 #endif /* RAIDZ_TEST_H */

Cache object: ac2388d5218b16c5763aae5484663c68


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.