]> git.pld-linux.org Git - packages/lin_tape.git/blob - linux-4.11.patch
- fully fixed building with kernel 4.11
[packages/lin_tape.git] / linux-4.11.patch
1 diff -ur lin_tape-3.0.18/intercept.c lin_tape-3.0.18-4.11/intercept.c
2 --- lin_tape-3.0.18/intercept.c 2017-02-23 19:14:41.000000000 +0100
3 +++ lin_tape-3.0.18-4.11/intercept.c    2017-05-10 00:35:27.637366919 +0200
4 @@ -37,6 +37,9 @@
5  #include <linux/init.h>
6  #include <linux/idr.h>
7  #include <scsi/scsi_driver.h>
8 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
9 +#include <scsi/scsi_transport.h>
10 +#endif
11  
12  #include "scsi.h"
13  #include "pfo.h"
14 @@ -1362,7 +1365,12 @@
15         if (pdev->fdev_num != -1) {
16                 /* Only for fo devices */
17                 /* This 'if' must match the one above in create unique */
18 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
19 +               sdev->request_queue = blk_alloc_queue_node(GFP_KERNEL, NUMA_NO_NODE);
20 +               __scsi_init_queue(sdev->host, sdev->request_queue);
21 +#else
22                 sdev->request_queue = __scsi_alloc_queue(sdev->host, NULL);
23 +#endif
24         }
25  
26         /* set device hierachy so the new dummy dev
27 diff -ur lin_tape-3.0.18/lin_tape_ioctl_tape.c lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c
28 --- lin_tape-3.0.18/lin_tape_ioctl_tape.c       2017-05-10 00:36:01.952285733 +0200
29 +++ lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c  2017-05-09 21:45:14.236233622 +0200
30 @@ -6464,7 +6464,11 @@
31         } /* if */
32  
33         tmp_rq = (void*)sdev->request_queue;
34 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
35 +       scsi_req_init(req);
36 +#else
37         req->cmd_type = REQ_TYPE_BLOCK_PC;
38 +#endif
39  #if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
40         req->cmd_flags |= REQ_QUIET;
41  #else
42 @@ -6536,17 +6540,29 @@
43                 bio = req->bio;
44         } /* if */
45  
46 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
47 +       scsi_req(req)->cmd_len = COMMAND_SIZE(cdb[0]);
48 +       memset(scsi_req(req)->cmd, '\0', MAX_CDB_SIZE);
49 +       memcpy(scsi_req(req)->cmd, cdb, scsi_req(req)->cmd_len);
50 +       scsi_req(req)->sense = sense_data;
51 +       scsi_req(req)->sense_len = 0;
52 +#else
53         req->cmd_len = COMMAND_SIZE(cdb[0]);
54         memset(req->cmd, '\0', MAX_CDB_SIZE);
55         memcpy(req->cmd, cdb, req->cmd_len);
56         req->sense = sense_data;
57         req->sense_len = 0;
58 +#endif
59         req->timeout = timeout;
60         req->retries = 0;
61  
62         blk_execute_rq(req->q, NULL, req, 1);
63  
64 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
65 +       *resid = scsi_req(req)->resid_len;
66 +#else
67         *resid = req->resid_len;
68 +#endif
69         status_code = req->errors;
70  
71         if(buf_len && !use_sg) {
72 diff -ur lin_tape-3.0.18/lin_tape_ioctl_tape.c.orig lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c.orig
73 --- lin_tape-3.0.18/lin_tape_ioctl_tape.c.orig  2017-02-23 19:14:41.000000000 +0100
74 +++ lin_tape-3.0.18-4.11/lin_tape_ioctl_tape.c.orig     2017-05-09 21:45:14.232900215 +0200
75 @@ -6465,7 +6465,11 @@
76  
77         tmp_rq = (void*)sdev->request_queue;
78         req->cmd_type = REQ_TYPE_BLOCK_PC;
79 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
80         req->cmd_flags |= REQ_QUIET;
81 +#else
82 +       req->cmd_flags |= RQF_QUIET;
83 +#endif
84  
85         if(buf_len) {
86                 mdata = kmalloc(sizeof(struct rq_map_data), GFP_KERNEL);
87 diff -ur lin_tape-3.0.18/lin_tape_tape.h lin_tape-3.0.18-4.11/lin_tape_tape.h
88 --- lin_tape-3.0.18/lin_tape_tape.h     2017-02-23 19:14:41.000000000 +0100
89 +++ lin_tape-3.0.18-4.11/lin_tape_tape.h        2017-05-09 21:45:14.236233622 +0200
90 @@ -85,7 +85,11 @@
91  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9)
92  #define KOBJ_CT(kobj) ((kobj) ? atomic_read(&(kobj)->refcount) : 0)
93  #else
94 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0)
95  #define KOBJ_CT(kobj) ((kobj) ? atomic_read(&(kobj)->kref.refcount) : 0)
96 +#else
97 +#define KOBJ_CT(kobj) ((kobj) ? kref_read(&(kobj)->kref) : 0)
98 +#endif
99  #endif
100  
101  /* global definitions */
102 diff -ur lin_tape-3.0.18/lower.c lin_tape-3.0.18-4.11/lower.c
103 --- lin_tape-3.0.18/lower.c     2017-02-23 19:14:41.000000000 +0100
104 +++ lin_tape-3.0.18-4.11/lower.c        2017-05-10 00:21:19.106042388 +0200
105 @@ -69,7 +69,11 @@
106  /* Local function prototypes */
107  static int lower_scsi_execute(struct scsi_device *sdev,
108                                 struct apfo_scsi_command *pfo_cmd,
109 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
110 +                               unsigned char *local_raw_sense, struct scsi_sense_hdr *sshdr);
111 +#else
112                                 unsigned char *local_raw_sense);
113 +#endif
114  
115  /** Look at the errors from the SCSI command,
116   * translate them to OS independent values.
117 @@ -267,11 +271,20 @@
118                 /* SCSI Command from decide code */
119                 result = scsi_execute(sdev, pfo_cmd->scsi_cmd,
120                         pfo_cmd->data_direction, pfo_cmd->buffer,
121 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0)
122                         pfo_cmd->bufflen, local_raw_sense, pfo_cmd->timeout,
123                         pfo_cmd->retries, pfo_cmd->flags, &pfo_cmd->resid_len);
124 +#else
125 +                       pfo_cmd->bufflen, local_raw_sense, &local_sense_data, pfo_cmd->timeout,
126 +                       pfo_cmd->retries, pfo_cmd->flags, 0, &pfo_cmd->resid_len);
127 +#endif
128         } else {
129                 /* SCSI Command from user space */
130 +#if LINUX_VERSION_CODE < KERNEL_VERSION(4,11,0)
131                 result = lower_scsi_execute(sdev, pfo_cmd, local_raw_sense);
132 +#else
133 +               result = lower_scsi_execute(sdev, pfo_cmd, local_raw_sense, &local_sense_data);
134 +#endif
135         }
136         /* Release this path */
137         scsi_device_put(sdev);
138 @@ -440,7 +453,11 @@
139   */
140  static int lower_scsi_execute(struct scsi_device *sdev,
141                                 struct apfo_scsi_command *pfo_cmd,
142 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
143 +                               unsigned char *local_raw_sense, struct scsi_sense_hdr *sshdr) {
144 +#else
145                                 unsigned char *local_raw_sense) {
146 +#endif
147  
148         int err = 0;
149         struct request *rq;
150 @@ -452,7 +469,11 @@
151                 return DRIVER_ERROR << 24;
152         }
153  
154 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
155 +       scsi_req_init(rq);
156 +#else
157         rq->cmd_type = REQ_TYPE_BLOCK_PC;
158 +#endif
159         rq->cmd_flags |= pfo_cmd->flags;
160  
161         if ((pfo_cmd->bufflen > 0) && (pfo_cmd->data_direction != DMA_NONE)) {
162 @@ -533,11 +554,19 @@
163                 }
164         }
165  
166 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
167 +       scsi_req(rq)->cmd_len = pfo_cmd->cmd_len;
168 +       memset(scsi_req(rq)->cmd, 0, BLK_MAX_CDB);
169 +       memcpy(scsi_req(rq)->cmd, pfo_cmd->scsi_cmd, pfo_cmd->cmd_len);
170 +       scsi_req(rq)->sense = local_raw_sense;
171 +       scsi_req(rq)->sense_len = 0;
172 +#else
173         rq->cmd_len = pfo_cmd->cmd_len;
174         memset(rq->cmd, 0, BLK_MAX_CDB);
175         memcpy(rq->cmd, pfo_cmd->scsi_cmd, pfo_cmd->cmd_len);
176         rq->sense = local_raw_sense;
177         rq->sense_len = 0;
178 +#endif
179         rq->timeout = pfo_cmd->timeout;
180         rq->retries = pfo_cmd->retries;
181         rq->end_io_data = pfo_cmd;
182 @@ -551,8 +580,15 @@
183                         DBG_ERROR("unmap returns: %d\n", err);
184                 }
185         }
186 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
187 +       pfo_cmd->resid_len = scsi_req(rq)->resid_len;
188 +       pfo_cmd->sense_len = scsi_req(rq)->sense_len;
189 +       if (sshdr)
190 +               scsi_normalize_sense(scsi_req(rq)->sense, scsi_req(rq)->sense_len, sshdr);
191 +#else
192         pfo_cmd->resid_len = rq->resid_len;
193         pfo_cmd->sense_len = rq->sense_len;
194 +#endif
195         pfo_cmd->errors = rq->errors;
196  
197         blk_put_request(rq);
198 diff -ur lin_tape-3.0.18/stmp.c lin_tape-3.0.18-4.11/stmp.c
199 --- lin_tape-3.0.18/stmp.c      2017-05-10 00:36:01.955619894 +0200
200 +++ lin_tape-3.0.18-4.11/stmp.c 2017-05-09 21:45:14.236233622 +0200
201 @@ -611,7 +611,11 @@
202         if (!req)
203                 return DRIVER_ERROR << 24;
204  
205 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,11,0)
206 +       scsi_req_init(req);
207 +#else
208         req->cmd_type = REQ_TYPE_BLOCK_PC;
209 +#endif
210  #if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0)
211         req->cmd_flags |= REQ_QUIET;
212  #else
This page took 0.063909 seconds and 3 git commands to generate.