Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.277. s390utils

Updated s390utils packages that fix multiple bugs and add multiple enhancements are now available for Red Hat Enterprise Linux 6.
The s390utils packages contain a set of utilities and daemons related to Linux for the IBM System z architecture.

Bug Fixes

The cmsfs-fuse did not correctly update the number of records on the disk under certain conditions. This could result in an unreadable file situation when the last free data block on the disk was used. The cmsfs-fuse tool has been modified to update the highest record number according to the number of records written before the disk is full. The problem with unreadable files no longer occurs.
Previously, FBA-512 disks could not be mounted using the cmsfs-fuse utility because csmfs-fuse expected to find the label information at a different position than it is located on FBA-512 disks. Also, the block size of the formatted FBA-512 disk can differ from the usual FBA disk block size, which is 512 bytes. With this update, cmsfs-fuse has been modified to detect the label information of FBA-512 disks and the formatted block size is now read from the label. FBA-512 disks can now be mounted with cmsfs-fuse as expected.
The cmsfs-fuse utility incorrectly calculated logical address of the data block that was to be allocated or freed. As a consequence, a write operation failed if a disk with a block size of 512 bytes was larger than 256 MB. With this update, cmsfs-fuse has been modified to calculate logical addresses correctly, and disks with a block size of 512 bytes can be written to regardless of their capacity.
Under certain circumstances, cmsfs-fuse could incorrectly calculate the end of a file when parsing data record of a file in the fixed record format. As a consequence, an attempt to read such a file failed with an I/O error. The cmsfs-fuse has been modified to calculate data records and detect the end of a file correctly. Read operations on files in the fixed record format are now successful.
When performing multiple subsequent write operations on a file in the fixed record format, cmsfs-fuse could, under certain circumstances, incorrectly determine the current write position. As a consequence, write operations could fail. The cmsfs-fuse tool now maintains, as long as a file is open for writing, a write pointer that refers to the current write position, and thus allows contiguous writes to the file in the fixed record format without any failures.
The cmsfs-fuse utility did not reset the record length attribute after finishing a write operation. As a consequence, the next write operation failed if a disk was mounted with the -o big_writes option, which enables write operations bigger than 4 KB, and the previously written record was larger than a disk block size. With this update, cmsfs-fuse resets the record length attribute after every write operation, and writing to a file no longer fails in the scenario described.
The qetharp utility did not check the lenght of the given interface name parameter. Therefore, the qetharp command terminated with a buffer overflow when it was executed with an interface name that was longer than 16 bytes. With this update, qetharp checks the length of the interface name parameter, and properly exits with the Error: interface name too long error message if the parameter is longer than it is allowed to be.
Due to the redundant free() function call in the configuration file of cmsfs-fuse, the utility attempted to deallocate already freed memory. As a consequence, cmsfs-fuse expressed unpredictable behavior in the file type translation mode, such as a no longer accessible file system. With this update, the superfluous free() function call has been removed, and cmsfs-fuse now behaves as expected.
Under certain circumstances, a file size calculation could cause the data type overflow situation, which resulted in a negative value. As a consequence, it was impossible to create files larger than 2 GB. With this update, cmsfs-fuse has been modified to cast data type of variables, structure members and functions used in the calculation to a longer data type before calculating the file size. The cmsfs-fuse utility now works as expected and files larger than 2 GB can now be created.
The lsmem and chmem utilities assumed only contiguous memory blocks. Therefore, if the memory was non-contiguous and memory blocks did not follow in the presumed order, the lsmem utility did not show available memory that followed after a part of the physical address space that was not mapped to physical memory, a so called memory hole, and the chmem utility did not work at all. The lsmem and chmem utilities have been modified to work correctly with non-contiguous memory.
The lscss and lsdasd tools did not correctly handle a situation when running on a sysfs device tree that was changing. If a device disappeared from the device tree while lscss or lsdasd was attempting to access attributes of the device, the tool displayed pointless error messages. With this update, the lscss and lsdasd code has been modified to suppress the related error messages. In addition, the return code of the lscss -h and lsdasd -h commands has been corrected.
The lsluns utility did not check whether the SCSI Generic (sg) driver was loaded in the kernel and sg functionality was thus available. Therefore, lsluns silently failed when it was started and sg functionality was unavailable on the system. With this update, lsluns now includes the missing check and exits with an error message when it is started on the system with the sg functionality unavailable.
The af_iucv(8) man page now contains previously missing information about HiperSockets and HiperSocket connections, including an explanation on how to configure a HiperSocket device.
Previously, the dumpconf utility used the DELAY_MINUTES variable to delay restart of a system on kernel panic. However, users expected immediate action, therefore dumpconf has been modified to set the DELAY_MINUTES variable to 0 on system restart. Restart of the system with dumpconf is now triggered immediately.
The cpuplugd daemon did not properly handle lines commented out and did not correctly match strings in its configuration file. Consequently, lines in the configuration file that were commented out could be executed, which resulted in a parsing error, and invalid variable names were sometimes not rejected. The comment handling and string matching routines has been corrected in the code, and cpuplugd now behaves as expected when parsing the configuration file.
When calculating a date for a timestamp, the Perl localtime function incorrectly returned month within a range from 0 to 11 instead of a range from 1 to 12, which resulted in timestamps shifted by one month backward. To correct this problem, returned integer is incremented by one. The zfcpdbf now generates correct timestamps.
The lsluns --help command incorrectly suggested using an invalid --ports option. This mistake has been corrected, and the lsluns --help now correctly displays the --port option.
The fdasd utility did not distinguish between interactive and non-interactive mode. Therefore, when running the fdasd utility with the --config or --auto option on a device with no valid disk label, fdasd could stop with the following output:
no known label
Should I create a new one? (y/n)
Or it could fail with the following error message:
Disc does not contain a VOL1 label, cannot create partitions.
With this update, the fdasd has been modified to properly check whether it should run in interactive or non-interactive mode, and it behaves accordingly.
The cpuplugd(8) man page has been modified to correct several typos and add one missing word.
Previously, the cpuplugd daemon did not handle a sub-string matching correctly. The daemon also used an incorrect string length when working with user-defined variables. As a consequence, the daemon returned a parsing error if a user-defined variable name matches the prefix of a pre-defined variable, or a substring of another user-defined variable. With this update, the sub-string matching has been corrected, and cpuplugd now uses correct string length in string comparing operations. Parsing errors no longer occur in the scenario described.
The cpuplugd did not use any mechanism to prevent multiple cpuplugd instances from starting. As a consequence, a race between the PID file creation and a daemon startup could result in multiple cpuplugd instances running concurrently. To resolve this problem, a file locking mechanism that uses the flock() function has been introduced in the cpuplugd code. Only one instance of cpuplugd is now allowed to run at the same time.
The cpuplugd had previously not implemented sanity checks regarding minimum and maximum values for valid CPU and memory intervals. If a configuration with incorrect intervals was used, the daemon could not work properly, and CPU and memory could not be used optimally. With this update, cpuplugd now includes CPU and memory sanity checks, ensuring its efficiency.
Due to a missing ferror() test, the lsreipl utility returned an error message when it attempted to read an empty sysfs file. With this update, the missing check has been added, and lsreipl no longer returns error messages when attempting to read an empty file.
The libzfcphbaapi library was missing some event thread cleanup code in the HBA_FreeLibrary() function. Therefore, the zfcp_ping tool could terminate unexpectedly with a segmentation fault if no on-line adapter was discovered. The missing event thread cleanup has been added in the code using the pthread_cancel and pthread_join functions. The zfcp_ping tool no longer crashes under these circumstances.
The s390utils-iucvterm package uses the grep command in its postinstall and postuninstall scripts but it was not dependent on the grep package. Therefore, error messages were displayed when installing s390utils-iucvterm. With this update, the grep package has been added as a prerequisite for s390utils-iucvterm. No error messages now occur during the package installation.
When scanning for active Logical Unit Numbers (LUNs) without the -a, --active option, the lsluns utility filtered a scan for well known LUNs with value 0xc101000000000000 and 0x0000000000000000, because the SCSI report luns command is sent only to these LUNs. As a consequence, the lsluns -a command did not show all active LUNs but only active well known LUNs. The lsluns utility has been modified to not filter LUNs when issued with the -a option, and it now shows all active LUNs.
The dasdinfo utility was missing a return code and the tool always returned exit code 0 even if an error had occured. This update adds the missing return code and the dasdinfo tool now returns correct return code values.
The s390utils-libzfcphbaapi package did not specify the correct location of the common library to the /etc/hba.conf configuration file. Therefore, s390utils-libzfcphbaapi failed to register with the /etc/hba.conf configuration file. With this update, the postinstall script adds the libzfcphbaapi /usr/lib64/ line to the /etc/hba.conf configuration file and thus registers the s390utils-libzfcphbaapi package.
The ziomon utility used the --output command line option in the code, although it was referred to as the --outfile option in the documentation. Using the --outfile option as suggested by documentation thus resulted in a ziomon failure. With this update, ziomon has been modified to accept the --outfile command line option as documented.
The ziomon utility did not check whether a debugfs file system is mounted on the /sys/kernel/debug/ directory. Therefore, if the mount point was a different directory, ziomon failed. The missing test is now included in ziomon, and it now works as expected: continues if a file system is mounted on the /sys/kernel/debug/ directory, or exits with the ziomon: Error: Debugfs not mounted on /sys/kernel/debug. error message if a file system is mounted on a different mount point.
To print parameters of the zipl utility for device-mapper multipath devices, zipl uses the zipl_helper.device-mapper script, which parses output of other programs. If any of these programs had locale dependent output, the script was unable to parse the output. Consequently, zipl terminated with the following error:
Script could not determine target parameters
To avoid this problem, the zipl_helper.device-mapper script has been modified to set up standard locale for the current process and all child processes. The problem described no longer occurs.


