xsegbd/xsegdev: Fix xsegbd/xsegdev memory leak
[archipelago] / xseg / sys / xsegbd.h
1 #ifndef _XSEGBD_REAR
2 #define _XSEGBD_REAR
3
4 #define XSEGBD_NAME "xsegbd"
5
6 #define XSEGLOG_PREFIX KERN_INFO XSEGBD_NAME ": "
7 #define XSEGLOG(message, args...) printk(XSEGLOG_PREFIX message "\n", ##args)
8
9 #define XSEGBD_SEGMENT_NAMELEN 32
10 #define XSEGBD_TARGET_NAMELEN 127
11
12 #include <linux/kernel.h>
13 #include <linux/types.h>
14 #include <xseg/xseg.h>
15 #include <xq/xq.h>
16
17 struct xsegbd {
18         char name[XSEGBD_SEGMENT_NAMELEN];
19         uint32_t namesize;
20         struct xseg_config config;
21         struct xseg *xseg;
22 };
23
24 struct xsegbd_device {
25         spinlock_t lock;
26         struct request_queue *blk_queue;
27         struct gendisk *gd;
28         int id;
29         int major;
30         sector_t sectors;
31         uint64_t segsize;
32         uint32_t src_portno, dst_portno, nr_requests;
33         struct xq blk_queue_pending;
34         struct xsegbd *xsegbd;
35         char *_blk_queue_mem;
36         struct request **blk_req_pending;
37         struct device dev;
38         struct list_head node;
39         char name[XSEGBD_TARGET_NAMELEN + 1];
40         uint32_t namesize;
41 };
42
43 #endif