The following topics are covered in this document:
Changes to the CentOS installation program (Anaconda)
Changes to drivers and hardware support
Changes to packages
The following section includes information specific to the CentOS installation program, Anaconda.
In order to upgrade an already-installed CentOS 3 system to Update 1, you must use yum to update those packages that have changed. The use of Anaconda to upgrade to Update 1 is not supported.
Use Anaconda only to perform a fresh install of CentOS 3 Update 1.
If you are copying the contents of the CentOS 3 Update 1 CD-ROMs (in preparation for a network-based installation, for example) be sure you copy the CD-ROMs for the operating system only. Do not copy the Extras CD-ROM, or any of the layered product CD-ROMs, as this will overwrite files necessary for Anaconda's proper operation.
These CD-ROMs must be installed after CentOS has been installed.
CentOS 3 Update 1 includes a new subdirectory of the RedHat directory present on CD-ROM #1. This subdirectory, named Updates, contains all packages that have been added or updated during a quarterly update. Anaconda has also been modified to search the Updates subdirectory during installations and upgrades.
This section contains general information not specific to any other section of this document.
The SCSI standard requires that all SCSI devices respond to Logical Unit Number (LUN) zero. Some SCSI devices fail when they are scanned for Logical Unit Numbers (LUNs) greater than zero. Other devices require that LUNs must be numbered sequentially.
The CentOS 3 Update 1 kernel contains a list of devices that have been tested and shown to work correctly when scanned for non-zero LUNs, and non-sequential LUNs. Only devices on this list are scanned by default. This default behavior can be overridden on a system-wide basis by adding the following entry to the /etc/modules.conf file:
options scsi_mod max_scsi_luns=255
After modifying modules.conf, it is necessary to rebuild the initial ramdisk file using the mkinitrd script. Refer to mkinitrd man page (using the command man mkinitrd) for more information about creating the initial ramdisk image.
When this option is used, the LUN numbers on the device must be assigned sequentially, starting with zero.
Notes on Application Compatibility in CentOS 3 Update 1
The POSIX standard defines interfaces to lock files or parts of files to ensure that they are not concurrently changed by other programs. The fcntl() interface with the F_GETLK, F_SETLK, and F_SETLKW interfaces can be used for this purpose. The standard defines that attempts to lock an already locked file from another process must fail. Also part of POSIX is the lockf() interface, which serves the same purpose. Not in POSIX, but falling into the same category, is the flock() interface.
The original kernel in the initial CentOS 3 release not only prevents locking of the file from other processes, it also prevents locking from other threads in the same process. This is not correct and does not correspond to the behavior in the 2.6 Linux kernel and correct POSIX semantics. The kernel update in CentOS 3 Update 1 introduces the correct behavior for programs using NPTL. There is no impact to programs that use LinuxThreads nor to programs that are not multi-threaded.
A side effect of the original CentOS 3 kernel is that the l_pid field, which is part of the flock structure which is returned by a call to fcntl() with the F_GETLK command, contains a kernel-internal number of the thread. With the CentOS 3 Update 1 kernel, this field contains the process ID for all threads of the process.
If a non-POSIX-compliant multi-threaded application uses the NPTL library (which is the default), and that application performs file locking with the fcntl() system call, it is possible that the application might not work as originally intended when the CentOS 3 Update 1 kernel is used. CentOS recommends that any such application be re-qualified on the updated kernel, and if a problem is encountered, one of the following courses of action should be taken:
1) Set the LD_ASSUME_KERNEL environment variable to "2.4.19" for the application process to prevent it from using the NPTL library. Note that if the application doesn't reset the LD_ASSUME_KERNEL environment variable, this setting is inherited by all child processes.
2) Modify the application so that it no longer expects behavior that is inconsistent with POSIX compliance. This will improve the program's overall portability.
CentOS believes that few (if any) multi-threaded applications will be negatively impacted by the file locking fixes contained in the updated kernel.
Similar problems exist with the kernel functionality that provides credentials for transport for Unix sockets and the System V message queues, semaphores, and shared memory. In the first case, calls such as:
getsockopt (fd, SOL_SOCKET, SO_PEERCRED, &caller, &optlen)
return information in the structure caller, which is of type struct ucred. This structure contains a field pid. In the original CentOS 3 kernel, this field was filled with a kernel-internal value representing the thread that sent the data. With CentOS 3 Update 1, the field correctly contains the process ID -- in other words, the same value for all threads in a process.
The struct msqid_s type, defined in <sys/msq.h>, which is used to get information about a System V message queue, contains the fields msg_lspid and msg_lrpid. Both fields previously contained a kernel-internal value, whereas now they correctly contain the PID of the process calling msgsnd() and msgrcv() respectively.
When the GETPID command, defined in <sys/sem.h>, is used with the semctl() function, the original CentOS 3 kernel returned a kernel-internal value. As of CentOS 3 Update 1, the returned value is the process ID.
The struct shmid_s type, defined in <sys/shm.h>, which is used to get information about a System V shared memory segment, contains the fields shm_lpid and shm_cpid. Both fields previously contained kernel-internal values; now they correctly contain the PID of the process performing the last operation, and creating the segment, respectively.
This update includes bug fixes for a number of drivers. The more significant driver updates are listed below. In some cases, the original driver has been preserved under a different name, and is available as a non-default alternative for organizations that wish to migrate their driver configuration to the latest versions at a later time.
The migration to the latest drivers should be completed before the next CentOS update is applied, because in most cases only one older-revision driver will be preserved for each update.
IBM ServeRAID (ips driver)
The scsi/ips driver has been updated from 6.00.26 to 6.10.52
The older driver has been preserved as addon/ips_60026
LSI Logic RAID (megaraid driver)
The scsi/megaraid driver has been updated from v1.18j to v1.18k
The scsi/megaraid2 driver has been updated from v2.00.5 to v2.00.9
C-Media PCI audio driver (cmpci driver)
The sound/cmpci driver has been updated from Revision 5.64 to 6.36
The older driver has been preserved as addon/cmpci_564
Intel PRO/1000 (e1000 driver)
The e1000 driver has been updated from 5.1.11-k1 to 5.2.20-k1
Intel PRO/100 (e100 driver)
The e100 driver has been updated from 2.3.13-k1-1 to 2.3.30-k1
This section contains listings of packages that have been updated or added from CentOS 3 as part of Update 1.
These package lists include packages from all variants of CentOS 3. Your system may not include every one of the packages listed here.
The following packages have been updated from the original release of CentOS 3:
The following new packages have been added to CentOS 3 Update 1:
( ia64 )