Well, Safari 4 final is upon us and it is a good bit different than the betas I've/we've been using for the past few months. The UI is more polished and noticeably the default tab style from beta, where tabs were presented in the title-bar of the window, has gone away. I'd imagine there were more than a few complaints about the ugliness of this. It was nice for space saving, but ultimately with just a few tabs open, you would no longer be able to read the full title-bar of the window easily. So back to the old style we go.
Cluster ssh on Mac OS X
Link: http://code.google.com/p/csshx/
I wish I would've put forth a little more effort toying with cluster ssh'ing when I was at my former place of employment, but I was happy enough with for-loops and ssh keys. On my new job, there are far too many hosts to go through doing that. So cluster ssh'ing appears to be an invaluable tool for my day-to-day activities. There's a recent project that caught my eye. It's essentially an OS X port of cssh to use Terminal.app rather than X11 xterms.
Installation is a snap. Just untar. Name your clusters in /etc/clusters and run csshX cluster. It'll spawn however many ssh sessions in separate windows and then tiles. Input in the master window goes to all the child windows.
Use with care of course.
Not happy with the Safari 4 redesigned UI elements?
I wasn't at first either and sought out these settings to revert back to the pre-4.0 way of doing things. There are plenty of copies out there of this, but I figured it'd be good for posterity to repost, just in case I ever easily want them again. As a side note, I used the first three of the settings on my workstation at home while my laptop for work I kept as the default redesigned settings. It's not so bad after a while. The only thing that annoys the hell out of me is when clicking on tabs I find myself accidentally moving the window around. Oh well, all in the name of 'progress'.
Move the tab bar back into the window:
defaults write com.apple.Safari DebugSafari4TabBarIsOnTop -bool NO
Move the "Add Bookmark" and "Stop/Reload" buttons out of the URL field:
defaults write com.apple.Safari DebugSafari4IncludeToolbarRedesign -bool NO
Restore the blue loading bar behind the URL field (yes, you need both of these):
defaults write com.apple.Safari DebugSafari4IncludeToolbarRedesign -bool NO
defaults write com.apple.Safari DebugSafari4LoadProgressStyle -bool NO
Switch off the new URL autocomplete menu and use the original one:
defaults write com.apple.Safari DebugSafari4IncludeFancyURLCompletionList -bool NO
Turn off the new Google suggest menu:
defaults write com.apple.Safari DebugSafari4IncludeGoogleSuggest -bool NO
Remove Cover Flow from the bookmarks view:
defaults write com.apple.Safari DebugSafari4IncludeFlowViewInBookmarksView -bool NO
Disable the dimming when you click on a Top Site and it scales the screenshot up to fill the screen:
defaults write com.apple.Safari DebugSafari4TopSitesZoomToPageAnimationDimsSnapshot -bool NO
Disable Top Sites feature completely:
defaults write com.apple.Safari DebugSafari4IncludeTopSites -bool NO
Lengthy boot-up after crash, thanks ZFS?
One of my X4500s recently had a little lockup. It acts as an NFS file server and was pretty active I'm sure at the time. Unfortunately, being unresponsive isn't an option. So I gave it a power cycle. Losing a major file server is bad enough but Solaris 10 is a bit of a black box on boot-up and when ZFS is in the mix, it just gets bad. Over an hour on and I'm still staring at a 'Mounting' message rather than a login prompt.
SunOS Release 5.10 Version Generic_138889-03 64-bit Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Hostname: xyz Reading ZFS config: done. Mounting ZFS filesystems: (1/6)
Nothing to do but wait. I've done some searching but I can't find much information on what Solaris is actually doing at this point. I'm assuming some consistency check but it would sure be nice if it were either a) more verbose and/or b) done after going into multi-user mode. Anybody else ever had similar trouble with their X4500s?
UPDATE: I did get in it by rebooting with the "-m milestone=none" boot arguments. After that, remove /etc/zfs/zpool.cache. Then you can go and "svcadm milestone all". Now I have a working system but the pool is a bit sketchy. The pool that is the problem wants to resilver immediately and it won't mount any ZFS filesystems on the pool. Ugh.
UPDATE #2: After a couple of days poking Sun support, a software engineer looked at our broken boxen and indeed did find a bug to patch. It looks like a device that went away and came back may have prevented the pool from being able to be mounted by locking something somewhere. We have been provided with some interim fixes. I'm not sure if the numbers will matter to anyone since they're not publicly available yet I don't think but, we were provided with T139580-03 and IDR140222-12. After patching and rebooting, we were able to detach the ghost device and mount the filesystems successfully.
IPv6 configuration in OS X
Since my prior post when I announced I've gone IPv6, I've had some time to setup all my client PCs. Well, try to anyway. It seems that in Mac OS X 10.5.6 (and likely a good bit prior), when you're attempting to statically assign an IPv6 address to an interface via the Network preferences GUI, it will appear all fine and good but not actually apply it.
In fact, it will strip the interface of any IPv6 address. Leaving you cold and shivering. Changing it to get its address automatically will work just fine either by router advertisements or using a self-assigned address, but that's the extent of System Preferences' help. I haven't seen this as a widely reported problem but I get the same situation on both my Mac Pro and MacBook Pro, wired or wireless.
I suspect that some piece of software might be interfering, but I've uninstalled VMWare and Tunnelblick with no change in behavior. Going to keep searching for an answer but if it really is a bug, probably isn't much I can do aside from contact Apple support.
IPv6 sexified!
All my LQX services are now natively available via IPv6, including this here lowly blog.
I think we all know the potential advantages that widespread support of IPv6 offers. The obstacle is that despite these advantages, none of them have any monetary motivation behind them. Thus the stagnant state of IPv6 today. But from my view, I do see some movement. The US government threw its weight behind it a few years ago. Most network providers offer some form of IPv6 service.
The more ordinary people that start to offer average web sites via IPv6, the more difficult it will be for the last-mile providers to ignore IPv6, who are really the primary roadblock for widespread adoption. So, if you have the means, now should be your time to throw the services you offer onto IPv6!
Marvell MV88SX6081 troubles under newer kernels...
So, I upgraded one of my personal boxes' kernel today for the first time in 2.5 years. It was running a rather shaky 2.6.17 vserver kernel. In order to support IPv6 on my vservers, I needed to upgrade to linux-vserver 2.3+. So that is what I did, upgrading my kernel to 2.6.28 in the process. Unfortunately as you'd expect when making such a massive version jump, there were lots and lots of driver changes and one of which can give you a severe headache.
This particular headache was centered around your favorite SATA card and mine... the Marvell MV88SX6081. I've written about this card before in years past. It's the model of card that is contained within the innards of Sun X4500s. I'm not aware of the whole sordid story but it definitely appears that Marvell sucks at implementation and apparently doesn't help at all with the Linux drivers. Who uses that Linux crap anyway? The error in question is random drive timeouts presenting themselves as such:
[11363.029485] ata5.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen
[11363.029495] ata5.00: cmd 25/00:08:1f:ce:b7/00:00:1f:00:00/e0 tag 0 dma 4096 in
[11363.029496] res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x4 (timeout)
[11363.029500] ata5.00: status: { DRDY }
[11363.029510] ata5: hard resetting link
[11363.502233] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
[11363.550271] ata5.00: configured for UDMA/133
[11363.550287] ata5: EH complete
It freezes up your I/O in the process. This server ran for 2.5 years straight prior to this on 2.6.17 and never exhibited this issue. After much Googling and a few dead-ends, I stumbled upon this gem of a thread. The current maintainer (or at minimum honorary) of all things Marvell, Mark Lord tracked down the problem with many user's reports. According to them, it's all in a single line of code in drivers/ata/sata_mv.c that results in a race condition.
The patch can be found here.
So if you're running 2.6.28, patch this single line and all will be fixed. At least, I hope so. I'm about to reboot with the effectively 6 byte patch. Big round of thanks to Mark Lord.
P.S. Thanks Alan Cox for adamantly rejecting it could have anything to do with the kernel or driver despite the fact that evidence pointed to the contrary. I also love how there was never a response after Mark discovered the issue really was in the driver.
As the world turns...
A recent upgrade to portage has forced me to become more aware of what switches I'm running it with. For a long, long time, to get an upgrade system I've just been doing a handy "emerge world". This has served me well for years. Doesn't quite work with the latest portage. The result you get with a straight 'world' typically is a bunch of rebuilt packages that as far as I can tell are pretty needless.
Some people have probably been doing this for years, but I've found that an 'emerge -uDNav world' is what works best. Dissecting this from the man page produces:
--update (-u)
Updates packages to the best version available, which may not always be the highest version number due to masking for testing
and development. This will also update direct dependencies which may not be what you want. Package atoms specified on the
command line are greedy, meaning that unspecific atoms may match multiple installed versions of slotted packages.
--deep (-D)
This flag forces emerge to consider the entire dependency tree of packages, instead of checking only the immediate dependen-
cies of the packages. As an example, this catches updates in libraries that are not directly listed in the dependencies of a
package. Also see --with-bdeps for behavior with respect to build time dependencies that are not strictly required.
--newuse (-N)
Tells emerge to include installed packages where USE flags have changed since compilation. USE flag changes include:
A USE flag was added to a package. A USE flag was removed from a package. A USE flag was turned on for a package. A USE
flag was turned off for a package.
USE flags may be toggled by your profile as well as your USE and package.use settings.
--ask (-a)
Before performing the action, display what will take place (server info for --sync, --pretend output for merge, and so
forth), then ask whether to proceed with the action or abort. Using --ask is more efficient than using --pretend and then
executing the same command without --pretend, as dependencies will only need to be calculated once. WARNING: If the "Enter"
key is pressed at the prompt (with no other input), it is interpreted as acceptance of the first choice. Note that the input
buffer is not cleared prior to the prompt, so an accidental press of the "Enter" key at any time prior to the prompt will be
interpreted as a choice!
--verbose (-v)
Tell emerge to run in verbose mode. Currently this flag causes emerge to print out GNU info errors, if any, and to show the
USE flags that will be used for each package when pretending. The following symbols are affixed to USE flags in order to
indicate their status:
Symbol Location Meaning
--------------------------------------------------------------
- prefix not enabled (either disabled or removed)
* suffix transition to or from the enabled state
% suffix newly added or removed
() circumfix forced, masked, or removed
Obviously, it's the -uD that does most of the heavy lifting that a straight 'emerge world' misses. After doing this and a revdep-rebuild, you're pretty golden and up-to-date.