xref: /spdk/module/bdev/delay/vbdev_delay.h (revision f8abbede89d30584d2a4f8427b13896f8591b873)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (C) 2019 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 uuid UUID of the delay bdev.
28  * \param avg_read_latency Desired typical read latency.
29  * \param p99_read_latency Desired p99 read latency
30  * \param avg_write_latency Desired typical write latency.
31  * \param p99_write_latency Desired p99 write latency
32  * \return 0 on success, other on failure.
33  */
34 int create_delay_disk(const char *bdev_name, const char *vbdev_name, struct spdk_uuid *uuid,
35 		      uint64_t avg_read_latency,
36 		      uint64_t p99_read_latency, uint64_t avg_write_latency, uint64_t p99_write_latency);
37 
38 /**
39  * Delete delay bdev.
40  *
41  * \param vbdev_name Name of the delay bdev.
42  * \param cb_fn Function to call after deletion.
43  * \param cb_arg Argument to pass to cb_fn.
44  */
45 void delete_delay_disk(const char *vbdev_name, spdk_bdev_unregister_cb cb_fn,
46 		       void *cb_arg);
47 
48 /**
49  * Update one of the latency values for a given delay bdev.
50  *
51  * \param delay_name The name of the delay bdev
52  * \param latency_us The new latency value, in microseconds
53  * \param type a valid value from the delay_io_type enum
54  * \return 0 on success, -ENODEV if the bdev cannot be found, and -EINVAL if the bdev is not a delay device.
55  */
56 int vbdev_delay_update_latency_value(char *delay_name, uint64_t latency_us,
57 				     enum delay_io_type type);
58 
59 #endif /* SPDK_VBDEV_DELAY_H */
60