forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 072de836f53be56a70cecf70b43ae43b7ce17376
kernel/drivers/block/null_blk.h
....@@ -2,6 +2,9 @@
22 #ifndef __BLK_NULL_BLK_H
33 #define __BLK_NULL_BLK_H
44
5
+#undef pr_fmt
6
+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7
+
58 #include <linux/blkdev.h>
69 #include <linux/slab.h>
710 #include <linux/blk-mq.h>
....@@ -11,15 +14,13 @@
1114 #include <linux/fault-inject.h>
1215
1316 struct nullb_cmd {
14
- struct list_head list;
15
- struct llist_node ll_list;
16
- struct __call_single_data csd;
1717 struct request *rq;
1818 struct bio *bio;
1919 unsigned int tag;
2020 blk_status_t error;
2121 struct nullb_queue *nq;
2222 struct hrtimer timer;
23
+ bool fake_timeout;
2324 };
2425
2526 struct nullb_queue {
....@@ -42,13 +43,22 @@
4243 struct badblocks badblocks;
4344
4445 unsigned int nr_zones;
46
+ unsigned int nr_zones_imp_open;
47
+ unsigned int nr_zones_exp_open;
48
+ unsigned int nr_zones_closed;
4549 struct blk_zone *zones;
4650 sector_t zone_size_sects;
51
+ spinlock_t zone_lock;
52
+ unsigned long *zone_locks;
4753
4854 unsigned long size; /* device size in MB */
4955 unsigned long completion_nsec; /* time in ns to complete a request */
5056 unsigned long cache_size; /* disk cache size in MB */
5157 unsigned long zone_size; /* zone size in MB if device is zoned */
58
+ unsigned long zone_capacity; /* zone capacity in MB if device is zoned */
59
+ unsigned int zone_nr_conv; /* number of conventional zones */
60
+ unsigned int zone_max_open; /* max number of open zones */
61
+ unsigned int zone_max_active; /* max number of active zones */
5262 unsigned int submit_queues; /* number of submission queues */
5363 unsigned int home_node; /* home node for the device */
5464 unsigned int queue_mode; /* block interface */
....@@ -84,28 +94,44 @@
8494 char disk_name[DISK_NAME_LEN];
8595 };
8696
97
+blk_status_t null_process_cmd(struct nullb_cmd *cmd,
98
+ enum req_opf op, sector_t sector,
99
+ unsigned int nr_sectors);
100
+
87101 #ifdef CONFIG_BLK_DEV_ZONED
88
-int null_zone_init(struct nullb_device *dev);
89
-void null_zone_exit(struct nullb_device *dev);
90
-blk_status_t null_zone_report(struct nullb *nullb, struct bio *bio);
91
-void null_zone_write(struct nullb_cmd *cmd, sector_t sector,
92
- unsigned int nr_sectors);
93
-void null_zone_reset(struct nullb_cmd *cmd, sector_t sector);
102
+int null_init_zoned_dev(struct nullb_device *dev, struct request_queue *q);
103
+int null_register_zoned_dev(struct nullb *nullb);
104
+void null_free_zoned_dev(struct nullb_device *dev);
105
+int null_report_zones(struct gendisk *disk, sector_t sector,
106
+ unsigned int nr_zones, report_zones_cb cb, void *data);
107
+blk_status_t null_process_zoned_cmd(struct nullb_cmd *cmd,
108
+ enum req_opf op, sector_t sector,
109
+ sector_t nr_sectors);
110
+size_t null_zone_valid_read_len(struct nullb *nullb,
111
+ sector_t sector, unsigned int len);
94112 #else
95
-static inline int null_zone_init(struct nullb_device *dev)
113
+static inline int null_init_zoned_dev(struct nullb_device *dev,
114
+ struct request_queue *q)
96115 {
116
+ pr_err("CONFIG_BLK_DEV_ZONED not enabled\n");
97117 return -EINVAL;
98118 }
99
-static inline void null_zone_exit(struct nullb_device *dev) {}
100
-static inline blk_status_t null_zone_report(struct nullb *nullb,
101
- struct bio *bio)
119
+static inline int null_register_zoned_dev(struct nullb *nullb)
120
+{
121
+ return -ENODEV;
122
+}
123
+static inline void null_free_zoned_dev(struct nullb_device *dev) {}
124
+static inline blk_status_t null_process_zoned_cmd(struct nullb_cmd *cmd,
125
+ enum req_opf op, sector_t sector, sector_t nr_sectors)
102126 {
103127 return BLK_STS_NOTSUPP;
104128 }
105
-static inline void null_zone_write(struct nullb_cmd *cmd, sector_t sector,
106
- unsigned int nr_sectors)
129
+static inline size_t null_zone_valid_read_len(struct nullb *nullb,
130
+ sector_t sector,
131
+ unsigned int len)
107132 {
133
+ return len;
108134 }
109
-static inline void null_zone_reset(struct nullb_cmd *cmd, sector_t sector) {}
135
+#define null_report_zones NULL
110136 #endif /* CONFIG_BLK_DEV_ZONED */
111137 #endif /* __NULL_BLK_H */