Line data Source code
1 : /* SPDX-License-Identifier: BSD-3-Clause
2 : * Copyright 2023 Solidigm All Rights Reserved
3 : * Copyright (C) 2022 Intel Corporation.
4 : * All rights reserved.
5 : */
6 :
7 : #ifndef FTL_NV_CACHE_IO_H
8 : #define FTL_NV_CACHE_IO_H
9 :
10 : #include "spdk/bdev.h"
11 : #include "ftl_core.h"
12 :
13 : static inline int
14 0 : ftl_nv_cache_bdev_read_blocks_with_md(struct spdk_ftl_dev *dev,
15 : struct spdk_bdev_desc *desc,
16 : struct spdk_io_channel *ch,
17 : void *buf, void *md,
18 : uint64_t offset_blocks, uint64_t num_blocks,
19 : spdk_bdev_io_completion_cb cb, void *cb_arg)
20 : {
21 0 : if (spdk_bdev_get_md_size(spdk_bdev_desc_get_bdev(desc))) {
22 0 : return spdk_bdev_read_blocks_with_md(desc, ch, buf, md ? : g_ftl_read_buf,
23 : offset_blocks, num_blocks, cb, cb_arg);
24 : } else {
25 0 : return spdk_bdev_read_blocks(desc, ch, buf, offset_blocks, num_blocks,
26 : cb, cb_arg);
27 : }
28 : }
29 :
30 : static inline int
31 0 : ftl_nv_cache_bdev_write_blocks_with_md(struct spdk_ftl_dev *dev,
32 : struct spdk_bdev_desc *desc,
33 : struct spdk_io_channel *ch,
34 : void *buf, void *md,
35 : uint64_t offset_blocks, uint64_t num_blocks,
36 : spdk_bdev_io_completion_cb cb, void *cb_arg)
37 : {
38 0 : if (spdk_bdev_get_md_size(spdk_bdev_desc_get_bdev(desc))) {
39 0 : return spdk_bdev_write_blocks_with_md(desc, ch, buf, md ? : g_ftl_write_buf,
40 : offset_blocks, num_blocks, cb, cb_arg);
41 : } else {
42 0 : return spdk_bdev_write_blocks(desc, ch, buf, offset_blocks, num_blocks,
43 : cb, cb_arg);
44 : }
45 : }
46 :
47 : #endif /* FTL_NV_CACHE_IO_H */
|