Skip to content

Instantly share code, notes, and snippets.

@dreamcat4
Created July 25, 2014 10:11
Show Gist options
  • Save dreamcat4/60cf2aa0e93781a29cc2 to your computer and use it in GitHub Desktop.
Save dreamcat4/60cf2aa0e93781a29cc2 to your computer and use it in GitHub Desktop.
swapon: /dev/zvol/pool0/swap: Operation not supported by device
freenas ~/ root~$ zfs create -o org.freebsd:swap=on -o checksum=off -V 2G pool0/swap
freenas ~/ root~$ swapon /dev/zvol/pool0/swap
swapon: /dev/zvol/pool0/swap: Operation not supported by device
freenas ~/ root~$ truss swapon /dev/zvol/pool0/swap
mmap(0x0,32768,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366136320 (0x80061a000)
issetugid(0x800819b80,0x7fffffffefd3,0x40,0x0,0xffff80080081abad,0x0) = 0 (0x0)
lstat("/etc",{ mode=dr-xr-xr-x ,inode=2,size=2560,blksize=4096 }) = 0 (0x0)
lstat("/etc/libmap.conf",{ mode=-rw-r--r-- ,inode=273,size=47,blksize=4096 }) = 0 (0x0)
open("/etc/libmap.conf",O_RDONLY,00) = 3 (0x3)
fstat(3,{ mode=-rw-r--r-- ,inode=273,size=47,blksize=4096 }) = 0 (0x0)
mmap(0x0,47,PROT_READ,MAP_PRIVATE,3,0x0) = 34366169088 (0x800622000)
close(3) = 0 (0x0)
lstat("/usr",{ mode=drwxr-xr-x ,inode=75072,size=512,blksize=4096 }) = 0 (0x0)
lstat("/usr/local",{ mode=drwxr-xr-x ,inode=83669,size=512,blksize=4096 }) = 0 (0x0)
lstat("/usr/local/etc",{ mode=lrwxr-xr-x ,inode=84177,size=15,blksize=4096 }) = 0 (0x0)
readlink("/usr/local/etc","../../etc/local",1023) = 15 (0xf)
lstat("/etc",{ mode=dr-xr-xr-x ,inode=2,size=2560,blksize=4096 }) = 0 (0x0)
lstat("/etc/local",{ mode=drwxr-xr-x ,inode=368,size=1536,blksize=4096 }) = 0 (0x0)
lstat("/etc/local/libmap.d",0x7fffffffc560) ERR#2 'No such file or directory'
munmap(0x800622000,47) = 0 (0x0)
open("/var/run/ld-elf.so.hints",O_RDONLY,057) = 3 (0x3)
read(3,"Ehnt\^A\0\0\0\M^@\0\0\0003\0\0\0"...,128) = 128 (0x80)
lseek(3,0x80,SEEK_SET) = 128 (0x80)
read(3,"/lib:/usr/lib:/usr/local/lib:/us"...,51) = 51 (0x33)
close(3) = 0 (0x0)
access("/lib/libutil.so.9",0) = 0 (0x0)
open("/lib/libutil.so.9",O_RDONLY,040323400) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=16356,size=72248,blksize=4096 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|0x40000,3,0x0) = 34366169088 (0x800622000)
mmap(0x0,2174976,PROT_NONE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) = 34368237568 (0x80081b000)
mmap(0x80081b000,65536,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|0x40000,3,0x0) = 34368237568 (0x80081b000)
mmap(0x800a2b000,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|0x40000,3,0x10000) = 34370400256 (0x800a2b000)
mmap(0x800a2c000,8192,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34370404352 (0x800a2c000)
munmap(0x800622000,4096) = 0 (0x0)
close(3) = 0 (0x0)
access("/lib/libc.so.7",0) = 0 (0x0)
open("/lib/libc.so.7",O_RDONLY,040323400) = 3 (0x3)
fstat(3,{ mode=-r--r--r-- ,inode=16348,size=1310008,blksize=4096 }) = 0 (0x0)
mmap(0x0,4096,PROT_READ,MAP_PRIVATE|0x40000,3,0x0) = 34366169088 (0x800622000)
mmap(0x0,3473408,PROT_NONE,MAP_PRIVATE|MAP_ANON|MAP_NOCORE,-1,0x0) = 34370412544 (0x800a2e000)
mmap(0x800a2e000,1232896,PROT_READ|PROT_EXEC,MAP_PRIVATE|MAP_FIXED|MAP_NOCORE|0x40000,3,0x0) = 34370412544 (0x800a2e000)
mmap(0x800d5a000,40960,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|0x40000,3,0x12c000) = 34373738496 (0x800d5a000)
mmap(0x800d64000,106496,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_FIXED|MAP_ANON,-1,0x0) = 34373779456 (0x800d64000)
munmap(0x800622000,4096) = 0 (0x0)
close(3) = 0 (0x0)
munmap(0x800621000,4096) = 0 (0x0)
mmap(0x0,40960,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366164992 (0x800621000)
munmap(0x800624000,28672) = 0 (0x0)
mmap(0x0,102400,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34366177280 (0x800624000)
sysarch(0x81,0x7fffffffd340,0x80061f148,0x0,0xffffffffff8c2168,0x8080808080808080) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
swapon(0x7fffffffddf7,0x0,0x2f,0x7fffffffddf7,0x3b,0x7fffffffef7b) ERR#19 'Operation not supported by device'
swapon: write(2,"swapon: ",8) = 8 (0x8)
/dev/zvol/pool0/swapwrite(2,"/dev/zvol/pool0/swap",20) = 20 (0x14)
: write(2,": ",2) = 2 (0x2)
readlink("/etc/malloc.conf",0x7fffffffcea0,1024) ERR#2 'No such file or directory'
issetugid(0x800b34ba9,0x7fffffffcea0,0xffffffffffffffff,0x0,0x2,0x0) = 0 (0x0)
break(0x800000) = 0 (0x0)
mmap(0x0,4194304,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34373885952 (0x800d7e000)
mmap(0x80117e000,2629632,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON,-1,0x0) = 34378080256 (0x80117e000)
munmap(0x800d7e000,2629632) = 0 (0x0)
stat("/usr/share/nls/C/libc.cat",0x7fffffffd840) ERR#2 'No such file or directory'
stat("/usr/share/nls/libc/C",0x7fffffffd840) ERR#2 'No such file or directory'
stat("/usr/local/share/nls/C/libc.cat",0x7fffffffd840) ERR#2 'No such file or directory'
stat("/usr/local/share/nls/libc/C",0x7fffffffd840) ERR#2 'No such file or directory'
madvise(0x801007000,0x1000,0x5,0x6,0x7fffffffcb30,0xffffffff) = 0 (0x0)
madvise(0x801008000,0x1000,0x5,0x7,0x7fffffffcb30,0x7fffffffcad0) = 0 (0x0)
Operation not supported by device
write(2,"Operation not supported by devic"...,34) = 34 (0x22)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
sigprocmask(SIG_BLOCK,SIGHUP|SIGINT|SIGQUIT|SIGKILL|SIGPIPE|SIGALRM|SIGTERM|SIGURG|SIGSTOP|SIGTSTP|SIGCONT|SIGCHLD|SIGTTIN|SIGTTOU|SIGIO|SIGXCPU|SIGXFSZ|SIGVTALRM|SIGPROF|SIGWINCH|SIGINFO|SIGUSR1|SIGUSR2,0x0) = 0 (0x0)
sigprocmask(SIG_SETMASK,0x0,0x0) = 0 (0x0)
process exit, rval = 1
freenas ~/ root~$
@xmj
Copy link

xmj commented Aug 18, 2014

I was seeing the same recently, on FreeNAS 9.2.1.7.
Did you find any solution to this feature?

@dreamcat4
Copy link
Author

This is great data point. It seems like there was a change in-between FreeNAS 9.2.1.3 and 9.2.1.6. No idea what it was however.

UPDATE: To clarify - zfs swapfiles were working on freeness 9.2.1.3, and were found not working anymore on 9.2.1.6. So potentially this could have broke in: 9.2.1.4, 9.2.1.5 or 9.2.1.6.

@dreamcat4
Copy link
Author

In the end, I could not find the cause of the issue. just created a regular swapfile instead. Probably not as good as using the zfs native feature. But it works, if you do something like this:

# To create conventional swapfile regular file (as a real file)
swapfile=/mnt/pool0/.system/var/.swap0
dd if=/dev/zero of=$swapfile bs=1M count=2048
chmod 0600 $swapfile
cat > /mnt/pool0/finch/usr/local/sbin/swap-postinit <<- "EOF"
#!/bin/sh
swapfile=/mnt/pool0/.system/var/.swap0
mdconfig -a -t vnode -f $swapfile -u 9 && swapon /dev/md9
EOF
chmod +x /mnt/pool0/finch/usr/local/sbin/swap-postinit
# Add to postinit the command:
/mnt/pool0/finch/usr/local/sbin/swap-postinit

@xmj
Copy link

xmj commented Aug 18, 2014

I poked jpaetzel https://github.com/jpaetzel and he told me the sysctl that was changed == vfs.zfs.vol.mode=2 makes gpart not recognize zvols as partitions.

You want it to be =1 :-)

Bear in mind that there's a high possibility of deadlocks, so you don't really want swap to be on ZFS in the first place.

@dreamcat4
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment