Disk rescan will change max_sectors_kb to default value

Solution Verified - Updated

Environment

  • Red Hat Enterprise Linux 7.3

Issue

  • How to make max_sectors_kb persistent for multipath devices. In multipath.conf, max_sectors_kb 4096 was defined. After doing 'systemctl reload multipathd' value of max_sectors_kb turn to 4096 for all disks (the disk sdc is taken for an example).
    If performing disk rescan for sdc , max_sectors_kb will turn back to default value 512
# cat /sys/block/sdc/queue/max_sectors_kb
4096
# echo 1 > /sys/devices/pci0000:00/0000:00:01.0/0000:04:00.0/host0/rport-0:0-0/target0:0:0/0:0:0:1/rescan
# cat /sys/block/sdc/queue/max_sectors_kb
512
  • The issue was seen on RHEL7.3 but not observed on RHEL7.2.

  • How to make make max_sectors_kb parameter persistence ?

Resolution

  • Please update kernel package to kernel-3.10.0-862.el7.x86_64 or higher.

Diagnostic Steps

  • Test results between 2 kernel versions ,affected kernel version 3.10.0-514.26.1.el7.x86_64 and working kernel version 3.10.0-327.el7.x86_64:
[root@dell430-06 ~]# uname -a
Linux dell430-06 3.10.0-514.26.1.el7.x86_64 #1 SMP Tue Jun 20 01:16:02 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

multipath -ll 

mpatha (36000d310032ca600000000000000000d) dm-4 COMPELNT,Compellent Vol  
size=10G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  |- 1:0:0:2 sdb 8:16  active ready running
  `- 1:0:1:2 sdc 8:32  active ready running  <------ using sdc to test max_sectors_kb value

[root@dell430-06 ~]# cat /etc/udev/rules.d/99-max_sectors_kb.rules 
ACTION=="add|change", SUBSYSTEM=="block", RUN+="/bin/sh -c '/bin/echo 4096 > /sys%p/queue/max_sectors_kb'"

[root@dell430-06 ~]# /sbin/udevadm control --reload-rules
[root@dell430-06 ~]# /sbin/udevadm trigger --type=devices --subsystem-match=block --action=change

[root@dell430-06 ~]# cat /sys/block/sdc/queue/max_sectors_kb
4096

[root@dell430-06 ~]# echo 1 > /sys/class/scsi_disk/1\:0\:1\:2/device/rescan 

[root@dell430-06 ~]# cat /sys/block/sdc/queue/max_sectors_kb
2048  <-------------------  change back to default value 2048

Next did same test with older kernel version 3.10.0-327.el7.x86_64 to see if we are getting same max_sectors_kb value behavior but turned out to be different result. This time max_sectors_kb value stayed persistent.

[root@dell430-06 ~]# uname -a
Linux dell430-06 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@dell430-06 ~]# cat /etc/udev/rules.d/99-max_sectors_kb.rules 
ACTION=="add|change", SUBSYSTEM=="block", RUN+="/bin/sh -c '/bin/echo 4096 > /sys%p/queue/max_sectors_kb'"

[root@dell430-06 ~]# /sbin/udevadm control --reload-rules
[root@dell430-06 ~]# /sbin/udevadm trigger --type=devices --subsystem-match=block --action=change

[root@dell430-06 ~]# cat /sys/block/sdc/queue/max_sectors_kb
4096

[root@dell430-06 ~]# cat /sys/block/sdc/queue/max_sectors_kb
4096
[root@dell430-06 ~]# echo 1 > /sys/class/scsi_disk/1\:0\:1\:2/device/rescan 

[root@dell430-06 ~]# cat /sys/block/sdc/queue/max_sectors_kb
4096  <-------------------------------------------- value stayed persistent
  • This is a bug with kernel version 3.10.0-514.26.1.el7.x86_64 and engineering team had provided a fix in kernel-3.10.0-862.el7.x86_64.

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.