Hand-building an updated upstream kernel module for your (Fedora) kernel

Suppose, not hypothetically , that you'verun into an issue where a distribution kernel update has a new bugin some functionality that's important to you, for instance Fedora's4.20.x kernels fail to see one fan sensor on your Asus Prime Z370-Amotherboard .After some work, you identify the issue, report it, and the fixis made upstream .Now you would like to test this upstream fix in your kernel.

The proper way to do this


My temptation of getting a personal laptop

Despite being a computer person and a sysadmin, I don't have a personallaptop; my personal computing is a desktop and, these days, an iPad . The big reason forthis is that most of the time, I don't really have a use for a laptop(well, a personal use, especially since a laptop will never be myprimary machine ). However, when I do have sucha use and take my work laptop home, Ialways wind up getting reminded of how nice it


A little appreciation for Vim's 'g' command

Although I've used vim for what is now a long time now, I'm stillsomewhat of a lightweight user and there are vast oceans of usefulvim (and vi) commands that I either don't know at all or don'treally remember and use only rarely. A while back I wrote down some new motion commands that I wanted to remember , and now I have a new command that I wantto remember and use more of. That is vim's g command (and with


A bit of Sun's history that still lingers on in Illumos

The uname command (and system call )exist to give you various information about the machine you're on.For example, what Unix it runs, which is handy if you have scripts(or programs) that are run on multiple Unixes where you want to dodifferent things.

(This is our situation with our two concurrent sets of fileservers, the OmniOS ones and the Linux ones .)

The result from ' uname -s ', the name of the operating system, ispretty straightforward (unlike some of


What getopt package I use for option handling in my Go programs

One of Go's famous issues is that the standardlibrary's flag package doesn'thandle command line options in the normal Unix getopt style. WhenI started with Go this quite irritated me, and then later I gaveup and decided to use flag anyway . Sincethen, I've changed my mind again and now all of my recent Go programsuse a third party package that gives me more Unix-style optionhandling. There are many of these packages; the one that I settledon is


ZFS On Linux's kernel modules issues are not like NVidia's

In the Hacker News discussion of my entry on thegeneral risk to ZFS from the shift in its userbase towards ZFS onLinux , a number of people suggestedthat the risks to ZFS on Linux were actually lowsince proprietary kernel modules such as NVidia's GPU drivers don'tseem to have any problems dealing with things like the kernel makingvarious functions inaccessible or GPL-only. I have two views on this,because I think that the risks are a bit different and less obviousthan what they initially look like


How having a metrics system centralized information and got me to check it

We recently had a little incident with one of the SSDs on our newfileservers . To condense the story,ZFS started detecting a few checksum errors over time (starting January13th), we assumed they were a one-time thing, we arranged to scrub thepool this weekend, and during the scrub ZFS discovered dozens morechecksum errors (and faulted the SSD). With the Linux kernel reportingno drive errors, we turned to smartctl to see if there was anythingin the SMART attributes. And indeed


Go 2 Generics: some features of contracts that I like

A major part of the Go 2 generics draft design isits use of contracts to specify constraints on what types areaccepted by generic functions, which are essentially formalizedfunction bodies. On the one hand I think that contracts today aretoo clever , but on the other hand I thinkthat interfaces are not the right model for type constraints . Although the existing first Go 2generics draft is probably dead at this point, since it's clearthat the community is split, I still feel like writing down somefeatures of


The potential risk to ZFS created by the shift in its userbase

The obvious conclusion we can draw from FreeBSD ZFS's shift tobeing based on ZFS on Linux is that thecenter of gravity of open source ZFS development has shifted to ZFS on Linux . FreeBSD ZFS is shiftingits upstream because ZFS on Linux is increasingly where new developmenthappens. A more imprecise and deeper conclusion is that in somesense, the ZFS userbase as a whole is increasingly shifting toLinux.

(It may be that the total numbers of people using ZFS on FreeBSDand Illumos is higher than the people using


How to handle Unicode character decoding errors depends on your goals

In a comment on my entry mulling over DWiki's Python 3 Unicodeissues and what I plan to do about them ,Sean A. asked a very good question about how I'm planning to handleerrors when decoding things from theoretical UTF-8 input:

Out of curiosity, why use backslashreplace instead ofsurrogateescap? (I ask because it seems to me that surrogateescapealso loses no information, is guaranteed to work with any binaryinput, and is designed for reading unknown encodings.)

Oh. And is trivial