1 |
Alex, |
2 |
|
3 |
On 03/10/16 19:53, Alex McWhirter wrote: |
4 |
> On 02/19/2016 03:37 AM, Alex McWhirter wrote: |
5 |
>> Git bisect if officially the coolest thing i've seen in a long time. I |
6 |
>> wish i would have known about it earlier... |
7 |
>> |
8 |
>> Anyways... |
9 |
>> |
10 |
>> e5a4b0bb803b39a36478451eae53a880d2663d5b is the first bad commit |
11 |
>> commit e5a4b0bb803b39a36478451eae53a880d2663d5b |
12 |
>> Author: Al Viro <viro@×××××××××××××××.uk> |
13 |
>> Date: Mon Nov 24 18:17:55 2014 -0500 |
14 |
>> |
15 |
>> switch memcpy_to_msg() and skb_copy{,_and_csum}_datagram_msg() to |
16 |
>> primitives |
17 |
>> |
18 |
>> ... making both non-draining. That means that tcp_recvmsg() becomes |
19 |
>> non-draining. And _that_ would break iscsit_do_rx_data() unless we |
20 |
>> a) make sure tcp_recvmsg() is uniformly non-draining (it is) |
21 |
>> b) make sure it copes with arbitrary (including shifted) |
22 |
>> iov_iter (it does, all it uses is iov_iter primitives) |
23 |
>> c) make iscsit_do_rx_data() initialize ->msg_iter only once. |
24 |
>> |
25 |
>> Fortunately, (c) is doable with minimal work and we are rid of one |
26 |
>> the two places where kernel send/recvmsg users would be unhappy with |
27 |
>> non-draining behaviour. |
28 |
>> |
29 |
>> Actually, that makes all but one of ->recvmsg() instances |
30 |
>> iov_iter-clean. |
31 |
>> The exception is skcipher_recvmsg() and it also isn't hard to convert |
32 |
>> to primitives (iov_iter_get_pages() is needed there). That'll wait |
33 |
>> a bit - there's some interplay with ->sendmsg() path for that one. |
34 |
>> |
35 |
>> Signed-off-by: Al Viro <viro@×××××××××××××××.uk> |
36 |
>> |
37 |
>> :040000 040000 b4d6852e73bd3d54a30b72441c8e35f79dc07266 |
38 |
>> f0b90ef68ee891b38decf571247002c1d7fad519 M drivers |
39 |
>> :040000 040000 8ba2fadf14c05a86a7c21448dac52fed661a2e12 |
40 |
>> 0051ec4b6f273dbaed2bed21e4fddd48664d5afa M include |
41 |
>> :040000 040000 d28e72369891521f7d853b30612a32cf65a27f6b |
42 |
>> b828e68082a6fed2cf240aad4b365c5808928122 M net |
43 |
>> |
44 |
>> |
45 |
> Here's a snippet from the kernel list... |
46 |
> |
47 |
>> Ok, so bit more info. This only seems to effect local disk transfers, |
48 |
> not server -> client transfers. I can verify this behaviour on Debian |
49 |
> and Gentoo, as well as on a Sun Fire V215 and Sun Blade 150. |
50 |
>> Steps to reproduce. |
51 |
>> |
52 |
>> rysnc -a rsync://rsync.ca.gentoo.org/gentoo-portage/ ~/portage |
53 |
>> rsync -a ~/portage ~/portage2 |
54 |
>> |
55 |
>> You should see something around these lines occur... |
56 |
>> |
57 |
>> rsync: [sender] write error: Broken pipe (32) |
58 |
>> rsync error: error in socket IO (code 10) at io.c(820) [sender=3.1.1] |
59 |
>> |
60 |
>> |
61 |
>> If you don't want to download the whole portage tree, you can probably |
62 |
> get away with a large subdirectory like x11-libs. |
63 |
>> I.E. |
64 |
>> |
65 |
>> rysnc -a rsync://rsync.ca.gentoo.org/gentoo-portage/x11-libs ~/x11-libs |
66 |
>> rsync -a ~/x11-libs ~/x11-libs2 |
67 |
>> |
68 |
>> As stated earlier, using git bisect to eventually roll back commit |
69 |
> e5a4b0bb803b39a36478451eae53a880d2663d5b will resolve the problem. |
70 |
> |
71 |
> Mike, any ideas of what else i could do to try and pick this apart a bit |
72 |
> more? |
73 |
> |
74 |
Any update on this issue? rsync is still broken on sparc. |
75 |
|
76 |
-- |
77 |
Jack Morgan |
78 |
Pub 4096R/761D8E0A 2010-09-13 Jack Morgan <jmorgan@g.o> |
79 |
Fingerprint = DD42 EA48 D701 D520 C2CD 55BE BF53 C69B 761D 8E0A |