1488570ebSJim Harris /* SPDX-License-Identifier: BSD-3-Clause 2a6dbe372Spaul luse * Copyright (C) 2019 Intel Corporation. 307fe6a43SSeth Howell * All rights reserved. 407fe6a43SSeth Howell */ 507fe6a43SSeth Howell 607fe6a43SSeth Howell #ifndef SPDK_VBDEV_DELAY_H 707fe6a43SSeth Howell #define SPDK_VBDEV_DELAY_H 807fe6a43SSeth Howell 907fe6a43SSeth Howell #include "spdk/stdinc.h" 1007fe6a43SSeth Howell 1107fe6a43SSeth Howell #include "spdk/bdev.h" 1207fe6a43SSeth Howell #include "spdk/bdev_module.h" 1307fe6a43SSeth Howell 1407fe6a43SSeth Howell enum delay_io_type { 1507fe6a43SSeth Howell DELAY_AVG_READ, 1607fe6a43SSeth Howell DELAY_P99_READ, 1707fe6a43SSeth Howell DELAY_AVG_WRITE, 1807fe6a43SSeth Howell DELAY_P99_WRITE, 1907fe6a43SSeth Howell DELAY_NONE 2007fe6a43SSeth Howell }; 2107fe6a43SSeth Howell 2207fe6a43SSeth Howell /** 2307fe6a43SSeth Howell * Create new delay bdev. 2407fe6a43SSeth Howell * 2507fe6a43SSeth Howell * \param bdev_name Bdev on which delay vbdev will be created. 2607fe6a43SSeth Howell * \param vbdev_name Name of the delay bdev. 27*2f08dc7fSTomasz Zawadzki * \param uuid UUID of the delay bdev. 2807fe6a43SSeth Howell * \param avg_read_latency Desired typical read latency. 2907fe6a43SSeth Howell * \param p99_read_latency Desired p99 read latency 3007fe6a43SSeth Howell * \param avg_write_latency Desired typical write latency. 3107fe6a43SSeth Howell * \param p99_write_latency Desired p99 write latency 3207fe6a43SSeth Howell * \return 0 on success, other on failure. 3307fe6a43SSeth Howell */ 34*2f08dc7fSTomasz Zawadzki int create_delay_disk(const char *bdev_name, const char *vbdev_name, struct spdk_uuid *uuid, 35*2f08dc7fSTomasz Zawadzki uint64_t avg_read_latency, 3607fe6a43SSeth Howell uint64_t p99_read_latency, uint64_t avg_write_latency, uint64_t p99_write_latency); 3707fe6a43SSeth Howell 3807fe6a43SSeth Howell /** 3907fe6a43SSeth Howell * Delete delay bdev. 4007fe6a43SSeth Howell * 414573e4ccSShuhei Matsumoto * \param vbdev_name Name of the delay bdev. 4207fe6a43SSeth Howell * \param cb_fn Function to call after deletion. 4307fe6a43SSeth Howell * \param cb_arg Argument to pass to cb_fn. 4407fe6a43SSeth Howell */ 454573e4ccSShuhei Matsumoto void delete_delay_disk(const char *vbdev_name, spdk_bdev_unregister_cb cb_fn, 4607fe6a43SSeth Howell void *cb_arg); 4707fe6a43SSeth Howell 4807fe6a43SSeth Howell /** 4907fe6a43SSeth Howell * Update one of the latency values for a given delay bdev. 5007fe6a43SSeth Howell * 5107fe6a43SSeth Howell * \param delay_name The name of the delay bdev 5207fe6a43SSeth Howell * \param latency_us The new latency value, in microseconds 5307fe6a43SSeth Howell * \param type a valid value from the delay_io_type enum 5407fe6a43SSeth Howell * \return 0 on success, -ENODEV if the bdev cannot be found, and -EINVAL if the bdev is not a delay device. 5507fe6a43SSeth Howell */ 5607fe6a43SSeth Howell int vbdev_delay_update_latency_value(char *delay_name, uint64_t latency_us, 5707fe6a43SSeth Howell enum delay_io_type type); 5807fe6a43SSeth Howell 5907fe6a43SSeth Howell #endif /* SPDK_VBDEV_DELAY_H */ 60