xref: /spdk/module/bdev/error/vbdev_error.h (revision 6f338d4bf3a8a91b7abe377a605a321ea2b05bf7)
1  /*   SPDX-License-Identifier: BSD-3-Clause
2   *   Copyright (c) Intel Corporation.
3   *   All rights reserved.
4   */
5  
6  #ifndef SPDK_VBDEV_ERROR_H
7  #define SPDK_VBDEV_ERROR_H
8  
9  #include "spdk/stdinc.h"
10  #include "spdk/bdev.h"
11  
12  enum vbdev_error_type {
13  	VBDEV_IO_FAILURE = 1,
14  	VBDEV_IO_PENDING,
15  };
16  
17  typedef void (*spdk_delete_error_complete)(void *cb_arg, int bdeverrno);
18  
19  /**
20   * Create a vbdev on the base bdev to inject error into it.
21   *
22   * \param base_bdev_name Name of the base bdev.
23   * \return 0 on success or negative on failure.
24   */
25  int vbdev_error_create(const char *base_bdev_name);
26  
27  /**
28   * Delete vbdev used to inject errors.
29   *
30   * \param error_vbdev_name Name of the error vbdev.
31   * \param cb_fn Function to call after deletion.
32   * \param cb_arg Arguments to pass to cb_fn.
33   */
34  void vbdev_error_delete(const char *error_vbdev_name, spdk_delete_error_complete cb_fn,
35  			void *cb_arg);
36  
37  /**
38   * Inject error to the base bdev. Users can specify which IO type error is injected,
39   * what type of error is injected, and how many errors are injected.
40   *
41   * \param name Name of the base bdev into which error is injected.
42   * \param io_type IO type into which error is injected.
43   * \param error_num Count of injected errors
44   */
45  int vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type,
46  			     uint32_t error_num);
47  
48  #endif /* SPDK_VBDEV_ERROR_H */
49