Need to update the running attributes of a virtual SCSI adapter on an AIX system? Try these steps.
I want to change value for the vscsi_err_recov attribute to fast_fail. I cant do this if the adapter is busy i.e. has open/available paths to a disk device.
# lsattr -El vscsi2
vscsi_err_recov delayed_fail N/A True
vscsi_path_to 0 Virtual SCSI Path Timeout True
# chdev -l vscsi2 -a vscsi_err_recov=fast_fail
Method error (/usr/lib/methods/chggen):
0514-029 Cannot perform the requested function because a
child device of the specified device is not in a correct state.
I have two paths to my disk devices. This will allow me to take one path offline while I change the attributes of the adapter.
# lspath | grep vscsi2
Enabled hdisk4 vscsi2
Enabled hdisk5 vscsi2
# rmpath -l hdisk4 -p vscsi2
path Defined
# rmpath -l hdisk5 -p vscsi2
path Defined
# lspath | grep vscsi2
Defined hdisk4 vscsi2
Defined hdisk5 vscsi2
With the path offline, I can now change the attributes of the device and then bring the path online again.
# chdev -l vscsi2 -a vscsi_err_recov=fast_fail
vscsi2 changed
# lsattr -El vscsi2 -a vscsi_err_recov
vscsi_err_recov fast_fail N/A True
# cfgmgr < Bring the path online.
# lspath | grep vscsi2
Enabled hdisk4 vscsi2
Enabled hdisk5 vscsi2
Now I can do the same for the other VSCSI adapter.
# lsattr -El vscsi3 -a vscsi_err_recov
vscsi_err_recov delayed_fail N/A True
# chdev -l vscsi3 -a vscsi_err_recov=fast_fail
Method error (/usr/lib/methods/chggen):
0514-029 Cannot perform the requested function because a
child device of the specified device is not in a correct state.
# lspath | grep vscsi3
Enabled hdisk4 vscsi3
Enabled hdisk5 vscsi3
# rmpath -l hdisk4 -p vscsi3
path Defined
# rmpath -l hdisk5 -p vscsi3
path Defined
# lspath | grep vscsi3
Defined hdisk4 vscsi3
Defined hdisk5 vscsi3
# chdev -l vscsi3 -a vscsi_err_recov=fast_fail
vscsi3 changed
# lsattr -El vscsi3 -a vscsi_err_recov
vscsi_err_recov fast_fail N/A True
# cfgmgr
# lspath | grep vscsi3
Enabled hdisk4 vscsi3
Enabled hdisk5 vscsi3
All paths are available again and the adapters have been updated. All of this was done without taking an outage.
# lspath
Enabled hdisk4 vscsi2
Enabled hdisk4 vscsi3
Enabled hdisk5 vscsi2
Enabled hdisk5 vscsi3
# lsattr -El vscsi2 -a vscsi_err_recov
vscsi_err_recov fast_fail N/A True
# lsattr -El vscsi3 -a vscsi_err_recov
vscsi_err_recov fast_fail N/A True
If Id chosen not to take the paths offline, one at a time, I would have needed to change the adapters attributes by specifying the P flag with the chdev command. Then I would need to reboot the system.
-P
Changes the device's characteristics permanently in the Customized Devices object class without actually changing the device. This is useful for devices that cannot be made unavailable and cannot be changed while in the available state. The change is made to the database, and the changes are applied to the device when the system is rebooted. This flag cannot be used with the -T flag. Not all devices support the -P flag.