3b891d65b0
(ppp.8 will be updated later)
775 lines
23 KiB
Groff
775 lines
23 KiB
Groff
.\"
|
|
.\" Copyright (c) 1998, 1999, 2000 Kenneth D. Merry.
|
|
.\" All rights reserved.
|
|
.\"
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
.\" modification, are permitted provided that the following conditions
|
|
.\" are met:
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
.\" 3. The name of the author may not be used to endorse or promote products
|
|
.\" derived from this software without specific prior written permission.
|
|
.\"
|
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
.\" SUCH DAMAGE.
|
|
.\"
|
|
.\" %FreeBSD: src/sbin/camcontrol/camcontrol.8,v 1.19.2.6 2000/12/18 15:38:18 ru Exp %
|
|
.\"
|
|
.\" jpman %Id: camcontrol.8,v 1.4 1998/12/22 02:35:45 oku Stab %
|
|
.\" WORD: defect list ディフェクトリスト[camcontrol.8]
|
|
.\" WORD: tagged queing タグ付きキューイング
|
|
.\"
|
|
.Dd September 14, 1998
|
|
.Dt CAMCONTROL 8
|
|
.Os
|
|
.Sh 名称
|
|
.Nm camcontrol
|
|
.Nd CAM コントロールプログラム
|
|
.Sh 書式
|
|
.Nm
|
|
.Aq command
|
|
.Op device id
|
|
.Op generic args
|
|
.Op command args
|
|
.Nm
|
|
.Ic devlist
|
|
.Op Fl v
|
|
.Nm
|
|
.Ic periphlist
|
|
.Op device id
|
|
.Op Fl n Ar dev_name
|
|
.Op Fl u Ar unit_number
|
|
.Nm
|
|
.Ic tur
|
|
.Op device id
|
|
.Op generic args
|
|
.Nm
|
|
.Ic inquiry
|
|
.Op device id
|
|
.Op generic args
|
|
.Op Fl D
|
|
.Op Fl S
|
|
.Op Fl R
|
|
.Nm
|
|
.Ic start
|
|
.Op device id
|
|
.Op generic args
|
|
.Nm
|
|
.Ic stop
|
|
.Op device id
|
|
.Op generic args
|
|
.Nm
|
|
.Ic eject
|
|
.Op device id
|
|
.Op generic args
|
|
.Nm
|
|
.Ic rescan
|
|
.Aq bus Ns Op :target:lun
|
|
.Nm
|
|
.Ic reset
|
|
.Aq bus Ns Op :target:lun
|
|
.Nm
|
|
.Ic defects
|
|
.Op device id
|
|
.Op generic args
|
|
.Aq Fl f Ar format
|
|
.Op Fl P
|
|
.Op Fl G
|
|
.Nm
|
|
.Ic modepage
|
|
.Op device id
|
|
.Op generic args
|
|
.Aq Fl m Ar page
|
|
.Op Fl P Ar pgctl
|
|
.Op Fl e
|
|
.Op Fl d
|
|
.Nm
|
|
.Ic cmd
|
|
.Op device id
|
|
.Op generic args
|
|
.Aq Fl c Ar cmd Op args
|
|
.Op Fl i Ar len Ar fmt
|
|
.Bk -words
|
|
.Op Fl o Ar len Ar fmt Op args
|
|
.Ek
|
|
.Nm
|
|
.Ic debug
|
|
.Op Fl I
|
|
.Op Fl T
|
|
.Op Fl S
|
|
.Op Fl c
|
|
.Aq all|off|bus Ns Op :target Ns Op :lun
|
|
.Nm
|
|
.Ic tags
|
|
.Op device id
|
|
.Op generic args
|
|
.Op Fl N Ar tags
|
|
.Op Fl q
|
|
.Op Fl v
|
|
.Nm
|
|
.Ic negotiate
|
|
.Op device id
|
|
.Op generic args
|
|
.Op Fl c
|
|
.Op Fl D Ar enable|disable
|
|
.Op Fl O Ar offset
|
|
.Op Fl q
|
|
.Op Fl R Ar syncrate
|
|
.Op Fl T Ar enable|disable
|
|
.Op Fl U
|
|
.Op Fl W Ar bus_width
|
|
.Op Fl v
|
|
.Nm
|
|
.Ic format
|
|
.Op device id
|
|
.Op generic args
|
|
.Op Fl q
|
|
.Op Fl w
|
|
.Op Fl y
|
|
.Nm
|
|
.Ic help
|
|
.Sh 解説
|
|
.Nm
|
|
は、ユーザが
|
|
.Fx
|
|
CAM サブシステムにアクセスし制御できるようにする方法を提供する
|
|
ために設計されたユーティリティです。
|
|
.Pp
|
|
.Nm
|
|
を不適切に使用すると、
|
|
データの損失や、システムクラッシュにつながる可能性があります。経験
|
|
豊富なユーザであっても、このコマンドを使用する際には注意を払うことを
|
|
お勧めします。素人さんはこのユーティリティに近付いてはいけません。
|
|
.Pp
|
|
.Nm
|
|
はいくつかの主機能を持っています。
|
|
その多くは、省略可能なデバイス識別子をサポートします。
|
|
デバイス識別子は、次の 3 種類の書式のいずれかを取り得ます:
|
|
.Bl -tag -width 14n
|
|
.It deviceUNIT
|
|
デバイス名とデバイス番号の組み合わせを、"da5" や "cd3" のように指定します。
|
|
キャラクタデバイスノード名 (例えば /dev/rsd0.ctl) は、ここでは許され
|
|
.Em ない
|
|
ことに注意してください。
|
|
.It bus:target
|
|
バス番号とターゲット id を指定します。
|
|
バス番号は
|
|
.Dq camcontrol devlist
|
|
の出力により決定可能です。
|
|
論理ユニット番号 (lun) はデフォルトの 0 になります。
|
|
.It bus:target:lun
|
|
デバイスのバス (bus) とターゲット (target) と論理ユニット番号 (lun) を、
|
|
(例えば 1:2:0 のように) 指定します。
|
|
.El
|
|
.Pp
|
|
デバイス識別子は、指定された場合には、
|
|
機能名の直後にかつ、すべての共通引数または機能固有引数の前に置かれることが
|
|
.Em 必要
|
|
です。
|
|
後述する
|
|
.Fl n
|
|
と
|
|
.Fl u
|
|
の引数は、その前に指定されるデバイス名やユニット番号をオーバライドすることに
|
|
注意してください。しかし、
|
|
.Fl n
|
|
と
|
|
.Fl u
|
|
の引数は、bus:target または bus:target:lun の指定はオーバライドしません。
|
|
.Pp
|
|
.Nm
|
|
の主機能の多くは下に示す共通引数 (generic argument) をサポートします:
|
|
.Bl -tag -width 14n
|
|
.It Fl C Ar count
|
|
SCSI コマンドのリトライカウント。この機能が動作するためには、エラーリカバリ
|
|
.Pq Fl E
|
|
をオンにしておく必要があります。
|
|
.It Fl E
|
|
指定したコマンドのための汎用の SCSI エラーリカバリを遂行
|
|
するよう、カーネルに指示を出します。リトライカウント機能
|
|
.Pq Fl C
|
|
を有効にするためにはこれが必要です。
|
|
コマンドのリトライの他に、コード中にある汎用のエラーリカバリによって、
|
|
回っていない HDD を回転させるような試みが通常なされます。コマンドから
|
|
返されたセンスコードによっては、他の操作が行なわれることもあります。
|
|
.It Fl n Ar dev_name
|
|
操作を行なうデバイスのタイプを指定します。これは例えば "da", "ca" です。
|
|
.It Fl t Ar timeout
|
|
SCSI コマンドのタイムアウトを秒単位で指定します。指定したコマンドのすべてに
|
|
おいて、これで指定する値はデフォルトのタイムアウトより優先されます。
|
|
.It Fl u Ar unit_number
|
|
デバイスユニット番号を指定します。デフォルトは 0 です。
|
|
.It Fl v
|
|
冗舌になります。SCSI コマンドに失敗するとセンス情報を表示します。
|
|
.El
|
|
.Pp
|
|
主コマンド機能は次のとおりです。
|
|
.Bl -tag -width periphlist
|
|
.It Ic devlist
|
|
CAM サブシステムに接続されたすべての物理デバイス (論理ユニット) の
|
|
リストを表示します。このリストには各デバイスに接続された周辺ドライバの
|
|
一覧も含まれます。
|
|
引数
|
|
.Fl v
|
|
を指定すると、SCSI バス番号、アダプタ名、ユニット番号もあわせて
|
|
表示されます。
|
|
.It Ic periphlist
|
|
指定した物理デバイス (論理ユニット) に接続されたすべての周辺ドライバの
|
|
リストを表示します。
|
|
.It Ic tur
|
|
指定したデバイスに SCSI test unit ready (0x00) コマンドを送信します。
|
|
.Nm
|
|
は、そのデバイスがレディ状態であるかどうかを報告します。
|
|
.It Ic inquiry
|
|
デバイスに SCSI inquiry (0x12) コマンドを送信します。デフォルトでは、
|
|
.Nm
|
|
標準の inquiry データ、デバイスのシリアル番号、転送レート情報を表示します。
|
|
特定のタイプの inquiry データだけを表示するように指定することもできます。
|
|
.Bl -tag -width 4n
|
|
.It Fl D
|
|
標準 inquiry データを得ます。
|
|
.It Fl S
|
|
シリアル番号を表示します。このフラグだけが指定された場合、
|
|
.Nm
|
|
は、ドライブが返す値の前に "Serial Number" を表示しません。これは
|
|
スクリプトを書く際に役立ちます。
|
|
.It Fl R
|
|
転送レートの情報を表示します。
|
|
.El
|
|
.It Ic start
|
|
指定したデバイスに、start ビットをセットした SCSI Start/Stop Unit
|
|
(0x1B) コマンドを送信します。
|
|
.It Ic stop
|
|
指定したデバイスに、start ビットをクリアした SCSI Start/Stop Unit
|
|
(0x1B) コマンドを送信します。
|
|
.It Ic eject
|
|
指定したデバイスに、start ビットをクリアし eject ビットをセットした
|
|
SCSI Start/Stop Unit (0x1B) コマンドを送信します。
|
|
.It Ic rescan
|
|
カーネルに指定したバス (XPT_SCAN_BUS)、もしくは bus:target:lun
|
|
(XPT_SCAN_LUN) をスキャンさせ、新規のデバイスや外されたデバイスを
|
|
探させます。ユーザが指定できるのは、スキャンするバスもしくは
|
|
論理ユニット番号だけです。あるターゲットのすべての論理ユニット番号を
|
|
スキャンすることはサポートされていません。
|
|
.It Ic reset
|
|
指定したバス (XPT_RESET_BUS) または指定した bus:target:lun (XPT_RESET_DEV) を、
|
|
カーネルにリセットさせます。
|
|
前者は、バスに SCSI バスリセットを発行することにより行います。
|
|
後者は、典型的には当該デバイスにコネクトした後に、
|
|
BUS DEVICE RESET メッセージを発行することにより行います。
|
|
本コマンドはシステムに破壊的な影響を与えることがあることに注意してください。
|
|
.It Ic defects
|
|
指定したデバイスに、SCSI READ DEFECT DATA (10) コマンド (0x37) を送信し、
|
|
ディフェクト総数、初期ディフェクトリスト (PLIST)、増分ディフェクトリスト
|
|
(GLIST) を組み合わせて表示します。
|
|
.Bl -tag -width 11n
|
|
.It Fl f Ar format
|
|
書式オプションは以下の 3 つです。
|
|
.Em block ,
|
|
リストを論理ブロック形式で表示します。
|
|
.Em bfi ,
|
|
リストをインデックスからのバイト数の形式で表示します。
|
|
.Em phys ,
|
|
リストを物理セクタ形式で表示します。書式引数は必須です。ほとんどのドライブ
|
|
は、物理セクタ形式をサポートしています。一部のドライブは論理ブロック形式を
|
|
サポートしています。指定した書式をサポートしていない場合、多くのドライブは、
|
|
指定したデータ書式をサポートしていないことを示すセンス情報とともに、
|
|
別の書式でデータを返します。
|
|
.Nm
|
|
は、それを検知して
|
|
ドライブが返す書式ならどのようなものでも表示しようとします。ドライブが
|
|
指定した書式をサポートしていないことを報告する際に、非標準のセンスコードを
|
|
用いた場合、
|
|
.Nm
|
|
は、おそらくそのエラーをリクエスト完了に失敗したためのものと見なすでしょう。
|
|
.It Fl G
|
|
増分ディフェクトリストを表示します。これは、工場出荷時以降に再マップ
|
|
された不良ブロックのリストです。
|
|
.It Fl P
|
|
初期ディフェクトリストを表示します。
|
|
.El
|
|
.Pp
|
|
.Fl P
|
|
も
|
|
.Fl G
|
|
もどちらも指定していない場合、
|
|
.Nm
|
|
は、ドライブから返された READ DEFECT DATA ヘッダから得られるディフェクト数を
|
|
表示します。
|
|
.It Ic modepage
|
|
SCSI モードページを表示します。もしくは、オプション指定により
|
|
ユーザがモードページを編集できるようにします。
|
|
.Ic modepage
|
|
の書式は
|
|
.Pa /usr/share/misc/scsi_modes
|
|
にあります。
|
|
環境変数
|
|
.Ev SCSI_MODES
|
|
に別のファイルが指定されている場合はそちらが優先されます。
|
|
modepage コマンドは以下のようないくつかの引数を取ります。
|
|
.Bl -tag -width 12n
|
|
.It Fl d
|
|
モードセンスのためのブロック記述子を禁止します。
|
|
.It Fl e
|
|
このフラグを指定することで、ユーザはモードページ中の値を編集することが
|
|
できます。
|
|
.It Fl m Ar mode_page
|
|
ユーザが表示/編集したいモードページ番号を指定します。この引数は必須です。
|
|
.It Fl P Ar pgctl
|
|
このフラグを指定することで、ユーザはページ制御フィールドを指定することが
|
|
できます。指定可能な値は次の通りです。
|
|
.Bl -tag -width xxx -compact
|
|
.It 0
|
|
現在の値
|
|
.It 1
|
|
変更可能な値
|
|
.It 2
|
|
デフォルトの値
|
|
.It 3
|
|
保存された値
|
|
.El
|
|
.El
|
|
.It Ic cmd
|
|
任意のデバイスに任意の SCSI CDB を送信するために用いることができます。
|
|
.Ic cmd
|
|
機能は、CDB を指定するための
|
|
.Fl c
|
|
引数が必要です。他の引数はオプションで、コマンドの型に依存します。コマンドと
|
|
データを指定する文法は、
|
|
.Xr cam_cdbparse 3 .
|
|
に記述されています。
|
|
注: 指定した CDB によって、対象の SCSI デバイスとのデータ送受信が
|
|
発生する場合、
|
|
.Fl i
|
|
または
|
|
.Fl o
|
|
を指定する必要があります。
|
|
.Bl -tag -width 17n
|
|
.It Fl c Ar cmd Op args
|
|
これは SCSI CDB を指定します。CDB は 6, 10, 12, 16 バイトのいずれか
|
|
が可能です。
|
|
.It Fl i Ar len Ar fmt
|
|
これは、読み込むデータの量と、どのように表示するかとを指定します。書式が
|
|
.Sq -
|
|
である場合、
|
|
.Ar len
|
|
バイトのデータがデバイスから読み込まれ、標準出力に書き出されます。
|
|
.It Fl o Ar len Ar fmt Op args
|
|
これは、デバイスに書き出すデータの量と、書き出されるデータとを指定します。
|
|
書式が
|
|
.Sq -
|
|
である場合、
|
|
.Ar len
|
|
バイトのデータが標準入力から読み込まれデバイスに書き出されます。
|
|
.El
|
|
.It Ic debug
|
|
カーネルの CAM デバッグ用 printf をオンにします。カーネルの設定
|
|
ファイル中に CAMDEBUG オプションが指定されている必要があります。
|
|
注意: 現在のところ、デバッグ
|
|
用 printf を使えるようにすると、極めて多数のカーネル printf が生じる
|
|
ことになります。
|
|
一度デバッグ用 printf をスタートさせてしまうと、停止させるのは難しい
|
|
でしょう。というのは、カーネルはメッセージを表示するのに忙しくなるので、
|
|
他のリクエストをすぐにサービスすることができなくなるからです。
|
|
.Ic debug
|
|
機能はいくつかの引数を取ります。
|
|
.Bl -tag -width 18n
|
|
.It Fl I
|
|
CAM_DEBUG_INFO printf を有効にします。
|
|
.It Fl T
|
|
CAM_DEBUG_TRACE printf を有効にします。
|
|
.It Fl S
|
|
CAM_DEBUG_SUBTRACE printf を有効にします。
|
|
.It Fl c
|
|
CAM_DEBUG_CDB printf を有効にします。これにより、カーネルが、指定した
|
|
デバイスに送信した SCSI CDB を表示することになります。
|
|
.It all
|
|
すべてのデバイスについてデバッグ出力を有効にします。
|
|
.It off
|
|
すべてのデバイスについてデバッグ出力を無効にします。
|
|
.It bus Ns Op :target Ns Op :lun
|
|
指定したバス、ターゲット、論理ユニット番号(lun)についてデバッグ出力を
|
|
有効にします。論理ユニット番号、もしくはターゲットと論理ユニット番号が
|
|
指定されない場合は、ワイルドカード指定されたものとして扱います。(すなわち、
|
|
バスだけを指定すると、そのバスのすべてのデバイスについてデバッグ用
|
|
printf が有効になります。)
|
|
.El
|
|
.It Ic tags
|
|
\&"tagged openings" の数を、表示または設定します。
|
|
この値は、特定のデバイスに対して同時にキューイング可能な
|
|
トランザクション数です。
|
|
デフォルトでは、コマンド固有の引数が無いと (一般的な引数のみを指定すると)、
|
|
.Ic tags
|
|
コマンドは、
|
|
対象のデバイスにキューイング可能なトランザクション数の
|
|
\&"soft" 最大値を表示します。
|
|
さらに詳細な情報を得るには、次に説明する
|
|
.Fl v
|
|
引数を指定してください。
|
|
.Bl -tag -width 7n
|
|
.It Fl N Ar tags
|
|
指定したデバイスのタグ数を設定します。
|
|
この値は、
|
|
カーネル中の癖の表 (quirk table) にある最小値と最大値の間にある必要があります。
|
|
タグ付きキューイングをサポートするほとんどのデバイスのデフォルトは、
|
|
最小値が 2 で最大値が 255 です。
|
|
指定したデバイスの最大値と最小値を調べるには、
|
|
.Fl v
|
|
スイッチを使用します。
|
|
この
|
|
.Nm
|
|
サブコマンドに対する
|
|
.Fl v
|
|
スイッチの意味は後述します。
|
|
.It Fl q
|
|
静かになり、タグ数を報告しません。
|
|
一般的には、タグ数を設定するときに使用します。
|
|
.It Fl v
|
|
冗長フラグは、
|
|
.Em tags
|
|
引数に対しては特殊な機能があります。
|
|
このフラグを指定すると
|
|
.Nm
|
|
は、XPT_GDEV_TYPE CCB のタグ付きキューイング関連フィールドを表示します:
|
|
.Bl -tag -width 13n
|
|
.It dev_openings
|
|
指定されたデバイスに対してキューイング可能なトランザクションの総数です。
|
|
.It dev_active
|
|
指定されたデバイスに対して現在キューイングされているトランザクション数です。
|
|
.It devq_openings
|
|
トランザクション用のカーネルキュー空間です。
|
|
通常この数は dev_openings を反映します。
|
|
エラーリカバリ時は例外であり、対象デバイスのキューは凍結されるか
|
|
(デバイスはコマンド受信を許されません)、
|
|
dev_openings の数が減じられるか、トランザクションの再実行が行われます。
|
|
.It devq_queued
|
|
カーネルキュー内でデバイスが空くのを待っているトランザクション数です。
|
|
エラーリカバリ中でなければ、通常この数は 0 です。
|
|
.It held
|
|
held 数は、周辺装置ドライバが保持する CCB 数です。
|
|
このような CCB は、丁度完了したものであるか、
|
|
デバイスによってサービスを受けるために転送層に渡されようとしているものです。
|
|
保持されている CCB は、対象のデバイスに空きを予約します。
|
|
.It mintags
|
|
同時にデバイスにキューイング可能なトランザクション数の、
|
|
現在の "hard" 最小値です。既出の
|
|
.Ar dev_openings
|
|
値はこの数より小さくはなり得ません。
|
|
.Ar mintags
|
|
のデフォルト値は 2 ですが、
|
|
デバイスによってはより大きくまたはより小さく設定され得ます。
|
|
.It maxtags
|
|
同時にデバイスにキューイング可能なトランザクション数の、
|
|
現在の "hard" 最大値です。既出の
|
|
.Ar dev_openings
|
|
はこの値より大きくはなり得ません。
|
|
.Ar maxtags
|
|
のデフォルト値は 255 ですが、
|
|
デバイスによってはより大きくまたはより小さく設定され得ます。
|
|
.El
|
|
.El
|
|
.It Ic negotiate
|
|
様々な通信パラメータを、表示またはネゴシエートします。
|
|
コントローラによっては、特定の値の設定や変更をサポートしません。
|
|
例えば Adaptec 174x コントローラは、
|
|
デバイスの同期レートやオフセットの変更をサポートしません。
|
|
あるパラメータの設定をサポートしないとコントローラが示す場合、
|
|
.Nm
|
|
はそのパラメータの設定を試みません。
|
|
コントローラがサポートするものを調べるには、
|
|
.Fl v
|
|
フラグを使用します。
|
|
.Ic negotiate
|
|
コマンドでの
|
|
.Fl v
|
|
フラグの意味は後述します。
|
|
また、コントローラドライバによっては、
|
|
下位のコントローラがあるネゴシエーションパラメータの変更を
|
|
サポートしているにもかかわらず、
|
|
そのネゴシエーションパラメータの設定をサポートしません。
|
|
Advansys ワイドコントローラのように、
|
|
コントローラの同期ネゴシエーションの有効と無効をサポートしているにも
|
|
かかわらず、
|
|
同期ネゴシエーションレートの設定をサポートしないコントローラがあります。
|
|
.Bl -tag -width 17n
|
|
.It Fl a
|
|
ネゴシエーション設定がすぐに効果を持つようにするため、
|
|
対象デバイスに Test Unit Ready コマンドを送ります。
|
|
.It Fl c
|
|
現在のネゴシエーション設定を、表示または設定します。これがデフォルトです。
|
|
.It Fl D Ar enable|disable
|
|
切断 (disconnection) を、有効または無効にします。
|
|
.It Fl O Ar offset
|
|
コマンド遅延オフセットを設定します。
|
|
.It Fl q
|
|
静かになり、なにも表示しません。
|
|
一般的には、パラメータを設定したいが状態情報は不要であるときに有用です。
|
|
.It Fl R Ar syncrate
|
|
デバイスの同期レートを変更します。
|
|
同期レートは、MHz で指定される浮動小数点値です。
|
|
例えば
|
|
.Sq 20
|
|
としては、
|
|
.Sq 20.000
|
|
が正しい値です。
|
|
.It Fl T Ar enable|disable
|
|
デバイスのタグ付きキューイングを、有効または無効にします。
|
|
.It Fl U
|
|
ユーザのネゴシエーション設定を、表示または設定します。
|
|
デフォルトでは、現在のネゴシエーション設定を表示または設定します。
|
|
.It Fl v
|
|
冗長フラグは、
|
|
.Sq negotiate
|
|
サブコマンドに対しては特殊な意味があります。
|
|
このフラグを指定すると
|
|
.Nm
|
|
は、コントローラデバイスに送った Path Inquiry (XPT_PATH_INQ) CCB の内容を
|
|
表示します。
|
|
.It Fl W Ar bus_width
|
|
デバイスとネゴシエートするバス幅を指定します。
|
|
バス幅はビット数で指定します。
|
|
指定可能な値は、8, 16, 32 のいずれかのビット数です。
|
|
設定が効果を持つためには、
|
|
そのバス幅をコントローラがサポートする必要があります。
|
|
.El
|
|
.Pp
|
|
一般的には、あるデバイスの同期レートとオフセット設定が効果をあらわすのは、
|
|
そのデバイスに対してコマンドが送られてからです。
|
|
前述の
|
|
.Fl a
|
|
スイッチは、ネゴシエーションパラメータが効果をあらわすようにするため、
|
|
自動的に Test Unit Ready をデバイスに送ります。
|
|
.It Ic format
|
|
SCSI FORMAT UNIT コマンドを指定したデバイスに送ります。
|
|
.Pp
|
|
.Em 警告! 警告! 警告!
|
|
.Pp
|
|
ディスクをローレベルフォーマットすると、
|
|
ディスク上の「すべて」のデータを破壊します。
|
|
このコマンドを発行するときには、非常に注意してください。
|
|
本当はローレベルフォーマットが不要なディスクに対し、
|
|
多くのユーザがローレベルフォーマットを行っています。
|
|
ローレベルフォーマットが必要となる状況は、比較的少ないです。
|
|
ローレベルフォーマットが必要となる理由のひとつは、
|
|
ディスクの物理セクタの大きさを変えた後でディスクを初期化するためです。
|
|
ローレベルフォーマットが必要となる別の理由は、
|
|
ディスクへの読み込みまたは書き込みの要求に対して "medium format corrupted"
|
|
(メディアフォーマットが壊れている)
|
|
エラーとなる場合に、そのディスクを復活させるためです。
|
|
.Pp
|
|
ディスクによっては、
|
|
他のディスクよりもフォーマットに時間がかかります。
|
|
フォーマットが完了するために十分なタイムアウト値を、
|
|
ユーザが指定する必要があります。
|
|
デフォルトのフォーマットタイムアウトは 3 時間です。
|
|
ハードディスクによっては、非常に短い期間 (5 分以下の単位)
|
|
でフォーマット操作が完了します。
|
|
このような場合のほとんどは、
|
|
FORMAT UNIT コマンドをドライブが実際にはサポートをしていないため、
|
|
すなわちコマンドを受け付けて数分待ってから戻るだけであるためです。
|
|
.Pp
|
|
.Sq format
|
|
サブコマンドはいくつかの引数を取り、デフォルトの動作を変えます。
|
|
.Fl q
|
|
および
|
|
.Fl y
|
|
の引数は、スクリプトにおいて有用です。
|
|
.Pp
|
|
.Bl -tag -width 6n
|
|
.It Fl q
|
|
静かになり、状態メッセージを表示しません。
|
|
しかしながら、本オプションは、質問は無効化しません。
|
|
質問を無効化するには、後述の
|
|
.Fl y
|
|
引数を使用してください。
|
|
.It Fl w
|
|
非即時のフォーマットコマンドを発行します。
|
|
デフォルトでは、
|
|
.Nm
|
|
は FORMAT UNIT コマンドを即時ビット (immediate bit) をセットして発行します。
|
|
これは、フォーマットが実際に完了する前に、
|
|
即時にフォーマットコマンドを返すよう、デバイスに指示します。
|
|
そして
|
|
.Nm
|
|
が
|
|
.Tn SCSI
|
|
センス情報を毎秒デバイスから収集し、フォーマット処理の進捗を判断します。
|
|
.Fl w
|
|
引数が指定されると、
|
|
.Nm
|
|
は非即時のフォーマットコマンドを発行します。
|
|
この場合、ディスクの何パーセントがフォーマットされたのかを
|
|
ユーザへ知らせるための表示は行われません。
|
|
.It Fl y
|
|
質問をしません。
|
|
デフォルトでは、
|
|
.Nm
|
|
はユーザに対し、対象のディスクを本当にフォーマットしたいのか、
|
|
そしてフォーマットコマンドのデフォルトタイムアウトで良いかを質問します。
|
|
タイムアウトをコマンドラインで指定した場合、タイムアウトは質問されません。
|
|
.El
|
|
.It help
|
|
冗長な、使用方法に関する情報を表示します。
|
|
.El
|
|
.Sh 環境変数
|
|
変数
|
|
.Ev SCSI_MODES
|
|
によって、別のモードページの書式ファイルを指定することができます。
|
|
.Pp
|
|
変数
|
|
.Ev EDITOR
|
|
によって、
|
|
.Nm
|
|
は、モードページの編集を行なう際に
|
|
どのテキストエディタを起動するかを決定します。
|
|
.Sh 関連ファイル
|
|
.Bl -tag -width /usr/share/misc/scsi_modes -compact
|
|
.It Pa /usr/share/misc/scsi_modes
|
|
SCSI モード書式データベース。
|
|
.It Pa /dev/xpt0
|
|
トランスポート層デバイス。
|
|
.It Pa /dev/pass*
|
|
CAM アプリケーションパススルーデバイス。
|
|
.El
|
|
.Sh 使用例
|
|
.Dl camcontrol eject -n cd -u 1 -v
|
|
.Pp
|
|
cd1 から CD をイジェクトし、コマンド実行に失敗した場合は SCSI センス情報を
|
|
出力します。
|
|
.Pp
|
|
.Dl camcontrol tur da0
|
|
.Pp
|
|
SCSI test unit ready コマンドを da0 に送信します。
|
|
.Nm
|
|
はそのディスクがレディ状態であるかどうかを報告しますが、
|
|
.Fl v
|
|
スイッチが指定されていないため、コマンド実行に失敗してもセンス情報を
|
|
表示しません。
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
camcontrol tur da1 -E -C 4 -t 50 -v
|
|
.Ed
|
|
.Pp
|
|
SCSI test unit ready コマンドを da1 に送信します。カーネルエラーリカバリ
|
|
を有効にします。リトライカウントを 4 に、タイムアウトを 50 秒に
|
|
設定します。コマンド実行に失敗した場合(
|
|
.Fl v
|
|
フラグがあるので)センス情報が出力されます。エラーリカバリが設定されて
|
|
いるので、ディスクが回転していない場合は回転させられます。
|
|
.Nm
|
|
はディスクがレディ状態かどうかを報告します。
|
|
.Bd -literal -offset indent
|
|
camcontrol cmd -n cd -u 1 -v -c "3C 00 00 00 00 00 00 00 0e 00" \e
|
|
-i 0xe "s1 i3 i1 i1 i1 i1 i1 i1 i1 i1 i1 i1"
|
|
.Ed
|
|
.Pp
|
|
READ BUFFER コマンド (0x3C) を cd1 に対して発行します。cd1 のバッファサイズと
|
|
cd1 のキャッシュの最初の 10 バイトを表示します。コマンド実行に失敗した場合
|
|
SCSI センス情報を表示します。
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
camcontrol cmd -n cd -u 1 -v -c "3B 00 00 00 00 00 00 00 0e 00" \e
|
|
-o 14 "00 00 00 00 1 2 3 4 5 6 v v v v" 7 8 9 8
|
|
.Ed
|
|
.Pp
|
|
WRITE BUFFER コマンド (0x3B) を cd1 に対して発行します。(予約済の) 4 バイト
|
|
ヘッダを含まないデータ 10 バイトを書き出します。コマンド実行に失敗した場合
|
|
センス情報を表示します。このコマンドには細心の注意を払って下さい。不適切に
|
|
使用した場合、データが破壊されるかもしれません。
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
camcontrol modepage da3 -m 1 -e -P 3
|
|
.Ed
|
|
.Pp
|
|
da3 のモードページ 1 (Read-Write Error Recover ページ)を編集し、編集結果を
|
|
そのドライブにセーブします。モードページ 1 には、
|
|
ディスクドライブの読み出し、書き込みの自動再配置の設定などが含まれます。
|
|
.Pp
|
|
.Dl camcontrol rescan 0
|
|
.Pp
|
|
SCSI バス 0 を再スキャンし、追加、削除、変更されたデバイスを探します。
|
|
.Pp
|
|
.Dl camcontrol rescan 0:1:0
|
|
.Pp
|
|
SCSI バス 0, ターゲット 1, 論理ユニット番号 0 を再スキャンし、そのデバイスが
|
|
追加、削除、変更されたかどうかを調べます。
|
|
.Pp
|
|
.Dl camcontrol tags da5 -N 24
|
|
.Pp
|
|
da5 の同時トランザクション数を 24 に設定します。
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
camcontrol negotiate -n da -u 4 -T disable
|
|
.Ed
|
|
.Pp
|
|
da4 のタグ付きキューイングを無効にします。
|
|
.Pp
|
|
.Bd -literal -offset indent
|
|
camcontrol negotiate -n da -u 3 -R 20.000 -O 15 -a
|
|
.Ed
|
|
.Pp
|
|
同期レート 20MHz とオフセット 15 を、da3 とネゴシエートします。
|
|
その後 Test Unit Ready コマンドを送り、設定が効果をあらわすようにします。
|
|
.Sh 関連項目
|
|
.Xr cam 3 ,
|
|
.Xr cam_cdbparse 3 ,
|
|
.Xr cam 4 ,
|
|
.Xr pass 4 ,
|
|
.Xr xpt 4
|
|
.Sh 歴史
|
|
.Nm
|
|
コマンドは、
|
|
.Fx 3.0
|
|
で最初に現れました。
|
|
.Pp
|
|
モードページ編集のコードと任意の SCSI コマンドのコードは、
|
|
Julian Elischer と Peter Dufault が書いた、かつての
|
|
.Xr scsi 8
|
|
ユーティリティと
|
|
.Xr scsi 3
|
|
ライブラリのものに基づいています。
|
|
.Xr scsi 8
|
|
プログラムが最初に出現したのは 386BSD 0.1.2.4 で、
|
|
.Fx
|
|
で最初に出現したのは、
|
|
.Fx 2.0.5
|
|
です。
|
|
.Sh 作者
|
|
.An Kenneth Merry Aq ken@FreeBSD.org
|
|
.Sh バグ
|
|
コマンド行引数を解釈するコードは、どのサブコマンドが複数の引数を取るかを
|
|
知りません。ですから、たとえば、
|
|
.Bd -literal -offset indent
|
|
camcontrol cmd -n da -u 1 -c "00 00 00 00 00 v" 0x00 -v
|
|
.Ed
|
|
.Pp
|
|
のようなことを試みた場合、test unit ready コマンドで得られるセンス情報は
|
|
出力されません。というのは、
|
|
.Fl c
|
|
の 2 番目の引数
|
|
.Pq 0x00
|
|
.Pc
|
|
を見た時点で、
|
|
.Nm
|
|
の最初の
|
|
.Xr getopt 3
|
|
呼び出しが
|
|
終ってしまうためです。
|
|
この動作を修正するには、ある程度の規模のコードを書き加えるか、
|
|
.Xr getopt 3
|
|
インタフェースを変更するかのどちらかが必要でしょう。
|
|
この問題を回避するもっとも良い方法は、常に
|
|
.Nm
|
|
共通引数をコマンド固有の引数の前に指定していることを確認することです。
|