[Armadillo:01992] Re: USBデバイスアクセス中の抜き差し対応に関して

Hiroaki Kinpara email@hidden
2007年 9月 4日 (火) 15:55:37 JST


金原です。
いつもお世話になっております。

お手数をおかけして申し訳ありません。
ボードおよびカーネルのバージョンは以下になります。

・ボード  …  Armadillo220
・カーネル …  Linux 2.6.12.3-a9-8
・コンフィギュレーション … Armadillo-220.Recover


また、確認を行った際のサンプルコードは以下になります。

int main(int argc, char** argv)
{
    int    fd;
    int     i;

    char    dev_namelist[10][11]=
    {
        "/dev/sda",
        "/dev/sdb",
        "/dev/sdc",
        "/dev/sdd",
        "/dev/sde",
        "/dev/sdf",
        "/dev/sdg",
        "/dev/sdh",
        "/dev/sdi",
        "/dev/sdj"
    };

    while(1){
        for(i = 0;i < 10; i++){
            fd = open(dev_namelist[i], O_ACCMODE | O_NONBLOCK);
            if( 0 < fd ){
                printf("Open  %s\n", dev_namelist[i]);
                close(fd);
                printf("Close %s\n", dev_namelist[i]);
            }
        }	
        usleep(100000);
    }
    return 0;
}

このサンプルコードにて確認を行いました。
また、症状発生後にpsコマンドにて確認を行ったところ、scsi_eh_2とscsi_eh_3の
二つが残っているという状況になっております。

以上、よろしくお願いいたします。

| Hiroaki Kinpara さんは書きました:
| > 現在、USBマスストレージデバイスを使用したアプリを作成しておりますが
| > USBデバイスへのアクセス中に、デバイスが抜かれた際の対応ができず困って
| > おります。
| > 
| > 原因追求のため、調査を行ったところ、デバイスのopen(/dev/sdaなど)中に
| > 引き抜かれた際にプログラムがフリーズしているようです。
| > また、フリーズ後にプロセス状態を確認したところ[scsi_eh_*]が殺されずに
| > 残っていたため、このカーネルスレッドから応答が返らないまま停止していると
| > 思われます。
| 
| どのボードとカーネルの組み合わせですか?
| 再現できずに困っています。サンプルコードはありますか?
| -- 
|             yashi
| _______________________________________________
| armadillo mailing list
| email@hidden
| http://lists.atmark-techno.com/mailman/listinfo/armadillo
| 



armadillo メーリングリストの案内