Home
last modified time | relevance | path

Searched refs:in (Results 1 – 25 of 98) sorted by relevance

1234

/spdk/include/spdk/
H A Dendian.h28 to_be16(void *out, uint16_t in) in to_be16() argument
31 tmp[0] = (in >> 8) & 0xFF; in to_be16()
32 tmp[1] = in & 0xFF; in to_be16()
46 to_be32(void *out, uint32_t in) in to_be32() argument
49 tmp[0] = (in >> 24) & 0xFF; in to_be32()
50 tmp[1] = (in >> 16) & 0xFF; in to_be32()
51 tmp[2] = (in >> 8) & 0xFF; in to_be32()
52 tmp[3] = in & 0xFF; in to_be32()
70 to_be64(void *out, uint64_t in) in to_be64() argument
73 tmp[0] = (in >> 56) & 0xFF; in to_be64()
[all …]
/spdk/lib/util/
H A Dspdk_util.map4 # public functions in base64.h
10 # public functions in bit_array.h
26 # public functions in bit_pool.h
41 # public functions in cpuset.h
58 # public functions in crc16.h
62 # public functions in crc32.h
68 # public functions in crc64.h
71 # public functions in dif.h
94 # public functions in fd.h
98 # public functions in fil
[all...]
/spdk/test/unit/lib/json/json_parse.c/
H A Djson_parse_ut.c20 #define BUF_SETUP(in) \ argument
22 if (sizeof(in) > 1) { \
23 memcpy(g_buf, in, sizeof(in) - 1); \
31 #define PARSE_PASS_FLAGS(in, num_vals, trailing, flags) \ argument
32 BUF_SETUP(in); \
33 CU_ASSERT(spdk_json_parse(g_buf, sizeof(in) - 1, NULL, 0, &g_end, flags) == num_vals); \
35 …CU_ASSERT(spdk_json_parse(g_buf, sizeof(in) - 1, g_vals, JSONVALUE_NUM, &g_end, flags | SPDK_JSON_…
36 CU_ASSERT(g_end == g_buf + sizeof(in) - sizeof(trailing)); \
40 #define PARSE_PASS(in, num_vals, trailing) \ argument
41 PARSE_PASS_FLAGS(in, num_vals, trailing, 0)
[all …]
/spdk/doc/
H A Dlibraries.md4 storage-centric software libraries. With this in mind, much care has been taken
7 (`lib` and `module`) inside of the SPDK repository in a deliberate way to prevent
10 of the libraries contained in these two directories.
15 compose SPDK. Some of these base libraries define plug-in systems. Instances of those plug-ins are …
16 modules and are located in the `module` directory. For example, the `spdk_sock` library is containe…
18 are contained in the `module` directory.
22 The libraries in the `lib` directory can be readily divided into four categories:
35 …(see `spdk_jsonrpc`) and thread abstractions (see `spdk_thread`). The most notable library in this…
39 The one library in the `lib` directory that doesn't fit into the above classification is the `spdk_…
40 This library defines a framework used by the applications contained in the `app` and `example` dire…
[all …]
H A Dcompression.md7 requested by a user to the compressed blocks on SSD. The scheme described in this document
9 framework. This algorithm will be implemented in a library called "libreduce". Higher-level
10 software modules can built on top of this library to create and present block devices in a
19 (Note that in some cases, blocks of storage may not be compressible, or cannot be compressed enough
25 compression for reasons described later in this document. This algorithm has no direct knowledge
34 in place, some additional backing storage is required to temporarily store data for writes in
37 Storage from the backing storage device will be allocated, read, and written to in 4KB units for
42 A compressed block device compresses and decompresses data in units of chunks, where a chunk is a
45 consumes a number of 4KB backing IO units between 1 and the number of 4KB units in the chunk. For
47 much the chunk was able to be compressed. The blocks on disk associated with a chunk are stored in
[all …]
H A Dblobfs.md37 Create an NVMe section in the configuration file using SPDK's `gen_nvme.sh` script.
48 The following will allocate 5GB of huge page memory (in addition to binding the NVMe devices to uio…
65 3. `spdk_cache_size` - Defines the amount of userspace cache memory used by SPDK. Specified in ter…
73 BlobFS provides a FUSE plug-in to mount an SPDK BlobFS as a kernel filesystem for inspection or deb…
74 The FUSE plug-in requires fuse3 and will be built automatically when fuse3 is detected on the syste…
80 Note that the FUSE plug-in has some limitations - see the list below.
85 …may run into issues. BlobFS will be tested in a broader range of use cases after this initial rel…
87 yet so is not part of the public interface yet. This will be added in a future release.
88 * File renames are not atomic. This will be fixed in a future release.
90 …as xattrs in each blob. This means that filename lookup is an O(n) operation. An SPDK btree impl…
[all …]
H A Daccel_fw.md4 that can be implemented through plug-in modules and low-level libraries. These
5 plug-in modules include support for hardware acceleration engines such as
7 Streaming Accelerator (DSA) engine. Additionally, a software plug-in module
8 exists to enable use of the framework in environments without hardware
14 Functions implemented via the framework can be found in the DoxyGen documentation of the
20 in `/lib/accel`. These functions may be called by an SPDK application and in
26 operations supported by the framework have a backing software implementation in
30 a module based on the order in which it was initialized. So, for example if two modules are
37 the hardware. Low level libraries are located in the '/lib' directory with the
47 The low level library for IOAT is located in `/lib/ioat`. The low level library
[all …]
H A Duserspace.md14 drivers run in kernel space (i.e. ring 0 on x86). SPDK contains drivers that
15 instead are designed to run in user space, but they still interface directly
21 [writing to a file in sysfs](https://lwn.net/Articles/143397/).
26 are "dummy" drivers in the sense that they mostly indicate to the operating
28 to re-bind the default driver. They don't actually initialize the hardware in
33 which is a critical piece of hardware for ensuring memory safety in user space
42 implementations of most of the layers in a typical operating system storage
47 User space drivers utilize features in uio or vfio to map the
60 interrupt to a handler in a user space process just isn't feasible for most
62 overhead due to forced context switches. Operations in SPDK are almost
[all …]
H A Dconcurrency.md6 hardware. This can mean many things in practice. For instance, moving from one
33 SPDK takes a different approach altogether. Instead of placing shared data in a
40 concurrency mechanism in [Go](https://tour.golang.org/concurrency/2). A message
41 in SPDK consists of a function pointer and a pointer to some context. Messages
47 in a cache closer to that core. It's often most efficient to have each core work
48 on a small set of data sitting in its local cache and then hand off a small
56 employed in the I/O path. This of course trades memory size for computational
57 efficiency, so it is used in only the most critical code paths.
62 fundamental libraries in SPDK, for instance, don't do any message passing on
63 their own and instead enumerate rules about when functions may be called in
[all …]
H A Dblob.md16 intended to supplement the source code in providing an overall understanding of how to integrate Bl…
18 intended to serve as a design document or an API reference and in some cases source code snippets a…
24 backing a higher level storage service, typically in lieu of a traditional filesystem. These higher…
29 groups of blocks on a block device called 'blobs'. Blobs are typically large, measured in at least …
33 reads and writes, with no required background garbage collection. However, in practice the design w…
43 number of blocks in the disk. A logical block is typically either 512B or 4KiB.
46 …t page worth of blocks is page 0, the second page is page 1, etc. A page is typically 4KiB in size,
47 …so this is either 8 or 1 logical blocks in practice. The SSD must be able to perform atomic reads …
51 …worth of pages, cluster 1 is the second grouping of pages, etc. A cluster is typically 1MiB in siz…
54 …Blobs are read and written in units of pages by specifying an offset from the start of the blob. A…
[all …]
H A Dgdb_macros.md6 in lists, e.g. information about bdevs or threads.
25 we know is in address 0x7f7dcc2c7c08.
28 56th in the list...
30 Instead, we can use a gdb macro in order to get information about all the
185 In the example below, I copied the macros to the /tmp directory which is not in
203 If the python script is in there, then the only thing you need to do when
208 .gdbinit can also be used in order to run automatically run the manual steps
221 The reason is that the macros need to use globals provided by spdk in order to
223 This will result in errors if these are not available which is very possible if
232 File "/opt/km/install/tools/gdb_macros/gdb_macros.py", line 257, in invoke
[all …]
H A Dapplications.md5 use in other applications. However, SPDK also contains a number of applications.
7 featured and high quality. The major applications in SPDK are:
14 There are also a number of tools and examples in the `examples` directory.
16 The SPDK targets are all based on a common framework so they have much in
18 functionality is implemented in various subsystems. Subsystems have a unified
38 -p | --main-core | integer | first core in CPU mask | main (primary) core for DPDK
62 SPDK has an experimental low overhead tracing framework. Tracepoints in this
65 subset of tracepoint groups in the application.
67 Note: Additional documentation on the tracepoint framework is in progress.
84 To see which RPC methods are available in the current state, issue the
[all …]
H A Dporting.md8 defined in include/spdk/env.h.
12 This DPDK implementation can be found in `lib/env_dpdk`.
15 Users who want to use SPDK on other operating systems, or in
19 in CONFIG:
H A Doverview.md5 SPDK is composed of a set of C libraries residing in `lib` with public interface
6 header files in `include/spdk`, plus a set of applications built out of those
7 libraries in `app`. Users can use the C libraries in their software or deploy
14 threading framework actually in use. To accomplish this, all SPDK libraries
15 interact with an abstraction library in `lib/thread` (public interface at
25 abstracted in a library called `env` whose public header is at
51 explanations reside in this directory, as well as the Doxygen config file.
69 is all placed in the `spdk` subdirectory of `include` and we highly
77 Most of the headers here correspond with a library in the `lib` directory. There
H A Dnvmf_tgt_pg.md13 The SPDK NVMe-oF target library is located in `lib/nvmf`. The library
15 used in the implementation of the example NVMe-oF target application in
28 not appear in the NVMe-oF specification. SPDK defines this to mean the
55 does not appear in the NVMe-oF specification. Often, network transports have
74 Subsystems begin in an inactive state and must be activated by calling
76 when in the paused or inactive state. A running subsystem may be paused by
107 discovery subsystem are handled in the same way as any other subsystem.
112 in NVMe over Fabrics) and has an extensible system for adding new fabrics
113 in the future. The SPDK NVMe-oF target library implements a plugin system for
115 implement is located in lib/nvmf/transport.h. As of this writing, only an RDMA
[all …]
H A Dsma.md15 The interface is defined in a protobuf files located in `proto`
16 directory. The generic interface common to all types of devices is defined in
17 `sma.proto` file, while device-specific options are defined in their separate
43 to use under `crypto` section in config. It is also possible to register out-of-tree
77 `crypto` section in config. It is also possible to register out-of-tree crypto engines
124 Then, SMA can be started using a script located in `scripts/sma.py`. It
127 etc.). Device types not listed in the configuration will be disabled and it
148 device types. A plugin will be loaded if it's specified in the `SMA_PLUGINS`
150 specified in the `plugins` section of the config file. For example, the
168 Each plugin needs to be in the python search path (either in one of the default
[all …]
H A Dnvme_spec.md11 NVMe devices allow host software (in our case, the SPDK NVMe driver) to allocate
12 queue pairs in host memory. The term "host" is used a lot, so to clarify that's
25 of commands into open slots in the ring and then write the doorbell just one
29 process in the NVMe specification, which is conveniently available from the main
33 necessary, a location in host memory containing a descriptor for host memory
50 in the life cycle of the program, so that's not part of the "hot" path. Then,
58 The first stage in the driver is allocating a request object to track the operation. The
66 hardware queue can actually hold and SPDK will automatically queue in software.
75 obtain an open slot in the NVMe submission queue. For each element in the
77 allocated in an array, so they can be quickly looked up by an index. The tracker
[all …]
H A Dvhost_processing.md14 scenes. Code snippets used in this document might have been simplified for the
28 store generic scatter-gatter I/O. Virtio is most commonly used in QEMU VMs,
49 > control the vhost implementation in the Linux kernel. It implements the control
52 > descriptors in the ancillary data of the message.
55 > The front-end is the application that shares its virtqueues, in our case QEMU.
60 > Ethernet switch running in user space, such as Snabbswitch, or a block
64 > server (listening) in the socket communication.
72 offload in QEMU. The following diagram presents how QEMU-based VM
92 - user address - for memory translations in Vhost-user messages (e.g.
94 - guest address - for buffers addresses translations in vrings (for QEMU this
[all …]
H A Dshfmt.md12 The majority of tests (and scripts overall) in the SPDK repo are written
13 in Bash (with a quite significant emphasis on "Bashism"), thus a style
25 all .sh present in the staging area when run locally from our pre-commit
36 currently in use (3.1.0 is currently supported).
53 by setting SHFMT_DIR and SHFMT_DIR_OUT in the environment. Example:
123 case "$FOO" in
128 case "$FOO" in
/spdk/go/rpc/
H A Dgo.sum14 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
15 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN…
16 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUm…
17 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
18 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
/spdk/scripts/perf/nvmf/
H A DREADME.md3 Scripts contained in this directory are used to run TCP and RDMA benchmark tests,
5 To run the scripts in your environment please follow steps below.
27 to /usr/src/local directory in order to configure NIC ports IRQ affinity.
29 option in Target and Initiator configuration sections.
44 Make sure to make these assignments persistent, as in some cases NIC drivers may be reloaded.
45 - Adjust firewall service to allow traffic on IP - port pairs used in test
52 to automate NVMe-oF testing is provided in this repository.
53 The following sub-chapters describe each configuration section in more detail.
78 is already in place on Initiator systems and there's no need to re-build it,
121 CPU core mask either in for
[all...]
/spdk/app/fio/nvme/
H A DREADME.md50 fio and set ioengine=spdk in the fio configuration file (see example_config.fio in the same
57 To select NVMe devices, you pass an SPDK Transport Identifier string as the filename. These are in
77 and instead only use '.'. This is a limitation in fio - it splits filenames on
82 thread in the same process for every job. The SPDK fio plugin is limited to this latter thread
84 plugin supports multiple threads - in this case, the "1" just means "use thread mode".
93 When testing FIO on multiple NVMe SSDs with SPDK plugin, it is recommended to use multiple jobs in
118 PI metadata is 8 Byte, then blocksize in fio configure file should be 520 Byte:
129 Expose two options 'apptag' and 'apptag_mask', users can change them in the configuration file when…
130 application tag and application tag mask in end-to-end data protection. Application tag and applic…
135 To enable VMD enumeration add enable_vmd flag in fio configuration file:
[all …]
/spdk/test/app/fuzz/nvme_fuzz/
H A DREADME.md22 Commands are dumped as named objects in json format which can then be supplied back to the
26 it is completed in the JSON format specified above.
27 At the end of each test run, a summary is printed for each namespace in the following format:
38 array in a file and then pass them to the fuzzer using the -j option. Please see the
39 example.json file in this directory for an example of a properly formed array of command
47 Most of the variables in the spdk_nvme_cmd structure are represented as numbers in JSON.
/spdk/scripts/env_dpdk/22.11/
H A D23.11-rte_bus_pci.h.patch25 - * RTE_PCI_CAP_ID_*, defined in librte_pci.
30 - * < 0: An error in PCI config space read.
37 - * Find device's PCI capability starting from a previous offset in PCI
45 - * RTE_PCI_CAP_ID_*, defined in librte_pci.
47 - * An offset in the PCI configuration space from which the capability is
53 - * < 0: An error in PCI config space read.
72 * 0 on success, -1 on error in PCI config space read/write.
88 - * 0 on success, -1 on error in PCI config space read/write.
/spdk/test/unit/lib/jsonrpc/jsonrpc_server.c/
H A Djsonrpc_server_ut.c19 #define PARSE_PASS(in, trailing) \ argument
22 CU_ASSERT(jsonrpc_parse_request(conn, in, sizeof(in) - 1) == sizeof(in) - sizeof(trailing))
30 #define PARSE_FAIL(in) \ argument
31 CU_ASSERT(jsonrpc_parse_request(conn, in, sizeof(in) - 1) < 0);
322 * Two valid requests end to end in the same buffer. in test_parse_request_streaming()
380 /* This is for ASAN. Don't know why but if pointer is left in global variable in main()

1234