xref: /spdk/module/bdev/null/bdev_null.h (revision 1521bf3be7e150730ea8c3877e4410aaafc57f97)
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