xref: /spdk/module/bdev/null/bdev_null.h (revision bf30e09abe1667ae2769aa367cde39c550bcac00)
1  /*   SPDX-License-Identifier: BSD-3-Clause
2   *   Copyright (C) 2017 Intel Corporation. All rights reserved.
3   *   Copyright (c) 2019 Mellanox Technologies LTD. All rights reserved.
4   */
5  
6  #ifndef SPDK_BDEV_NULL_H
7  #define SPDK_BDEV_NULL_H
8  
9  #include "spdk/stdinc.h"
10  
11  typedef void (*spdk_delete_null_complete)(void *cb_arg, int bdeverrno);
12  
13  struct spdk_bdev;
14  struct spdk_uuid;
15  
16  struct null_bdev_opts {
17  	char *name;
18  	struct spdk_uuid uuid;
19  	uint64_t num_blocks;
20  	uint32_t block_size;
21  	uint32_t physical_block_size;
22  	uint32_t md_size;
23  	enum spdk_dif_type dif_type;
24  	bool dif_is_head_of_md;
25  	enum spdk_dif_pi_format dif_pi_format;
26  };
27  
28  int bdev_null_create(struct spdk_bdev **bdev, const struct null_bdev_opts *opts);
29  
30  /**
31   * Delete null bdev.
32   *
33   * \param bdev_name Name of null bdev.
34   * \param cb_fn Function to call after deletion.
35   * \param cb_arg Argument to pass to cb_fn.
36   */
37  void bdev_null_delete(const char *bdev_name, spdk_delete_null_complete cb_fn,
38  		      void *cb_arg);
39  /**
40   * Resize null bdev.
41   *
42   * \param bdev_name Name of null bdev.
43   * \param new_size_in_mb The new size in MiB for this bdev
44   */
45  int bdev_null_resize(const char *bdev_name, const uint64_t new_size_in_mb);
46  
47  #endif /* SPDK_BDEV_NULL_H */
48