When attempting to change the max_transfer attribute on a VSCSI hdisk, the following error was displayed:

# chdev -l hdisk0 -a max_transfer=0x100000 -P

Method error (/etc/methods/chgdisk):

0514-018 The values specified for the following attributes

are not valid:

max_transfer Maximum TRANSFER Size

The desired value, 0x100000, was an allowed value for this type of device (as shown in the lsattr output below):

# lsattr -El hdisk0

PCM PCM/friend/vscsi Path Control Module False

algorithm fail_over Algorithm True

hcheck_cmd test_unit_rdy Health Check Command True

hcheck_interval 60 Health Check Interval True

hcheck_mode nonactive Health Check Mode True

max_transfer 0x40000 Maximum TRANSFER Size True

pvid 00f6a83aeb1948950000000000000000 Physical volume identifier False

queue_depth 256 Queue DEPTH True

reserve_policy no_reserve Reserve Policy True

# lsattr -Rl hdisk0 -a max_transfer

0x20000

0x40000

0x80000

0x100000

0x200000

0x400000

0x800000

0x1000000

After some discussion with IBM support, it was discovered that the virtual optical device, assigned to this LPAR, was causing the problem. They advised that we should perform the following steps:

1. Remove the cd0 device from the LPAR i.e.

# rmdev dl cd0

2. Remove the vtopt0 device assigned to the LPAR on the VIOS i.e

$ rmvdev vtd vtopt0

3. Shutdown the LPAR.

4. Reboot the VIOS.

5. Restart the LPAR.

6. Change the max_transfer value for the hdisk on the LPAR.

Sure enough, after following these steps, we were able to change max_transfer to the desired value!

# chdev -l hdisk0 -a max_transfer=0x100000

hdisk0 changed

# lsattr -El hdisk0

PCM PCM/friend/vscsi Path Control Module False

algorithm fail_over Algorithm True

hcheck_cmd test_unit_rdy Health Check Command True

hcheck_interval 0 Health Check Interval True

hcheck_mode nonactive Health Check Mode True

max_transfer 0x100000 Maximum TRANSFER Size True

pvid 00f6a83aeedf5ffb0000000000000000 Physical volume identifier False

queue_depth 3 Queue DEPTH True

reserve_policy no_reserve Reserve Policy True

The following explanation was given by IBM support:

The virtual optical device seems to use max_transfer size as 0x40000 (256 KB) internally, which is not allowed to be modified. Virtual optical CD's max_transfer seems to limit vhost adapter's max_transfer size. So if you want to increase max_transfer size for virtual SCSI disks, you should separate them from virtual optical SCSI CD by configuring those two groups under different vhost adapters