OpenSolaris

Printable Version Enter a New Search
Bug ID 6814263
Synopsis sczsmf validate does fail if the locale used in global zone is not available in the non-global zone
State 10-Fix Delivered (Fix available in build)
Category:Subcategory suncluster:ha-zones
Keywords colorado
Responsible Engineer Thorsten Frueauf
Reported Against 1.0_06
Duplicate Of
Introduced In
Commit to Fix 1.0_07
Fixed In 1.0_07
Release Fixed colorado-1(1.0_07)
Related Bugs
Submit Date 6-March-2009
Last Update Date 8-April-2009
Description
If a native non-global zone is getting created and installed on Solaris 10 and
Solaris Express (aka Nevada), it will inherit the locales installed within
the global zone. So while the default locales do not need to be set to match
between global zone and non.global zones, the locale itself would be
available.

OpenSolaris does not have a native brand-type - the default there is the
ipkg brand type. If a ipkg non-global zone is getting created and installed
on OpenSolaris, it will not inherit the locales installed within the
global zone. Instead it has the very basic set (like C, POSIX), but none
else. Even the locale command is not getting installed.

On such a default installation, if you perform

zlogin <zonename> <command>

you will see a message send to stderr like:

en_US.UTF-8: unknown locale

if en_US.UTF-8 is the default locale within the global zone.

And in most cases stderr is not being processed. But within the validate method
for sczsmf there is one check to see if the SMF service being provided in the
config file exists and all of the services it depends on are online:

[...]
        if STATE=`${ZLOGIN} ${ZONE} svcs -Hd ${SERVICE} 2> ${LOGFILE} | /usr/bin/awk '{if ($1 != "online") print $3 " which is " $1}'`
        then
           if [ -s "${LOGFILE}" ]
           then
                # e.g. svcs: Pattern 'X' doesn't match any instances
                log_message error validate
                rc_validate=1
           fi
[...]

And here the output to stderr is captured and evaluated. Normally it is expected
to be empty - if it is not it triggers validate to fail.

Since the zlogin will always create the "unknown locale" message to stderr,
the code will always think the provided SMF service does not exist and
error out.
Work Around
N/A
Comments
N/A