7
7
#include <linux/moduleparam.h>
8
8
#include <linux/sched.h>
9
9
#include <linux/fs.h>
10
- #include <linux/blkdev.h>
11
10
#include <linux/init.h>
12
- #include <linux/slab.h>
13
- #include <linux/blk-mq.h>
14
- #include <linux/hrtimer.h>
15
- #include <linux/configfs.h>
16
- #include <linux/badblocks.h>
17
- #include <linux/fault-inject.h>
11
+ #include "null_blk.h"
18
12
19
13
#define PAGE_SECTORS_SHIFT (PAGE_SHIFT - SECTOR_SHIFT)
20
14
#define PAGE_SECTORS (1 << PAGE_SECTORS_SHIFT)
@@ -35,28 +29,6 @@ static inline u64 mb_per_tick(int mbps)
35
29
return (1 << 20 ) / TICKS_PER_SEC * ((u64 ) mbps );
36
30
}
37
31
38
- struct nullb_cmd {
39
- struct list_head list ;
40
- struct llist_node ll_list ;
41
- struct __call_single_data csd ;
42
- struct request * rq ;
43
- struct bio * bio ;
44
- unsigned int tag ;
45
- blk_status_t error ;
46
- struct nullb_queue * nq ;
47
- struct hrtimer timer ;
48
- };
49
-
50
- struct nullb_queue {
51
- unsigned long * tag_map ;
52
- wait_queue_head_t wait ;
53
- unsigned int queue_depth ;
54
- struct nullb_device * dev ;
55
- unsigned int requeue_selection ;
56
-
57
- struct nullb_cmd * cmds ;
58
- };
59
-
60
32
/*
61
33
* Status flags for nullb_device.
62
34
*
@@ -92,52 +64,6 @@ struct nullb_page {
92
64
#define NULLB_PAGE_LOCK (MAP_SZ - 1)
93
65
#define NULLB_PAGE_FREE (MAP_SZ - 2)
94
66
95
- struct nullb_device {
96
- struct nullb * nullb ;
97
- struct config_item item ;
98
- struct radix_tree_root data ; /* data stored in the disk */
99
- struct radix_tree_root cache ; /* disk cache data */
100
- unsigned long flags ; /* device flags */
101
- unsigned int curr_cache ;
102
- struct badblocks badblocks ;
103
-
104
- unsigned long size ; /* device size in MB */
105
- unsigned long completion_nsec ; /* time in ns to complete a request */
106
- unsigned long cache_size ; /* disk cache size in MB */
107
- unsigned int submit_queues ; /* number of submission queues */
108
- unsigned int home_node ; /* home node for the device */
109
- unsigned int queue_mode ; /* block interface */
110
- unsigned int blocksize ; /* block size */
111
- unsigned int irqmode ; /* IRQ completion handler */
112
- unsigned int hw_queue_depth ; /* queue depth */
113
- unsigned int index ; /* index of the disk, only valid with a disk */
114
- unsigned int mbps ; /* Bandwidth throttle cap (in MB/s) */
115
- bool blocking ; /* blocking blk-mq device */
116
- bool use_per_node_hctx ; /* use per-node allocation for hardware context */
117
- bool power ; /* power on/off the device */
118
- bool memory_backed ; /* if data is stored in memory */
119
- bool discard ; /* if support discard */
120
- };
121
-
122
- struct nullb {
123
- struct nullb_device * dev ;
124
- struct list_head list ;
125
- unsigned int index ;
126
- struct request_queue * q ;
127
- struct gendisk * disk ;
128
- struct blk_mq_tag_set * tag_set ;
129
- struct blk_mq_tag_set __tag_set ;
130
- unsigned int queue_depth ;
131
- atomic_long_t cur_bytes ;
132
- struct hrtimer bw_timer ;
133
- unsigned long cache_flush_pos ;
134
- spinlock_t lock ;
135
-
136
- struct nullb_queue * queues ;
137
- unsigned int nr_queues ;
138
- char disk_name [DISK_NAME_LEN ];
139
- };
140
-
141
67
static LIST_HEAD (nullb_list );
142
68
static struct mutex lock ;
143
69
static int null_major ;
0 commit comments