Merge branch 'master' of https://github.com/celestinechen/fio
[fio.git] / oslib / blkzoned.h
1 /*
2  * Copyright (C) 2020 Western Digital Corporation or its affiliates.
3  *
4  * This file is released under the GPL.
5  */
6 #ifndef FIO_BLKZONED_H
7 #define FIO_BLKZONED_H
8
9 #include "zbd_types.h"
10
11 #ifdef CONFIG_HAS_BLKZONED
12 extern int blkzoned_get_zoned_model(struct thread_data *td,
13                         struct fio_file *f, enum zbd_zoned_model *model);
14 extern int blkzoned_report_zones(struct thread_data *td,
15                                 struct fio_file *f, uint64_t offset,
16                                 struct zbd_zone *zones, unsigned int nr_zones);
17 extern int blkzoned_reset_wp(struct thread_data *td, struct fio_file *f,
18                                 uint64_t offset, uint64_t length);
19 #else
20 /*
21  * Define stubs for systems that do not have zoned block device support.
22  */
23 static inline int blkzoned_get_zoned_model(struct thread_data *td,
24                         struct fio_file *f, enum zbd_zoned_model *model)
25 {
26         /*
27          * If this is a block device file, allow zbd emulation.
28          */
29         if (f->filetype == FIO_TYPE_BLOCK) {
30                 *model = ZBD_NONE;
31                 return 0;
32         }
33
34         return -ENODEV;
35 }
36 static inline int blkzoned_report_zones(struct thread_data *td,
37                                 struct fio_file *f, uint64_t offset,
38                                 struct zbd_zone *zones, unsigned int nr_zones)
39 {
40         return -EIO;
41 }
42 static inline int blkzoned_reset_wp(struct thread_data *td, struct fio_file *f,
43                                     uint64_t offset, uint64_t length)
44 {
45         return -EIO;
46 }
47 #endif
48
49 #endif /* FIO_BLKZONED_H */