The latest versions of the Linux 2.6 scheduler provide the same CPU optimization functionality as the cpuplugd daemon does, without the negative effects of cpuplugd operations. Therefore, the cpuplugd daemon is now disabled on the system by default.
With this update, the cpuplugd daemon has been significantly improved:
  • A set of rules used by the cpuplugd daemon has been improved, and cpuplugd now provides more advanced control of the VM Resource Manager (VMRM) Cooperative Memory Management (CMM) memory balloon.
  • The daemon now also provides a history function, which allows an access to previous data.
  • Any data from the /proc/vmstat and /proc/meminfo files can now be used in cpuplugd rules and user-defined variables.
  • A new cpustat.total_ticks variable has been introduced, which simplifies user-defined CPU percentage calculations.
  • The process of timestamp generation has been simplified, and a bug with wrong timestamps and intervals due to incorrect counts with microseconds, has been fixed.
  • Previously, the daemon did not re-allocate and re-initialize the history data on a SIGHUP signal receipt. This could cause the daemon to terminate unexpectedly with a segmentation fault if the maximum history level increased. The history data is now re-allocated and re-initialized when the daemon is reloaded and maximum history level has changed.
  • The daemon used a specified update interval instead of the actual time to determine the duration of the sleep() function and for swap rate calculation. This could lead to incorrect data under certain circumstances. The cpuplugd daemon now uses the actual time in its calculations.
The chreipl tool has been improved and now includes the following modifications:
  • Support for re-IPL from multipath devices has been added.
  • Support for re-IPL from Named Saved System (NSS) has been added.
  • Additional kernel parameters now can be specified for the next re-IPL.
  • Support for auto target" has been added. For the ccw, fcp, and node targets, chreipl can automatically find the correct re-IPL target.
All users of s390utils are advised to upgrade to these updated packages, which fix these bugs and add these enhancements.