sdデバイスとsgデバイスの相互確認


sdデバイスがsgのどれに対応するか調べるにはsg_map26コマンドを使う。
sg_mapコマンドではだめ。


使い方
# sg_map26 /dev/sda
# sg_map25 /dev/sg3

で相互に変換可能。sgデバイスとsdデバイスではkernel内部でも処理が違うため注意する。

sgデバイスにioctlを発行したときはエラーになる。
sdデバイスにioctlを発行したときはエラーにならない。









・sdにたいしてioctlをコールしたときのkernel内部の関数コール
sd_ioctl
->scsi_cmd_ioctl
-->sg_io
--->blk_get_request

・sgにたいしてioctlをコールしたときのkernel内部の関数コール
sg_ioctl
->sg_new_write
-->sg_common_write
--->sg_stat_req
---->blk_get_request


100行目から150行目を取り出すためのawkの1ラインコマンド。
syslogで重点的にチェックしたい時間帯があればこのコマンドを
別ファイルにリダイレクトとかして調査する。

awk 'NR>=100 && NR<=150 {print $0}' < syslog

システムコールからlinuxのkernelが動作している部分の辿り方


1.man xxxx
で調べたい関数がシステムコールであることと、引数の数を確認する。

2.「SYSCALL_DEFINE」でlinux kernelのソースを検索する。
はシステムコールの引数の数。


システムコールがkernel内部でどのように処理をしているか調べたい
ときに重宝する。また、sys_xxx ->do_xxxというような流れでコール
されていない関数もあるので注意する。

About