xref: /spdk/module/bdev/delay/vbdev_delay.h (revision 488570ebd418ba07c9e69e65106dcc964f3bb41b)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (c) Intel Corporation.
3  *   All rights reserved.
4  */
5 
6 #ifndef SPDK_VBDEV_DELAY_H
7 #define SPDK_VBDEV_DELAY_H
8 
9 #include "spdk/stdinc.h"
10 
11 #include "spdk/bdev.h"
12 #include "spdk/bdev_module.h"
13 
14 enum delay_io_type {
15 	DELAY_AVG_READ,
16 	DELAY_P99_READ,
17 	DELAY_AVG_WRITE,
18 	DELAY_P99_WRITE,
19 	DELAY_NONE
20 };
21 
22 /**
23  * Create new delay bdev.
24  *
25  * \param bdev_name Bdev on which delay vbdev will be created.
26  * \param vbdev_name Name of the delay bdev.
27  * \param avg_read_latency Desired typical read latency.
28  * \param p99_read_latency Desired p99 read latency
29  * \param avg_write_latency Desired typical write latency.
30  * \param p99_write_latency Desired p99 write latency
31  * \return 0 on success, other on failure.
32  */
33 int create_delay_disk(const char *bdev_name, const char *vbdev_name, uint64_t avg_read_latency,
34 		      uint64_t p99_read_latency, uint64_t avg_write_latency, uint64_t p99_write_latency);
35 
36 /**
37  * Delete delay bdev.
38  *
39  * \param vbdev_name Name of the delay bdev.
40  * \param cb_fn Function to call after deletion.
41  * \param cb_arg Argument to pass to cb_fn.
42  */
43 void delete_delay_disk(const char *vbdev_name, spdk_bdev_unregister_cb cb_fn,
44 		       void *cb_arg);
45 
46 /**
47  * Update one of the latency values for a given delay bdev.
48  *
49  * \param delay_name The name of the delay bdev
50  * \param latency_us The new latency value, in microseconds
51  * \param type a valid value from the delay_io_type enum
52  * \return 0 on success, -ENODEV if the bdev cannot be found, and -EINVAL if the bdev is not a delay device.
53  */
54 int vbdev_delay_update_latency_value(char *delay_name, uint64_t latency_us,
55 				     enum delay_io_type type);
56 
57 #endif /* SPDK_VBDEV_DELAY_H */
58