I am submitting the following as a fast-track on behalf of myself, with a timeout set for 06/16/2009. Patch/micro binding is requested.
------------- 1. Introduction 1.1. Project/Component Working Name: EOF UCB Device Names 1.2. Name of Document Author/Supplier: Author: Jerry Gilliam 1.3. Date of This Document: 06/05/2009 1.4. Name of Major Document Customer(s)/Consumer(s): 1.4.1. Solaris PAC 1.4.2. PSARC 1.4.3. Chris Armes 1.4.4. Solaris Sustaining 1.5. Email Aliases: 1.5.1. Responsible Manager: Michael.Pogue at sun.com 1.5.2. Responsible Engineer: Jerry.Gilliam at sun.com 1.5.3. Marketing Manager: 1.5.4. Interest List: Sriram.Popuri at sun.com, Chris.Horne at sun.com, Jan.Setje-Eilers at sun.com 2. Project Summary 2.1. Project Description: EOF of UCB device names 3. Business Summary 3.1. Problem Area: Performance issues related to boot and device naming with ucblinks 3.2. Market/Requester: Escalations by Bloomberg Financial and other customers with large installations 3.2 Details A large configuration was simulated with a pseudo driver used to configure 16k disk devices. Devfsadm required 25 minutes in this configuration and ucblinks 5 minutes on top of that. The number of /dev/[r]sd names generated by ucblinks alone was 262k and since these names are at the top /dev level, greatly contribute to system sluggishness. For example, > 5 minute logins. With the /dev/[r]sd names removed, system responsiveness was as expected. 4. Technical Description: 4.1. Details: Since committed interfaces can only be obsoleted in a minor release and a way to provide relief to existing customers is required, a two-step process is proposed. In the current minor release, complete the EOF, removing ucblinks, and provide a note in the next available release with intention to obsolete said interfaces. For patch/macro release relief, it is proposed to introduce a service to manage ucblinks: svc:/system/ucb-device-names. With a default of disabled, the out-of-the box experience will be improved with no ucblinks generated and existing ucb compatible names removed. Enabling the service will generate ucb compatible names by running ucblinks, for any customer who desires this compatibility to be retained. The set of UCB compatible names is: UCB link name Standard name Device type /dev/[r]fd%d /dev/[r]diskette fd floppy drives /dev/[r]sr%d /dev/[r]dsk/* sd/atapi cdrom drives /dev/[r]sd%d /dev/[r]dsk/* sd disk drives /dev/[r]n%d /dev/rmt/* st tape drives Support for the following is removed: xd, xt, xy The following appear to be ucb compatible names, with code within ucblinks building them, but devfsadm builds them also so that removing the ucblinks code will not affect these names: /dev/fb%d /dev/fbs/* framebuffers /dev/tty[d]%d /devices link serial devices /dev/tty[a-z] /devices link serial devices 4.2. Bug/RFE Number(s): 6785226 devfsadm -C does not help to clean up the device tree. 4.5 Interfaces: Minor release: -------------- /usr/ucb/ucblinks(1B) Obsolete ucblinks end-of-feature /dev/[r]fd%d Obsolete floppy device /dev names /dev/[r]sr%d Obsolete cdrom /dev names /dev/[r]sd%d Obsolete disk /dev names /dev/[r]n%d Obsolete tape /dev names Patch/Macro release: -------------------- svc:/system/ucb-device-names Uncommitted service, disabled by default /lib/svc/method/ucb-device-names Proj. Priv. service method /var/svc/manifest/system/ Proj. Priv. service manifest ucb-device-names.xml /usr/ucb/ucblinks(1B) -C Uncommitted ucblinks cleanup The above patch/micro interfaces are not to be carried forward to the minor release. 4.6. Doc Impact: Minor release: -------------- ucblinks(1B) man page to be removed. Patch/Macro release: -------------------- ucblinks(1B) man page update - suggested changes provided. 4.12. Dependencies: There are no uses made of any /dev ucb compatible name within solaris. The base install of OpenSolaris does not include /usr/ucb/ucblinks. Some tools such as iostat generate device names using the <driver><instance> form, equivalent to a ucb device name. iostat does have an option (-n) to generate reports using /dev/[rd]dsk device names. [2] The same <driver><instance> names are logged along with device errors in the system log and one way to map such names to the physical device has been via the /dev ucb compatible name. Libdevinfo provides a method to do the same mapping. This is used by iostat(1M) and is available for usr by other tools as needed. [3] 5. Reference Documents: [1] PSARC/1996/430 iostat(1M) enhancements for device statistics [3] PSARC/2006/519 Metadevice Names in iostat/vmstat Output [2] PSARC/2000/310 libdevinfo devlinks interfaces 6. Resources and Schedule: http://tethys.sfbay/export/ws/onnv-ucb-svc 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open SunOS/BSD Compatibility Package Commands ucblinks(1B) NAME ucblinks - adds /dev entries to give SunOS 4.x compatible names to SunOS 5.x devices SYNOPSIS /usr/ucb/ucblinks [-e rulebase] [-r rootdir] [-C] | svc:/system/ucb-device-names DESCRIPTION ucblinks creates symbolic links under the /dev directory for devices whose SunOS 5.x names differ from their SunOS 4.x names. Where possible, these symbolic links point to the device's SunOS 5.x name rather than to the actual /devices entry. ucblinks does not remove unneeded compatibility links; these must be removed by hand. ucblinks should be called each time the system is reconfiguration-booted, after any new SunOS 5.x links that are needed have been created, since the reconfiguration may have resulted in more compatibility names being needed. In releases prior to SunOS 5.4, ucblinks used a nawk rule- base to construct the SunOS 4.x compatible names. ucblinks no longer uses nawk for the default operation, although nawk rule-bases can still be specifed with the -e option. The nawk rule-base equivalent to the SunOS 5.4 default operation can be found in /usr/ucblib/ucblinks.awk. The svc:/system/ucb-device-names service controls whether | the system runs ucblinks(1B) on reconfigure boot. When | enabled, ucblinks(1B) is run, both at that time and on | subsequent reconfiguration boots. When disabled, ucblinks(1B) | is run in clean-up (-C) and ucb device names will no longer | be reconstructed on reconfigure boot. | | The svc:/system/ucb-device-names service is by default disabled. | EXAMPLES | | Example 1: Querying the state of the service | | # svcs system/ucb-device-names | STATE STIME FMRI | disabled 13:19:49 svc:/system/ucb-device-names:default | | Example 2: Enabling the service | | # svcadm enable system/ucb-device-names | | Example 2: Enabling the service | | # svcadm disable system/ucb-device-names | OPTIONS -e rulebase Specify rulebase as the file containing nawk(1) pattern-action statements. -r rootdir Specify rootdir as the directory under which dev and devices will be found, rather than the standard root directory /. | -C Clean up /dev ucb compatible device names. | | FILES /usr/ucblib/ucblinks.awk sample rule-base for compatibil- ity links ATTRIBUTES See attributes(5) for descriptions of the following attri- butes: ____________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Availability | SUNWscpu | |_____________________________|_____________________________| SEE ALSO devlinks(1M), disks(1M), ports(1M), tapes(1M), attributes(5)