FC2ブログ

PCで: LinuxでUSB3.0で外付けHDD使ったら切れる件(2)

 切れるって、disconnectってことですけど。
 先日のこの話
の続きです。
[追記: 2015-05-25]
 下にやっぱ駄目だったと書きましたが、先日3.18カーネルに変えてみたら、全然問題なくずーっと動いています。何だか、今度こそ大丈夫っぽい?
 ただ、以前述べた"hw csum failure"のスタックダンプは相変わらず。実は、3.18.14でそれっぽい改修(commit dc7071483edd513abad3751b57a1dd832ca31156)があったので試してみたのですが。
 まあ、syslogにゴミが残るだけで動作に支障ないし、このまま使っちゃおうかな。
 一応、net/ipv6/ndp.cのudpv6_recvmsg()(多分v4でも同じところ)が怪しいかなと思ってるんですが。skbの変更と足並みが揃ってないっぽいかな、と。
[追記終わり]
[追記: 2015-05-09]
 結論から言うと、下記の改修は改善につながりませんでした。本日14時頃切れました。まあ、なんとなーくですがさほど関係ありそうに見えませんでしたし。
 うーん、もうこりゃ諦めるしかないですかね。あまり細かいところまで追求する人的リソースもないし。
[追記終わり]

 簡単に説明すると、LinuxのPCにつないだUSB3.0の外付けHDDがいきなりdisconnect状態になるという話。まるで線を引っこ抜いたみたいに。
 で、上記のエントリに書いたような対応でうまくいった、ように見えたのですが、実はそれで数時間使うとたまに、そっくりの現象が起きてました。ただ、前みたいに確実に起きるわけでもなく、ちょっと困っていました。

 そんな折、カーネルのアップデートにこんなのがありました。私の使っている3.14なら、3.14.41です。

commit 0f5d9d156ac5e57472c390e68b48c4e0d18aecb5
Author: Felipe Balbi
Date: Fri Feb 13 14:34:25 2015 -0600

usb: define a generic USB_RESUME_TIMEOUT macro

commit 62f0342de1f012f3e90607d39e20fce811391169 upstream.
(snip)
b) some (many) devices actually need more than
20ms resume signalling.

Sure, in case of (b) we can state that the device
is against the USB spec, but the fact is that
we have no control over which device the certification
lab will use. (snip)

 で、実際のパッチは、USB_RESUME_TIMEOUTを定義(40)した上で、あちこちをこんな風に直しています。
-               msleep(25);
+ msleep(USB_RESUME_TIMEOUT);

 ……ふーむ。
 いやこの問題でどんな状況が発生して改修でどんな風にうまくいくのかよくわからないんですけど、何となく関係ありそうな気がしないでもないような感じがします。

 というわけで試しているんですが、さてどうなるでしょうね。実際のところ、先日の対応以後に発生している現象はそう簡単に再現しないし、出なくなったという確認も難しいので何とも。
 ただ、現時点で既にそれなりの時間動いているし、しばらく休ませてからアクセス、という何となく再現し易そうな使い方をしても問題ないので、もしかするともしかするかも知れません。

 果たして?

コメント

非公開コメント

プロフィール

水響俊二

Author:水響俊二
水響 俊二 [MIZUKI Shunji]

暫定的に、18禁作品の感想などは裏サイトで書いています。
 

最新記事
勝手広告その2
最新コメント
カテゴリ
検索フォーム
リンク
RSSリンクの表示
月別アーカイブ
アクセス解析中