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