Coming clean on O_PONIES

The O_PONIES thing came up in the context of how ext3 behaves, how app writers wish that every filesystem behaved like ext3 (in the good ways , of course, not in the bad ways, oh no!) and how generally they’d like a pony with that, too, please. In other words, open your files with O_PONIES and the world is your oyster; the filesystem will grant your every wish.

It’s become the running joke among the filesystem developers I know, but as it turns out I was the one who coined it (I think?) Jeff thinks so too, which is what reminded me. Ted T’so thought it was Jeff, but he was 2 weeks behind the curve. Who knew I’d leave such a lasting impression.

$ grep O_PONIES OFTC-#linuxfs.txt | head -n 1
<sandeen> Mar 15 23:34:10 open(my_configfile, O_PONIES);

I made a tshirt, too:

O_PONIES

O_PONIES

But it was Val, with her impeccable sense of style, timing, and politics, who had the good sense to make a t-shirt with an extra inkjet t-shirt transfer I gave her, and wear it on photo day at LSF:

LSF Group Photo

LSF Group Photo

I wore mine on day 1, and other than a photo Matt Mackall took, there is no record.

But now you know the secret of the man behind the O_PONIES curtain!

fsync, sigh

As probably everyone who keeps up with linux has heard, ext4 eats data, puppies and babies.  Except, of course, that’s not really true.

The original slashdot headline was quite breathless, I’m sure, but in the end it ended up with a rather milquetoast “Apps That Rely On Ext3’s Commit Interval May Lose Data In Ext4” after someone rose to ext4’s defense.  …erm, or sent slashdot to a reeducation camp.

Well, welcome to Posix buffered IO.

Continue reading

A Hardware USB modem for Linux

UPDATE: Seems newer versions of this modem may no longer work. Other sites indicate this may be a country code setting or other issue. See end of post, and comments below.

For a long time, I wanted  to be able to run NCID to send caller ID information to my squeezebox, to my MythTV box, to my laptop via growl and NCIDStatusBar, etc – but the hangup was a decent modem.  PCI WinModems are largely useless; I have no desire to run binary blobs even if I happen to find one somewhere that works.  External serial modems are a possibility but it’s another AC adapter brick, more cables, and heck my server doesn’t even have a serial port.

So I was very pleased to find that Conexant has a new usb chipset (CX93010 + CX20548) which implements the USB CDC (Communication Device Class) standard.

I bought the Rosewill RNX-56USB modem from newegg.com, and with a minor patch, it’s all working beautifully. I find it a bit funny that in the age of fiber to the home, there’s finally a usable hardware modem again.

UPDATE: Steve, in comments below, points out:

Rosewill support confirms that recent shipments of the modem do not report CID due to an unknown change at the manufacturing level. They say it is out of their hands as the modem is not actually made by them.”

Well, that is a bummer indeed, although information seems sketchy at this point.  Try making sure you’ve set the proper country code with AT+GCI=<proper code>, for starters.

Finding kernel config(!) regressions with git-bisect

So I have this bug where kernel config A goes fast; kernel config B goes slow.  They are insanely different.  Where to start?

I’m trying this approach.  I diffed the two .configs, then used a  neato tool called splitpatch to break that patch into 100+ smaller patches, one per hunk.  Put the .config into a git repo and applied all the patches (used guilt to import them; probably there is a more straightforward way) and now I’m using git bisect… We’ll see how it goes.  Unfortunately “make oldconfig” wants to modify the .config a bit each time so it won’t be perfect, but hopefully this will get me there.

The world wants 32-bit inodes

So, the xfs filesystem really prefers to use 64-bit inode numbers on large filesystems; btrfs would like 64-bit inodes and ext4 is considering it as well.  Is the world ready for this?  not yet.  Running a tool written by Greg Banks over the binary directories in all x86 Fedora Rawhide packages, it comes up with:

4070 29.1% are scripts (shell, perl, whatever)
6598 47.2% don't use any stat() family calls at all
1829 13.1% use 32-bit stat() family interfaces only
1312  9.4% use 64-bit stat64() family interfaces only
 180  1.3% use both 32-bit and 64-bit stat() family interfaces

I need to correlate this with packages that actually use the st_ino stat field, but a spot-check so far includes postfix and sendmail.  :(  But, we have the technology, we can fix it!

On edit:  ugh, I forgot to scan the libraries.  It’s worse than I thought.

Wireless Guitar Hero Controller on a PC – Part 2

Got a new PS2->USB adapter, USB ID 0e8f:3013 and it works much better. It’s a no-name thing I found from an Amazon vendor, USB ID lists tell me it’s made by “GreenAsia”

input: USB Game Pa as /class/input/input1
input: USB HID v1.00 Joystick [USB Game Pa] on usb-0000:00:1d.0-2

Things generally work, though the range seems very short and occasionally buttons stop working – but I chalk the latter problem up to FoF so far, because if I reconfigure it, it magically starts working again.

I’m not sure what the range on this thing is supposed to be, but if I’m more than a few feet away from the receiver, things start getting dicey.  I still should just get a wired controller and be done with it.