关于Solaris系统“mpt_sas”驱动

时间:2023-03-09 03:59:20
关于Solaris系统“mpt_sas”驱动

1.mpt_sas 驱动源文件所在系统源代码中目录:

illumos-soulos/usr/src/uts/common/sys/scsi/adapters/mpt_sas  -- 头文件

illumos-soulos/usr/src/uts/common/io/scsi/adapters/mpt_sas  -- C文件

2.mpt_sas 驱动所在运行系统中位置:

/kernel/drv/amd64/mpt_sas

3.查看系统的内核版本信息:

192.168.5.41

root@UA4300D-spa:~# uname -v

soulos-d9f1eff

192.168.5.222

linux@linux-desktop:~$ ssh root@192.168.5.222

Last login: Tue Jun 24 16:38:56 2014

The Illumos Project     SunOS 5.11      soulos-d9f1eff  Mar. 03, 2014

SunOS Internal Development: wqx 2014-Mar-03 [illumos-soulos]

192.168.2.122

linux@linux-desktop:~$ ssh root@192.168.2.122

Last login: Tue Jun 24 15:44:50 2014 from 192.168.2.17

The Illumos Project     SunOS 5.11      soulos-0f38905  May. 03, 2014

SunOS Internal Development: zhiwen 2014-May-03 [illumos-soulos]

使用git工具,根据“commit”号查询到以前的内核版本:

--返回到原来的分支

-bash-4.2$ git checkout -b mpt origin/master

-bash-4.2$ git branch -a

-bash-4.2$ git reset --hard d9f1eff5d8b3ce67e2eee2e79e49b216a1626146

4.在wqx 2014-Mar-03内核版本中替换最新的mpt_sas驱动,出现错误!

--导致这个问题的原因是 4月27号加slow io detector时对 struct scsi_pkt 结构体做了扩展,
最新编出来的mpt_sas用的struct scsi_pkt 比 scsi_pkt_size()返回的大, 所以把redzone byte 给overwrite了。
--解决方案:同时更新一下scsi 模块,scsi模块所在目录(/kernel/misc/amd64/scsi)

commit d9f1eff5d8b3ce67e2eee2e79e49b216a1626146

Author: Zhiwen Zheng <zhiwen.zheng@soulinfo.com>

Date:   Sun Mar 2 16:29:42 2014 +0800

commit d42cd6f0692e164eaa320d38928367b0be70b5b1

Author: Zhiwen Zheng <zhiwen.zheng@soulinfo.com>

Date:   Tue Jun 24 09:50:35 2014 +0800

illumos-soulos/usr/src/uts/common/sys/scsi/scsi_pkt.h

+       hrtime_t pkt_start;

+       hrtime_t pkt_stop;

5.在替换成最新的mpt_sas驱动后,机器始终处于重启状态,不能正常启动,可以禁止该驱动是系统能够启动

(1)禁止mpt_sas驱动的方法:开机后一直按“Esc”键,然后根据提示按“e”进入编辑模式,在内容为“Kernel”的这一行添加内容:-B disable-mpt_sas=true,这样便能启动

(2)测试新的mpt_sas驱动时,不要直接将该驱动替换,因为如果失败的话,需要重新执行上述操作,可将mpt_sas驱动拷贝到其他目录,然后使用命令:modload mpt_sas

  注意:删完之后,要执行命令:bootadm update-archive,否则是没有效的。

(3)查看驱动信息可使用命令:modinfo | grep scsi  ,  modinfo | grep mpt_sas

6.修改系统启动参数:

vi /rpool/boot/grub/menu.1st

kernel$/platform/i86pc/kernel/amd64/unix -B $ZFS-BOOTFS -k 这一行最末尾的-k去掉

(-k 的意思可能是是系统进入调试模式)