Un(un)mountable file system

After hitting this bug (yes, again and again) I had to unmount the broken file system and run fsck (twice). But then I apparently hit anoter bug (or a feature?) – I could not mount the file system back.

xeon# mount /dev/dsk/c2d0s3 /export/docs
mount: /dev/dsk/c2d0s3 is already mounted or /export/docs is busy

Neither pwdx not lsof showed any processes using /export/docs. The solution was to recreate the directory:

xeon# rm -rf docs
xeon# mkdir docs
xeon# mount /dev/dsk/c2d0s3 /export/docs (after a loooong pause)
xeon# mount | fgrep docs
/export/docs on /dev/dsk/c2d0s3 read/write/setuid/devices/intr/largefiles/logging/xattr/onerror=panic/dev=1980043 on Tue Jul  1 01:07:08 2008

Unkillable process

Snv_92 has been entertaining me since I upgraded from quite stable snv_88. I’m hitting a bug after a bug. (See here).

This is the latest – unkillable process, which can’t be killed with kill -9 or zone reboot. Reboot just hangs. Truss ends up with:

xeon# kill -9 22131
xeon# ps -ef | fgrep 22131
root 22728 5471 0 00:49:27 pts/5 0:00 fgrep 22131
alekz 22131 1 0 20:48:30 zoneconsole 0:03 /opt/sfw/lib/firefox/firefox-bin -P Sun –no-remote
xeon# truss -p 22131
^Ctruss: unanticipated system error: 22131

dtrace shows nothing. The only workaround is to reboot the entire system.

See also:

Revenge of the unkillable process
Unkillable process
Bug ID 6455727

Hard drives: Enterprise vs. Desktop

What to choose for a home server? The most important difference is not the accelerometers or MTBF but whether the disks will be used in RAID’s.

An excerpt from Western-Digital FAQ:

When an error is found on a desktop edition hard drive, the drive will enter into a deep recovery cycle to attempt to repair the error, recover the data from the problematic area, and then reallocate a dedicated area to replace the problematic area. This process can take up to 2 minutes depending on the severity of the issue. Most RAID controllers allow a very short amount of time for a hard drive to recover from an error. If a hard drive takes too long to complete this process, the drive will be dropped from the RAID array. Most RAID controllers allow from 7 to 15 seconds for error recovery before dropping a hard drive from an array. Western Digital does not recommend installing desktop edition hard drives in an enterprise environment (on a RAID controller).

Western Digital RAID edition hard drives have a feature called TLER (Time Limited Error Recovery) which stops the hard drive from entering into a deep recovery cycle. The hard drive will only spend 7 seconds to attempt to recover. This means that the hard drive will not be dropped from a RAID array.

If you install a RAID edition hard drive in a desktop computer, the computer system may report more errors than a normal desktop hard drive (due to the TLER feature). Western Digital does not recommend installing RAID edition hard drives into a desktop computer environment.

Source: What is the difference between Desktop edition and RAID (Enterprise) edition hard drives?

SqueezeCenter and Compress::Zlib

After upgrading to Nevada b92 SqueezeCenter refused to start with the following error:

The following modules failed to load: Compress::Zlib

# perl -MCPAN -e shell
cpan> install Compress::Zlib
. . .
Module [Compress::Zlib] failed to load: is only available with the XS version
. . .

But the actual problem is Scalar::Util. To solve the problem reinstall Scalar::Util and then Compress::Zlib. Use force install if CPAN says that the latest version is already installed:

# perl -MCPAN -e shell
. . .
cpan[1]> install Scalar::Util
CPAN: Storable loaded ok (v2.12)
Going to read /var/tmp/cpan/Metadata
Database was generated on Tue, 24 Jun 2008 10:02:57 GMT
Scalar::Util is up to date (1.19).
cpan[2]> force install Scalar::Util
. . .
cpan[3]> force install Compress::Zlib
. . .

Sources: whirlpool.net.au and Usenet forums.

X libs and X fonts

Alan Coopersmith wrote :

FreeType2 is what converts a TTF or other font file into a pattern of bits displayed on the screen, but it has lots of flags that control how that’s done (anti-aliasing, hinting, LCD optimization, etc.).

Xft2 is the library that calls FreeType to get a bit pattern and then displays that bit pattern on the X server, via either the Render extension or plain Xlib (but plain Xlib is slow).

