Myson: USB/IDE Bridge (04cf:8818)

IDE HDD を USB2.0 につなげるケースで

0x04cf Myson Century, Inc.
0x8818 USB2.0 to ATAPI Bridge Controller

という10年以上前に購った古いものを使って Ext3 ファイルシステムをマウントすると、

end_request: critical target error, dev sdb, sector 30781645
Buffer I/O error on device sdb2, logical block 918018
lost page write due to I/O error on sdb2
Aborting journal on device sdb2.
EXT3-fs (sdb2): error: ext3_put_super: Couldn't clean up the journal
EXT3-fs (sdb2): error: remounting filesystem read-only
end_request: critical target error, dev sdb, sector 0
JBD: recovery failed
EXT3-fs (sdb2): error loading journal

などといってジャーナルが壊れてしまうように見える。 これはカーネル 3.14.16 を使うようになってから発生する現象で、 3.8 のときは問題なくマウントできていた。 また VFAT ファイルシステムならば 3.14.16 以降でもこのような不具合は無い。

別のメイカーの別の型のケースをつかうとこの問題は発生しないので、 HDD の寿命とかの不具合ではないことはわかったが、 それならとうとうこのブリッジコントローラが成仏したかと思うと、 そうでもなく、やはり SCSI コマンドチェックの厳格化がきっかけなのである。

これは usb-storage モジュールの quirks パラメータを適切に設定すれば解決する問題で、 古い USB2.0/ATAPI ブリッジはライトプロテクトのチェックを省略しなければならないのであった。 つまり

modprobe usb-storage quirks=0x04cf:0x8818:w

とやってモジュールをロードするか、あるいは modprobe.conf などに

options usb-storage quirks=0x04cf:0x8818:w

と書いておくのである。 そうすれば Ext3 ファイルシステムをマウントしようとする際に上のエラーは発生せず、従前どおり使用できる。

2014年8月の SCSI lib の変更