]> git.pld-linux.org Git - packages/lin_tape.git/blob - linux-4.0.patch
6ea101d5d40835e2a85295c15a0b7b53cae53d40
[packages/lin_tape.git] / linux-4.0.patch
1 diff -ur lin_tape-3.0.8.orig/lower.c lin_tape-3.0.8/lower.c
2 --- lin_tape-3.0.8.orig/lower.c 2016-03-15 23:39:12.000000000 +0100
3 +++ lin_tape-3.0.8/lower.c      2016-06-19 13:16:12.828653141 +0200
4 @@ -471,6 +471,21 @@
5                 } else if (pfo_cmd->source == PFO_SOURCE_SG ||
6                            pfo_cmd->source == PFO_SOURCE_IOCTL) {
7                         if (pfo_cmd->iov_count) {
8 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
9 +                               struct iovec *iov = NULL;
10 +                               struct iov_iter i;
11 +                               err = import_iovec(write, pfo_cmd->buffer, pfo_cmd->iov_count, 0, &iov, &i);
12 +                               if (err < 0)
13 +                                       return err;
14 +                               iov_iter_truncate(&i, pfo_cmd->bufflen);
15 +                               
16 +                               err = blk_rq_map_user_iov(sdev->request_queue,
17 +                                       rq,
18 +                                       pfo_cmd->mdata,
19 +                                       &i,
20 +                                       GFP_ATOMIC);
21 +                               kfree(iov);
22 +#else
23                                 err = blk_rq_map_user_iov(sdev->request_queue,
24                                         rq,
25                                         pfo_cmd->mdata,
26 @@ -478,6 +493,7 @@
27                                         pfo_cmd->iov_count,
28                                         pfo_cmd->bufflen,
29                                         GFP_KERNEL);
30 +#endif
31                         } else {
32                                 err = blk_rq_map_user(sdev->request_queue,
33                                         rq,
34 diff -ur lin_tape-3.0.8.orig/sgmp.c lin_tape-3.0.8/sgmp.c
35 --- lin_tape-3.0.8.orig/sgmp.c  2016-06-19 13:15:52.000000000 +0200
36 +++ lin_tape-3.0.8/sgmp.c       2016-06-19 13:16:12.828653141 +0200
37 @@ -77,6 +77,7 @@
38  #else
39  #include <linux/smp_lock.h>
40  #endif
41 +#include <linux/uio.h>
42  
43  #include "scsi.h"
44  #include <scsi/scsi_dbg.h>
45 @@ -2029,7 +2029,12 @@
46         }
47  
48         if (iov_count) {
49 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
50 +               int size = sizeof(struct iovec) * iov_count;
51 +               struct iov_iter i;
52 +#else
53                 int len, size = sizeof(struct sg_iovec) * iov_count;
54 +#endif
55                 struct iovec *iov;
56  #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)
57                 iov = memdup_user(hp->dxferp, size);
58 @@ -2046,6 +2051,13 @@
59                 }
60  #endif
61  
62 +#if LINUX_VERSION_CODE > KERNEL_VERSION(3,19,0)
63 +               iov_iter_init(&i, rw, iov, iov_count,
64 +                             min_t(size_t, hp->dxfer_len,
65 +                                   iov_length(iov, iov_count)));
66 +
67 +               res = blk_rq_map_user_iov(q, rq, md, &i, GFP_ATOMIC);
68 +#else
69                 len = iov_length(iov, iov_count);
70                 if (hp->dxfer_len < len) {
71                         iov_count = iov_shorten(iov, iov_count, hp->dxfer_len);
72 @@ -2055,6 +2067,7 @@
73                 res = blk_rq_map_user_iov(q, rq, md, (struct sg_iovec *)iov,
74                                           iov_count,
75                                           len, GFP_ATOMIC);
76 +#endif
77                 kfree(iov);
78         } else
79                 res = blk_rq_map_user(q, rq, md, hp->dxferp,
This page took 0.052745 seconds and 2 git commands to generate.