fontconfig is the library that finds /usr/X11/lib/X11/fonts/TTF/Times.ttf when you ask for “Times Roman 12”. (It’s called by either Xft2 or pango, I forget which.)

pango is the library that calls Xft with a list of glyphs and locations to display them at, after determining what ordering and spacing they should be laid out in, and what glyphs to display for a given character string (which is much easier for English than for languages like Arabic
or Hindi).

GTK+ is the library that applications call to draw their interface on screen (the toolkit), and it calls pango to draw the text portion of those interfaces.

I’m not sure if cairo calls pango or goes direct to Xft2.

Firefox 3.0 and Solaris

Just a brain dump.

SqueezeCenter 7.1 under Solaris

The idea was to use “bare” SqueezeCenter without bundled CPAN (the CPAN directory was moved away) modules, Solaris 11 (or Nevada build 88) and supplied with Solaris PERL and MySQL.

Then if you start slimserver.pl the errors will let you know which CPAN modules to install. For example:

The following modules failed to load: version JSON::XS YAML::Syck GD
. . .
Can’t locate JSON::XS.pm in @INC (@INC contains: squeezecenter-7.1-19407-noCPAN/CPAN/arch/5.8/i86pc-solaris-64int

Or For Nevada b95:

The following CPAN modules were found but cannot work with SqueezeCenter:
File::Temp (loaded 0.14, need 0.17)
I18N::LangTags (loaded 0.29, need 0.35)

To fix this problem you have several options:
1. Install the latest version of the module(s) using CPAN: sudo cpan Some::Module
2. Update the module’s package using apt-get, yum, etc.
3. Run the .tar.gz version of SqueezeCenter which includes all required CPAN modules.

Usually, the bundled CPAN is not up to date. So, let’s install it first:

# perl -MCPAN -e shell
cpan[1]> install Bundle::CPAN
. . .
cpan[2]> quit

To install (or upgrade) a module run the following:

# perl -MCPAN -e shell
cpan[1]> install JSON::XS

The only exception is Encode/Detect/Detector.pm or Encode::Detect::Detector. It’s has not being touched by the developer for many years and is not recommended for use. The module can be compiled with c++ or g++ (instead of used by default cc or gcc), but with a lot of pain and manual intervention. The easiest way is to get rid of it completely:

  • Remove Encode::Detect::Detector from modules.conf (in the root directory of SqueezeCenter)
  • Remove or comment the following line in Slim/Utils/Unicode.pm:
    use Encode::Detect::Detector;

What process is using this port?

If lsof is installed in your system:

xeon# lsof 2>/dev/null | fgrep :telnet
telnet    18409    alekz    4u  IPv4 0xffffff0e3b19c740        0t0        TCP xeon:52431->10.0.0.1:telnet (UknownState_-2094513781)

xeon# lsof 2>/dev/null | fgrep :8080
firefox-b   699    alekz   52u  IPv4 0xffffff02db1e0780   0t110637        TCP xeon:51567->dmz:8080 (UknownState_-2094513781)
firefox-b   699    alekz   67u  IPv4 0xffffff0e3b0e06c0   0t127870        TCP xeon:47231->dmz:8080 (UknownState_-2094513781)
squid      2778   nobody    8u  IPv4 0xffffff01dc8ce080        0t0        TCP *:8080 (UknownState_-359969560)
squid      2778   nobody   22u  IPv4 0xffffff01dc6d36c0   0t110637        TCP dmz:8080->xeon:51567 (UknownState_-2094513781)
squid      2778   nobody   41u  IPv4 0xffffff01dc8c26c0   0t127870        TCP dmz:8080->xeon:47231 (UknownState_-2094513781)

If lsof is not installed:

  • Run pfiles /proc/* | less
  • Search for port:
    • Press </>
    • Type port: 23
    • Press <Enter>

The result may look like:

18409:  telnet 10.0.0.1
. . .
4: S_IFSOCK mode:0666 dev:318,0 ino:42212 uid:0 gid:0 size:0
O_RDWR|O_NDELAY
SOCK_STREAM
SO_OOBINLINE,SO_SNDBUF(49152),SO_RCVBUF(49640)
sockname: AF_INET 10.0.0.2  port: 52431
peername: AF_INET 10.0.0.1  port: 23
~
~
~