xref: /spdk/module/bdev/null/bdev_null.h (revision a6dbe3721eb3b5990707fc3e378c95e505dd8ab5)
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 spdk_null_bdev_opts {
17 	const char *name;
18 	const struct spdk_uuid *uuid;
19 	uint64_t num_blocks;
20 	uint32_t block_size;
21 	uint32_t md_size;
22 	bool md_interleave;
23 	enum spdk_dif_type dif_type;
24 	bool dif_is_head_of_md;
25 };
26 
27 int bdev_null_create(struct spdk_bdev **bdev, const struct spdk_null_bdev_opts *opts);
28 
29 /**
30  * Delete null bdev.
31  *
32  * \param bdev_name Name of null bdev.
33  * \param cb_fn Function to call after deletion.
34  * \param cb_arg Argument to pass to cb_fn.
35  */
36 void bdev_null_delete(const char *bdev_name, spdk_delete_null_complete cb_fn,
37 		      void *cb_arg);
38 /**
39  * Resize null bdev.
40  *
41  * \param bdev_name Name of null bdev.
42  * \param new_size_in_mb The new size in MiB for this bdev
43  */
44 int bdev_null_resize(const char *bdev_name, const uint64_t new_size_in_mb);
45 
46 #endif /* SPDK_BDEV_NULL_H */
47