Giter Site home page Giter Site logo

openzfs / zfs Goto Github PK

View Code? Open in Web Editor NEW
10.3K 441.0 1.7K 126.86 MB

OpenZFS on Linux and FreeBSD

Home Page: https://openzfs.github.io/openzfs-docs

License: Other

Shell 17.94% Python 1.69% C 72.10% Assembly 4.87% Perl 0.16% Makefile 0.81% M4 2.24% Roff 0.01% Lua 0.17% sed 0.01%
openzfs system-software file-system

zfs's Introduction

This repo is archived. Alternate processes for contributing ZFS changes include following the illumos procedures, or opening a PR against ZFSonLinux.

The reasoning behind this are outlined in an email to the [email protected] mailing list, which is reproduced below:

The OpenZFS code repository on github (http://github.com/openzfs/openzfs) is a clone of the illumos repo, with basically identical code. The OpenZFS repo made it easier to contribute ZFS code to illumos, by leveraging the github pull request and code review processes, and by automatically building illumos and running the ZFS Test Suite.

Unfortunately, the automated systems have atrophied and we lack the effort and interest to maintain it. Meanwhile, the illumos code review and contribution process has been working well for a lot of ZFS changes (notably including ports from Linux).

Since the utility of this repo has decreased, and the volunteer workforce isn't available to maintain it, we will be archiving http://github.com/openzfs/openzfs in the coming week. Thank you to everyone who helped maintain this infrastructure, and to those who leveraged it to contribute over 500 commits to ZFS on illumos! Alternate processes for contributing ZFS changes (including those in open PR's) include following the illumos procedures, or opening a PR against ZFSonLinux.

zfs's People

Contributors

ahrens avatar allanjude avatar amotin avatar behlendorf avatar dechamps avatar dinatale2 avatar don-brady avatar dweeezil avatar fransurbo avatar gamanakis avatar gmelikov avatar grwilson avatar kusumi avatar loli10k avatar lundman avatar mattmacy avatar mcmilk avatar mjguzik avatar nabijaczleweli avatar nedbass avatar ofaaland avatar pcd1193182 avatar rincebrain avatar rlaager avatar robn avatar ryao avatar sdimitro avatar szubersk avatar tonyhutter avatar tuxoko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zfs's Issues

ASSERTION(atomic_read(&cvp->cv_waiters) == 0) failed

spl-0.4.9-52-g46aa7b3
zfs-0.4.9-2817-g67425a0

$ lsb_release -a
Distributor ID: Ubuntu
Description: Ubuntu 10.04.1 LTS
Release: 10.04
Codename: lucid

$ uname -r
2.6.32-24-generic (x86)

$ sudo ./scripts/zconfig.sh 
test 1 - persistent zpool.cache: PASS
test 2 - scan disks for pools to import: PASS
test 3 - zpool import/export device: PASS
test 4 - zpool insmod/rmmod device: PASS
test 5 - zvol+ext3 volume: 
SPL: Loaded Solaris Porting Layer v0.5.0 (DEBUG mode)
SPLAT: Loaded Solaris Porting LAyer Tests v0.5.0
ZFS: Loaded ZFS Filesystem v0.5.0 (DEBUG mode)
 tank/fish: unknown partition table
 tank/fish: unknown partition table
 tank/fish: tank/fish1
kjournald starting.  Commit interval 5 seconds
SPLError: 7488:0:(spl-condvar.c:76:__cv_destroy()) ASSERTION(atomic_read(&cvp->cv_waiters) == 0) failed
SPLError: 7488:0:(spl-condvar.c:76:__cv_destroy()) SPL PANIC
SPL: Showing stack for process 7488
Pid: 7488, comm: zvol/0 Tainted: P           2.6.32-24-generic #39-Ubuntu
Call Trace:
 [] ? printk+0x1d/0x1f
 [] spl_debug_dumpstack+0x2a/0x40 [spl]
 [] spl_debug_bug+0x89/0xd0 [spl]
 [] __cv_destroy+0x28c/0x2a0 [spl]
 [] zfs_range_unlock+0x443/0x800 [zfs] 
 [] ? dmu_read+0x1b4/0x290 [zfs]
 [] ? mutex_lock+0x19/0x40
 [] ? zil_itx_assign+0xa1/0x180 [zfs]
 [] zvol_write+0xe1/0x510 [zfs]
 [] taskq_thread+0x205/0x7b0 [spl]
 [] ? schedule+0x44c/0x840
 [] ? default_wake_function+0x0/0x20
 [] ? taskq_thread+0x0/0x7b0 [spl]
 [] kthread+0x74/0x80
 [] ? kthread+0x0/0x80
 [] kernel_thread_helper+0x7/0x10

It doesn't appear to hit every run, perhaps 1 in 5.

Native ZPL Implementation

The major component missing from this port is the ZPL. This is a huge amount of work given the differences between a vnode based VFS like Solaris and Linux's own unique VFS. But this needs to be done and it very achievable now that we have a solid port of the DMU and SPA for the Linux kernel.

ZFS create snapshot hangs

My way:

  1. delete old snapshots
  2. mkfs.ext4 on zvol
  3. dd if=/dev/zero of=file bs=512M count=1
  4. zfs snapshot zstorage/sample@sn1
  5. hang

ps:
5161 pts/15 D+ 0:00 zfs snapshot zstorage/sample@sn1
25357 ? S< 0:00 [zfs_vn_rele_tas]

dmesg:
EXT4-fs (zstorage!sample): mounted filesystem with ordered data mode
JBD: barrier-based sync failed on zstorage!sample-8 - disabling barriers

zfs destroy <snapshot> reports wrong i/o errors

Zfs destroy reports i/o error. I've got strace log. It should not be 'i/o error', but instead the process will wait until destroy is completed. It really completes, - if I wait a minute or so and do 'zfs list -t snapshot' I see the snapshot is not there.
I can reproduce it by running iozone benchmark in paralel with script reusing numbers seq 0 100 for destroying oldest snapshot and getting new with it's name once per minute.
Here are the strace of 'zfs destroy':

execve("/usr/sbin/zfs", ["zfs", "destroy", "pimber/phoronix@77"], [/* 17 vars */]) = 0
brk(0)                                  = 0x2405000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125ef000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=130942, ...}) = 0
mmap(NULL, 130942, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4c125cf000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240>\200\234;\0\0\0@\0\0\0\0\0\0\0\340\31\t\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0%\0$\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\200\234;\0\0\0@
\0\200\234;\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0000\302\7\0\0\0\0\0000\302\207\234;\0\0\0000\302\207\234;\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0
\0\0\0\0\0\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\200\234;\0\0\0\0\0\200\234;\0\0\0(%\10\0\0\0\0\0(%\10\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\270-\10\0\0\0\0\0\270-\250\234;\0\0"..., 832
) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=598816, ...}) = 0
mmap(0x3b9c800000, 2633944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b9c800000
mprotect(0x3b9c883000, 2093056, PROT_NONE) = 0
mmap(0x3b9ca82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0x3b9ca82000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@!\300v9\0\0\0@\0\0\0\0\0\0\0\330\255\0\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0(\0'\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\300v9\0\0\0@\0\300v9
\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\20W\0\0\0\0\0\0\20W\300v9\0\0\0\20W\300v9\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\5\0\0
\0\0\0\0\0\0\0\0\0\0\0\300v9\0\0\0\0\0\300v9\0\0\0\314h\0\0\0\0\0\0\314h\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\210m\0\0\0\0\0\0\210m\340v9\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=47064, ...}) = 0
mmap(0x3976c00000, 2128816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3976c00000
mprotect(0x3976c07000, 2093056, PROT_NONE) = 0
mmap(0x3976e06000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x3976e06000
close(3)                                = 0
open("/usr/lib/libspl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220-\0\0327\0\0\0@\0\0\0\0\0\0\0\230X\1\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0*\0'\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0327\0\0\0\0\0\
0\0327\0\0\0\334V\0\0\0\0\0\0\334V\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\334V\0\0\0\0\0\0\334V \0327\0\0\0\334V \0327\0\0\0\250\23\0\0\0\0\0\0\264\24\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\
0\6\0\0\0\20W\0\0\0\0\0\0\20W \0327\0\0\0\20W \0327\0\0\0\300\1\0\0\0\0\0\0\300\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0327\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=101116, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125ce000
mmap(0x371a000000, 2124688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x371a000000
mprotect(0x371a006000, 2093056, PROT_NONE) = 0
mmap(0x371a205000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x371a205000
close(3)                                = 0
open("/usr/lib/libavl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\10@\0327\0\0\0@\0\0\0\0\0\0\0xW\0\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0'\0$\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0@\0327\0\0\0\0\0@\0327\
0\0\0D\27\0\0\0\0\0\0D\27\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0H\27\0\0\0\0\0\0H\27`\0327\0\0\0H\27`\0327\0\0\0H\2\0\0\0\0\0\0X\2\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0x\27\0\0\0\
0\0\0x\27`\0327\0\0\0x\27`\0327\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1@\0327\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=27413, ...}) = 0
mmap(0x371a400000, 2103712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x371a400000
mprotect(0x371a402000, 2093056, PROT_NONE) = 0
mmap(0x371a601000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x371a601000
close(3)                                = 0
open("/usr/lib/libefi.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \r\300\0317\0\0\0@\0\0\0\0\0\0\0\30\244\0\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0)\0&\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\300\0317\0\0\0\
0\0\300\0317\0\0\0l=\0\0\0\0\0\0l=\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0@\0\0\0\0\0\0\0@\340\0317\0\0\0\0@\340\0317\0\0\0\300\4\0\0\0\0\0\0\330\4\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\
6\0\0\0000@\0\0\0\0\0\0000@\340\0317\0\0\0000@\340\0317\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\300\0317\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=48116, ...}) = 0
mmap(0x3719c00000, 2114776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3719c00000

mprotect(0x3719c04000, 2097152, PROT_NONE) = 0
mmap(0x3719e04000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x3719e04000
close(3)                                = 0
open("/usr/lib/libnvpair.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 /\200\0317\0\0\0@\0\0\0\0\0\0\0X\25\2\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0)\0&\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\200\0317\0\0\0\0\0\
200\0317\0\0\0\264\236\0\0\0\0\0\0\264\236\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0\240\0\0\0\0\0\0\0\240\240\0317\0\0\0\0\240\240\0317\0\0\0\270\5\0\0\0\0\0\0\310\5\0\0\0\0\0\0\0\0 \0
\0\0\0\0\2\0\0\0\6\0\0\0000\241\0\0\0\0\0\0000\241\240\0317\0\0\0000\241\240\0317\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\200\031
7\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149225, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125cd000
mmap(0x3719800000, 2139592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3719800000
mprotect(0x371980a000, 2097152, PROT_NONE) = 0
mmap(0x3719a0a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x3719a0a000
close(3)                                = 0
open("/usr/lib/libunicode.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\7\200\0327\0\0\0@\0\0\0\0\0\0\0\350\253\5\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0(\0%\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\200\0327\0\
0\0\0\0\200\0327\0\0\0\34\352\4\0\0\0\0\0\34\352\4\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0 \352\4\0\0\0\0\0 \352\244\0327\0\0\0 \352\244\0327\0\0\0H\2\0\0\0\0\0\0X\2\0\0\0\0\0\0\0\0 \0\0\
0\0\0\2\0\0\0\6\0\0\0P\352\4\0\0\0\0\0P\352\244\0327\0\0\0P\352\244\0327\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\200\0327\0\0"...
, 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=378152, ...}) = 0
mmap(0x371a800000, 2419832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x371a800000
mprotect(0x371a84f000, 2093056, PROT_NONE) = 0
mmap(0x371aa4e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4e000) = 0x371aa4e000
close(3)                                = 0
open("/usr/lib/libuutil.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320#\0\0317\0\0\0@\0\0\0\0\0\0\0\20i\1\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0*\0'\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0317\0\0\0\0\0\0
\0317\0\0\0\264\201\0\0\0\0\0\0\264\201\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\264\201\0\0\0\0\0\0\264\201 \0317\0\0\0\264\201 \0317\0\0\0\\\6\0\0\0\0\0\0\304\7\0\0\0\0\0\0\0\0 \0\0\0\
0\0\2\0\0\0\6\0\0\0\360\201\0\0\0\0\0\0\360\201 \0317\0\0\0\360\201 \0317\0\0\0\300\1\0\0\0\0\0\0\300\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\0317\0\0"...,
 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=103399, ...}) = 0
mmap(0x3719000000, 2132344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3719000000
mprotect(0x3719009000, 2093056, PROT_NONE) = 0
mmap(0x3719208000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x3719208000
close(3)                                = 0
open("/usr/lib/libzpool.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\r\302\0327\0\0\0@\0\0\0\0\0\0\0\220]+\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0)\0&\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\300\0327\0\0\0\0\0
\300\0327\0\0\0t]\v\0\0\0\0\0t]\v\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0`\v\0\0\0\0\0\0`\353\0327\0\0\0\0`\353\0327\0\0\0\4X\0\0\0\0\0\0\240\32\1\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0
\0000h\v\0\0\0\0\0000h\353\0327\0\0\0000h\353\0327\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\300\0327\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2943720, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125cc000
mmap(0x371ac00000, 2914976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x371ac00000
mprotect(0x371acb6000, 2097152, PROT_NONE) = 0
mmap(0x371aeb6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb6000) = 0x371aeb6000
mmap(0x371aebc000, 47776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x371aebc000
close(3)                                = 0
open("/usr/lib/libzfs.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240r@\0317\0\0\0@\0\0\0\0\0\0\0\370\250\10\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0)\0&\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0@\0317\0\0\0\0\
0@\0317\0\0\0$]\3\0\0\0\0\0$]\3\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0`\3\0\0\0\0\0\0`c\0317\0\0\0\0`c\0317\0\0\0\330\v\0\0\0\0\0\0\370\v\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0\10a
\3\0\0\0\0\0\10ac\0317\0\0\0\10ac\0317\0\0\0\260\1\0\0\0\0\0\0\260\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1@\0317\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=591565, ...}) = 0
mmap(0x3719400000, 2321400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3719400000
mprotect(0x3719436000, 2097152, PROT_NONE) = 0

mmap(0x3719636000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36000) = 0x3719636000
close(3)                                = 0
open("/lib64/libuuid.so.1", O_RDONLY)   = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0\240;\0\0\0@\0\0\0\0\0\0\0\230@\0\0\0\0\0\0\0\0\0\0@\0008\0\7\0@\0!\0 \0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\240;\0\0\0\0\
0\0\240;\0\0\0\0342\0\0\0\0\0\0\0342\0\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0 2\0\0\0\0\0\0 2 \240;\0\0\0 2 \240;\0\0\0\310\3\0\0\0\0\0\0\350\3\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6\0\0\0
p2\0\0\0\0\0\0p2 \240;\0\0\0p2 \240;\0\0\0\300\1\0\0\0\0\0\0\300\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\310\1\0\0\0\0\0\0\310\1\0\240;\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=18648, ...}) = 0
mmap(0x3ba0000000, 2110984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3ba0000000
mprotect(0x3ba0004000, 2093056, PROT_NONE) = 0
mmap(0x3ba0203000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x3ba0203000
close(3)                                = 0
open("/lib64/libz.so.1", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\36\0\235;\0\0\0@\0\0\0\0\0\0\0\260Q\1\0\0\0\0\0\0\0\0\0@\0008\0\6\0@\0\36\0\35\0\1\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\235;\0\0\
0\0\0\0\235;\0\0\0\24C\1\0\0\0\0\0\24C\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\30C\1\0\0\0\0\0\30C!\235;\0\0\0\30C!\235;\0\0\0\10\5\0\0\0\0\0\0\30\5\0\0\0\0\0\0\0\0 \0\0\0\0\0\2\0\0\0\6
\0\0\0008D\1\0\0\0\0\0008D!\235;\0\0\0008D!\235;\0\0\0\220\1\0\0\0\0\0\0\220\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\4\0\0\0\4\0\0\0\220\1\0\0\0\0\0\0\220\1\0\235;\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88368, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125cb000
mmap(0x3b9d000000, 2181168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b9d000000
mprotect(0x3b9d015000, 2093056, PROT_NONE) = 0
mmap(0x3b9d214000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x3b9d214000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\\@\234;\0\0\0@\0\0\0\0\0\0\0\330\36\2\0\0\0\0\0\0\0\0\0@\0008\0\t\0@\0)\0(\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0@\234;\0\0\0@\0@\23
4;\0\0\0\370\1\0\0\0\0\0\0\370\1\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0\0\26\1\0\0\0\0\0\0\26A\234;\0\0\0\0\26A\234;\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1\0\0\0\
5\0\0\0\0\0\0\0\0\0\0\0\0\0@\234;\0\0\0\0\0@\234;\0\0\0`k\1\0\0\0\0\0`k\1\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\230k\1\0\0\0\0\0\230ka\234;\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=141592, ...}) = 0
mmap(0x3b9c400000, 2208672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b9c400000
mprotect(0x3b9c417000, 2093056, PROT_NONE) = 0
mmap(0x3b9c616000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x3b9c616000
mmap(0x3b9c618000, 13216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b9c618000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\355\301\233;\0\0\0@\0\0\0\0\0\0\0\250\371\33\0\0\0\0\0\0\0\0\0@\0008\0\n\0@\0M\0L\0\6\0\0\0\5\0\0\0@\0\0\0\0\0\0\0@\0\300\233;\0\0\
0@\0\300\233;\0\0\0000\2\0\0\0\0\0\0000\2\0\0\0\0\0\0\10\0\0\0\0\0\0\0\3\0\0\0\4\0\0\0pX\24\0\0\0\0\0pX\324\233;\0\0\0pX\324\233;\0\0\0\34\0\0\0\0\0\0\0\34\0\0\0\0\0\0\0\20\0\0\0\0\0\0\0\1
\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\300\233;\0\0\0\0\0\300\233;\0\0\0,J\27\0\0\0\0\0,J\27\0\0\0\0\0\0\0 \0\0\0\0\0\1\0\0\0\6\0\0\0\0W\27\0\0\0\0\0\0W\367\233;\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1838312, ...}) = 0
mmap(0x3b9bc00000, 3664040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b9bc00000
mprotect(0x3b9bd75000, 2097152, PROT_NONE) = 0
mmap(0x3b9bf75000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x175000) = 0x3b9bf75000
mmap(0x3b9bf7a000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b9bf7a000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125ca000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125c9000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125c7000
arch_prctl(ARCH_SET_FS, 0x7f4c125c7b40) = 0
mprotect(0x3b9ca82000, 4096, PROT_READ) = 0
mprotect(0x3976e06000, 4096, PROT_READ) = 0
mprotect(0x3b9c616000, 4096, PROT_READ) = 0
mprotect(0x3b9bf75000, 16384, PROT_READ) = 0
mprotect(0x3b9ba1e000, 4096, PROT_READ) = 0
munmap(0x7f4c125cf000, 130942)          = 0
set_tid_address(0x7f4c125c7e10)         = 16703

set_robust_list(0x7f4c125c7e20, 0x18)   = 0
futex(0x7fffed252c7c, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fffed252c7c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7f4c125c7b40) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x3b9c405a90, [], SA_RESTORER|SA_SIGINFO, 0x3b9c40f440}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x3b9c405b20, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x3b9c40f440}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x2405000
brk(0x2426000)                          = 0x2426000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158752, ...}) = 0
mmap(NULL, 99158752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f4c0c736000
close(3)                                = 0
open("/proc/mounts", O_RDONLY)          = 3
open("/dev/zfs", O_RDWR)                = 4
open("/proc/mounts", O_RDONLY)          = 5
open("/etc/dfs/sharetab", O_RDONLY)     = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 6
fstat(6, {st_mode=S_IFREG|0644, st_size=2512, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4c125ee000
read(6, "# Locale name alias data base.\n# Copyright (C) 1996-2001,2003,2007 Free Software Foundation, Inc.\n#\n# This program is free software; you can redistribute it and/or modify\n# it
 under the terms of the GNU General Public License as published by\n# the Free So"..., 4096) = 2512
read(6, "", 4096)                       = 0
close(6)                                = 0
munmap(0x7f4c125ee000, 4096)            = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
ioctl(4, 0x5a12, 0x7fffed24e1e0)        = 0
ioctl(4, 0x5a05, 0x7fffed249bf0)        = 0
ioctl(4, 0x5a12, 0x7fffed24e580)        = 0
ioctl(4, 0x5a14, 0x7fffed24a000)        = -1 ESRCH (No such process)
ioctl(4, 0x5a15, 0x7fffed24a000)        = -1 ESRCH (No such process)
ioctl(4, 0x5a12, 0x7fffed24e580)        = 0
ioctl(4, 0x5a14, 0x7fffed24a000)        = -1 ESRCH (No such process)
ioctl(4, 0x5a15, 0x7fffed24a000)        = -1 ESRCH (No such process)
ioctl(4, 0x5a18, 0x7fffed24e5f0)        = -1 ENXIO (No such device or address)
write(2, "cannot destroy 'pimber/phoronix@77': I/O error\n", 47) = 47
close(3)                                = 0
close(4)                                = 0
close(5)                                = 0
exit_group(1)                           = ?

Fix RHEL5 ZVOLs

After the recent batch of ZVOL fixes I seem to have accidentally broken minor devices for RHEL5 (2.6.18). Everything works fine for RHEL6 (2.6.32) so I hadn't noticed. Anyway, I suspect this is related to adding zvol back in to the /dev/ path but it needs to be run down.

Unable to handle kernel NULL pointer dereference at 0000000000000010 RIP:
 [] create_dir+0x1d/0x1dc
<8>PGD c45a2067 PUD c5638067 PMD 0
Oops: 0000 [1] SMP
last sysfs file: /class/misc/zfs/dev
<8>Pid: 9379, comm: lt-zfs Tainted: P      2.6.18-prep #1
<8>RIP: 0010:[]  [] create_dir+0x1d/0x1dc
<8>RSP: 0018:ffff81006392fca8  EFLAGS: 00010292
<8>RAX: ffff81005eec9870 RBX: ffff81007ff61538 RCX: ffff81006392fcf8
<8>RDX: ffff81007ff61538 RSI: 0000000000000000 RDI: ffff81007ff61530
<8>RBP: ffff81006392fcd8 R08: ffffffff8033c9e8 R09: 000000000000003e
<8>R10: ffffffff804075a0 R11: 0000000000000000 R12: ffff81007ff61530
<8>R13: ffff81007ff61530 R14: ffff81006392fcf8 R15: 0000000000000000
<8>FS:  00002b69974c9c00(0000) GS:ffffffff803da000(0000) knlGS:0000000000000000
<8>CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
<8>CR2: 0000000000000010 CR3: 00000000cd03c000 CR4: 00000000000006e0
<8>Process lt-zfs (pid: 9379, threadinfo ffff81006392e000, task ffff81007e0257e0)
<8>Stack:  0000000000000000 ffff81007ff61530 ffff81007ff61340 ffff81007ff61530
<8> ffff81005eec9a00 0000000000000000 ffff81006392fd08 ffffffff80118282
<8> ffff81006392fd08 ffffffff8005a929 0000000000000000 ffff81007ff61530
<8>Call Trace:
<8> [] sysfs_create_dir+0x5a/0x78
<8> [] kobject_get+0x1a/0x21
<8> [] kobject_add+0xe7/0x1ac
<8> [] blk_register_queue+0x3f/0x86
<8> [] add_disk+0x44/0x48
<8> [] :zfs:__zvol_create_minor+0x510/0x59b
<8> [] __vmalloc_node+0x56/0x63
<8> [] :zfs:zvol_create_minor+0x64/0x98
<8> [] :zfs:zfs_ioc_create_minor+0xc/0xe
<8> [] :zfs:zfs_ioctl+0x122/0x18d
<8> [] do_ioctl+0x2a/0x77
<8> [] vfs_ioctl+0x450/0x4b1
<8> [] audit_syscall_entry+0x18b/0x1c1
<8> [] sys_ioctl+0x5f/0x82
<8> [] tracesys+0xd5/0xe0
<8>
<8>
<8>Code: 48 8b 7e 10 48 81 c7 b8 00 00 00 e8 a4 ee f4 ff fc 31 c0 48
RIP  [] create_dir+0x1d/0x1dc
<8> RSP 
CR2: 0000000000000010

Update zpios to use new zero-copy API

With the update to onnv_141 the zero-copy API we've been waiting for has been added. This means we can stop faking it in zpios. The zpios code must be updated to use the new API, for now this support is simply disabled.

Device not created

spl: git
zpool: 0.4.9
kernel: 2.6.34

root@AliSo rules.d # zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 149G 73,5K 149G 0% ONLINE -
root@AliSo rules.d # zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 69K 147G 18K /tank
root@AliSo rules.d # ls -l /dev/ | grep tank
root@AliSo rules.d # ls -l /dev/ | grep 230
root@AliSo rules.d # cat /proc/devices | grep 230
230 zvol
root@AliSo rules.d #

SPL tests fails

CentOS 5.4 with kernel
2.6.18-194.3.1.el5

SPL test fails on
splat -a
rwlock:N-rd/1-wr
Message from syslogd@ at Sat May 29 12:23:16 2010 ...
localhost kernel: SPLError: 19477:0:(splat-rwlock.c:291:splat_rwlock_test1()) SBUG

Implement zeventd daemon

As of zfs-0.4.9 the infrastructure is in place to monitor events generated by zfs from user space. Currently the only consumer of this ABI is the 'zpool events' command which can be used to print the events which are just nvlists. What we need now is a zeventd daemon which uses this interface to monitor zevents. Initially this daemon can simply forward the events cleanly off to syslog but longer term we want to be able to have specific events trigger actions. For example, in the case of a disk failure event you may want to send an email or perhaps kick off a suite of diagnostics against the newly failed drive.

ZVOL Performance

While there is a full native ZVOL implementation in this code base performance likely is not what it could be. Mainly this is both the Linux VFS and the ZFS ARC both want to fully manage the cache so we unfortunately end up with two caches. This means our memory foot print is larger than it needs to be, and it means we have an extra copy between the caches, but it does not impact correctness. All syncs are barrier requests I believe are handled correctly. Longer term there is lots of room for improvement here but it will require fairly extensive changes to either the Linux VFS and VM layer, or additional DMU interfaces to handle managing buffer not directly allocated by the ARC.

One tuning which can be made in the short term here is to configure the ARC to only cache meta data. This reduces the memory footprint substantially but it does not eliminate that extra copy unfortunately.

Use New BIO_RW_FAILFAST_* API

As of zfs-0.4.5 we no longer unconditionally use the BIO_RW_FAILFAST flag. In newer kernels BIO_RW_FAILFAST was replaced with IO_RW_FAILFAST_{DEV|_TRANSPORT|_DRIVER}. The API change is a step in the right direction but the vdev disk code needs to be updated to take advantage of the new API.

For now if the legacy BIO_RW_FAILFAST flag is detected at configure time we use it. If it is missing it means we are running against a kernel with the newer API. With the new API we should be able to ensure some fairly smart behavior in the face of IO errors, but until then we are going to have a crazy number of unless retries at the lower layers.

Last week I observed a real disk failure while zfs-0.4.7 was under a kpios write load in RHEL5.4. While the software did handle the failure the BIO_RW_FAILFAST support does not appear to have worked correctly. The single drive failure hung the committing transaction group for at least 360 seconds while the low level mptsas driver retried the IO. Additionally, from what I can tell it does not appear that the IO failure was properly reported back to ZFS either. What we need to have happen is for the IO to fail immediately with minimal retries at the driver and scsi layer.

zfs hangs: "zvol blocked for more than 120 secs".

I have compiled and installed spl and zfs rpms for standard FC13 kernel:
2.6.33.5-112.fc13.x86_64 ([email protected]) (gcc version 4.4.4 20100503...
I desided to test how it can handle multiple small files with random reads and writes. Formated as ext2, mounted and used for zimbra mail storage. After about an hour, when zimbra desktop pulled about 1 gig mail messages from my couple accounts, I tried some zimbra searches and reads of this messages and all zpool i/o hanged.
In /var/log/messages there were

Jun  9 11:38:25 localhost kernel: INFO: task zvol/1:2305 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: zvol/1        D 0000000000000002     0  2305      2 0x00000080
Jun  9 11:38:25 localhost kernel: ffff88007b9693c0 0000000000000046 ffff88007b9694b8 0000000000000008
Jun  9 11:38:25 localhost kernel: 00000000000157c0 00000000914d69f3 0000000000000001 ffff88007b969fd8
Jun  9 11:38:25 localhost kernel: ffff88007b969fd8 000000000000f9b0 00000000000157c0 ffff8800c81649b8
Jun  9 11:38:25 localhost kernel: Call Trace:
Jun  9 11:38:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:38:25 localhost kernel: [] ? sync_page+0x0/0x45
Jun  9 11:38:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:38:25 localhost kernel: [] sync_page+0x41/0x45
Jun  9 11:38:25 localhost kernel: [] __wait_on_bit+0x43/0x76
Jun  9 11:38:25 localhost kernel: [] wait_on_page_bit+0x6d/0x74
Jun  9 11:38:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:38:25 localhost kernel: [] ? block_write_full_page+0x10/0x12
Jun  9 11:38:25 localhost kernel: [] pageout+0x1ce/0x1fe
Jun  9 11:38:25 localhost kernel: [] shrink_page_list+0x260/0x472
Jun  9 11:38:25 localhost kernel: [] ? __delayacct_blkio_end+0x39/0x3b
Jun  9 11:38:25 localhost kernel: [] ? io_schedule_timeout+0x9d/0xc8
Jun  9 11:38:25 localhost kernel: [] ? congestion_wait+0x7b/0x8a
Jun  9 11:38:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:38:25 localhost kernel: [] shrink_inactive_list+0x455/0x675
Jun  9 11:38:25 localhost kernel: [] ? shrink_active_list+0x27a/0x29b
Jun  9 11:38:25 localhost kernel: [] ? determine_dirtyable_memory+0x15/0x27
Jun  9 11:38:25 localhost kernel: [] ? get_dirty_limits+0x22/0x24d
Jun  9 11:38:25 localhost kernel: [] shrink_zone+0x358/0x40c
Jun  9 11:38:25 localhost kernel: [] ? shrink_slab+0x145/0x157
Jun  9 11:38:25 localhost kernel: [] do_try_to_free_pages+0x20e/0x381
Jun  9 11:38:25 localhost kernel: [] try_to_free_pages+0x6a/0x6c
Jun  9 11:38:25 localhost kernel: [] ? isolate_pages_global+0x0/0x1f2
Jun  9 11:38:25 localhost kernel: [] __alloc_pages_nodemask+0x3e6/0x630
Jun  9 11:38:25 localhost kernel: [] alloc_pages_current+0x90/0x99
Jun  9 11:38:25 localhost kernel: [] __get_free_pages+0x9/0x46
Jun  9 11:38:25 localhost kernel: [] kv_alloc+0x28/0x40 [spl]
Jun  9 11:38:25 localhost kernel: [] spl_kmem_cache_alloc+0x135/0x49b [spl]
Jun  9 11:38:25 localhost kernel: [] dbuf_create+0x3e/0x2dc [zfs]
Jun  9 11:38:25 localhost kernel: [] ? dbuf_findbp+0xaa/0x12c [zfs]
Jun  9 11:38:25 localhost kernel: [] dbuf_hold_impl+0xce/0x1fc [zfs]
Jun  9 11:38:25 localhost kernel: [] dbuf_hold+0x1b/0x29 [zfs]
Jun  9 11:38:25 localhost kernel: [] dmu_buf_hold_array_by_dnode+0x182/0x2e9 [zfs]
Jun  9 11:38:25 localhost kernel: [] dmu_buf_hold_array+0x5a/0x7b [zfs]
Jun  9 11:38:25 localhost kernel: [] dmu_write_req+0x55/0x14a [zfs]
Jun  9 11:38:25 localhost kernel: [] zvol_write+0xd9/0x371 [zfs]
Jun  9 11:38:25 localhost kernel: [] taskq_thread+0x15c/0x22b [spl]
Jun  9 11:38:25 localhost kernel: [] ? default_wake_function+0x0/0xf
Jun  9 11:38:25 localhost kernel: [] ? taskq_thread+0x0/0x22b [spl]
Jun  9 11:38:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:38:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:38:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:38:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:38:25 localhost kernel: INFO: task txg_quiesce:3528 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: txg_quiesce   D 0000000000000000     0  3528      2 0x00000080
Jun  9 11:38:25 localhost kernel: ffff8800c02c1d50 0000000000000046 0000000000000000 ffff880123959f80
Jun  9 11:38:25 localhost kernel: 00000000000157c0 0000000000000000 ffff880123959f80 ffff8800c02c1fd8
Jun  9 11:38:25 localhost kernel: ffff8800c02c1fd8 000000000000f9b0 00000000000157c0 ffff88004f636108
Jun  9 11:38:25 localhost kernel: Call Trace:

Jun  9 11:38:25 localhost kernel: [] cv_wait_common+0x85/0xa9 [spl]
Jun  9 11:38:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:38:25 localhost kernel: [] __cv_wait+0xe/0x10 [spl]
Jun  9 11:38:25 localhost kernel: [] txg_wait_exit+0x4a/0x78 [zfs]
Jun  9 11:38:25 localhost kernel: [] txg_quiesce_thread+0x115/0x13f [zfs]
Jun  9 11:38:25 localhost kernel: [] ? txg_quiesce_thread+0x0/0x13f [zfs]
Jun  9 11:38:25 localhost kernel: [] thread_generic_wrapper+0x6c/0x79 [spl]
Jun  9 11:38:25 localhost kernel: [] ? thread_generic_wrapper+0x0/0x79 [spl]
Jun  9 11:38:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:38:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:38:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:38:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:38:25 localhost kernel: INFO: task txg_sync:3529 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: txg_sync      D 0000000000000000     0  3529      2 0x00000080
Jun  9 11:38:25 localhost kernel: ffff880075937d60 0000000000000046 0000000000000000 ffff880005a557c0
Jun  9 11:38:25 localhost kernel: ffff880075937cd0 ffffffff81035c68 ffff880075937cd0 ffff880075937fd8
Jun  9 11:38:25 localhost kernel: ffff880075937fd8 000000000000f9b0 00000000000157c0 ffff88004f633268
Jun  9 11:38:25 localhost kernel: Call Trace:
Jun  9 11:38:25 localhost kernel: [] ? activate_task+0x28/0x30
Jun  9 11:38:25 localhost kernel: [] cv_wait_common+0x85/0xa9 [spl]
Jun  9 11:38:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:38:25 localhost kernel: [] ? __wake_up+0x3f/0x48
Jun  9 11:38:25 localhost kernel: [] __cv_wait+0xe/0x10 [spl]
Jun  9 11:38:25 localhost kernel: [] txg_thread_wait+0x2a/0x2c [zfs]
Jun  9 11:38:25 localhost kernel: [] txg_sync_thread+0x153/0x365 [zfs]
Jun  9 11:38:25 localhost kernel: [] ? txg_sync_thread+0x0/0x365 [zfs]
Jun  9 11:38:25 localhost kernel: [] thread_generic_wrapper+0x6c/0x79 [spl]
Jun  9 11:38:25 localhost kernel: [] ? thread_generic_wrapper+0x0/0x79 [spl]
Jun  9 11:38:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:38:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:38:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:38:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:38:25 localhost kernel: INFO: task flush-230:0:16377 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: flush-230:0   D ffffffff81121e08     0 16377      2 0x00000080
Jun  9 11:38:25 localhost kernel: ffff8800750c1900 0000000000000046 ffff8800750c1860 ffff8801243a58c0
Jun  9 11:38:25 localhost kernel: ffff8801148d2930 ffff8801243a58c0 ffff8800750c1890 ffff8800750c1fd8
Jun  9 11:38:25 localhost kernel: ffff8800750c1fd8 000000000000f9b0 00000000000157c0 ffff8800be50c9b8
Jun  9 11:38:25 localhost kernel: Call Trace:

Jun  9 11:38:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:38:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:38:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:38:25 localhost kernel: [] sync_buffer+0x3b/0x3f
Jun  9 11:38:25 localhost kernel: [] __wait_on_bit_lock+0x41/0x8a
Jun  9 11:38:25 localhost kernel: [] out_of_line_wait_on_bit_lock+0x69/0x74
Jun  9 11:38:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:38:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:38:25 localhost kernel: [] __lock_buffer+0x25/0x27
Jun  9 11:38:25 localhost kernel: [] lock_buffer+0x37/0x3c
Jun  9 11:38:25 localhost kernel: [] __block_write_full_page+0x14f/0x2a8
Jun  9 11:38:25 localhost kernel: [] ? blkdev_get_block+0x0/0x5e
Jun  9 11:38:25 localhost kernel: [] ? end_buffer_async_write+0x0/0x130
Jun  9 11:38:25 localhost kernel: [] ? end_buffer_async_write+0x0/0x130
Jun  9 11:38:25 localhost kernel: [] ? blkdev_get_block+0x0/0x5e
Jun  9 11:38:25 localhost kernel: [] block_write_full_page_endio+0x84/0x90
Jun  9 11:38:25 localhost kernel: [] block_write_full_page+0x10/0x12
Jun  9 11:38:25 localhost kernel: [] blkdev_writepage+0x13/0x15
Jun  9 11:38:25 localhost kernel: [] __writepage+0x12/0x2b
Jun  9 11:38:25 localhost kernel: [] write_cache_pages+0x20a/0x340
Jun  9 11:38:25 localhost kernel: [] ? __writepage+0x0/0x2b
Jun  9 11:38:25 localhost kernel: [] generic_writepages+0x1f/0x21
Jun  9 11:38:25 localhost kernel: [] do_writepages+0x1c/0x25
Jun  9 11:38:25 localhost kernel: [] writeback_single_inode+0xbe/0x203
Jun  9 11:38:25 localhost kernel: [] writeback_inodes_wb+0x2ef/0x380
Jun  9 11:38:25 localhost kernel: [] wb_writeback+0x13d/0x1bc
Jun  9 11:38:25 localhost kernel: [] wb_do_writeback+0x1a8/0x1be
Jun  9 11:38:25 localhost kernel: [] bdi_writeback_task+0x3a/0xab
Jun  9 11:38:25 localhost kernel: [] ? bdi_start_fn+0x0/0xd4
Jun  9 11:38:25 localhost kernel: [] bdi_start_fn+0x6c/0xd4
Jun  9 11:38:25 localhost kernel: [] ? bdi_start_fn+0x0/0xd4
Jun  9 11:38:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:38:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:38:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:38:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:38:25 localhost kernel: INFO: task java:16695 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: java          D 0000000000000002     0 16695      1 0x00020080
Jun  9 11:38:25 localhost kernel: ffff880033ea5cc8 0000000000000082 0000000000000000 ffff880037be83c0
Jun  9 11:38:25 localhost kernel: ffff8801243a58c0 0000000000000001 ffff880033ea5c38 ffff880033ea5fd8
Jun  9 11:38:25 localhost kernel: ffff880033ea5fd8 000000000000f9b0 00000000000157c0 ffff880117006108
Jun  9 11:38:25 localhost kernel: Call Trace:

Jun  9 11:38:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:38:25 localhost kernel: [] ? sync_page+0x0/0x45
Jun  9 11:38:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:38:25 localhost kernel: [] sync_page+0x41/0x45
Jun  9 11:38:25 localhost kernel: [] __wait_on_bit+0x43/0x76
Jun  9 11:38:25 localhost kernel: [] wait_on_page_bit+0x6d/0x74
Jun  9 11:38:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:38:25 localhost kernel: [] ? pagevec_lookup_tag+0x20/0x29
Jun  9 11:38:25 localhost kernel: [] filemap_fdatawait_range+0x9f/0x173
Jun  9 11:38:25 localhost kernel: [] filemap_write_and_wait_range+0x3e/0x51
Jun  9 11:38:25 localhost kernel: [] vfs_fsync_range+0x5a/0xad
Jun  9 11:38:25 localhost kernel: [] vfs_fsync+0x18/0x1a
Jun  9 11:38:25 localhost kernel: [] do_fsync+0x2f/0x44
Jun  9 11:38:25 localhost kernel: [] sys_fsync+0xb/0xf
Jun  9 11:38:25 localhost kernel: [] sysenter_dispatch+0x7/0x2e
Jun  9 11:38:25 localhost kernel: INFO: task java:16793 blocked for more than 120 seconds.
Jun  9 11:38:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:38:25 localhost kernel: java          D 0000000000000002     0 16793      1 0x00020080
Jun  9 11:38:25 localhost kernel: ffff88004fad1bf8 0000000000000082 ffff8801243a58c0 00000000000004c1
Jun  9 11:38:25 localhost kernel: ffff8801148d3e30 0000000000000092 ffff88004fad1b88 ffff88004fad1fd8
Jun  9 11:38:25 localhost kernel: ffff88004fad1fd8 000000000000f9b0 00000000000157c0 ffff88012623c9b8
Jun  9 11:38:25 localhost kernel: Call Trace:
Jun  9 11:38:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:38:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:38:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:38:25 localhost kernel: [] sync_buffer+0x3b/0x3f
Jun  9 11:38:25 localhost kernel: [] __wait_on_bit+0x43/0x76
Jun  9 11:38:25 localhost kernel: [] out_of_line_wait_on_bit+0x69/0x74
Jun  9 11:38:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:38:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:38:25 localhost kernel: [] __wait_on_buffer+0x1f/0x21
Jun  9 11:38:25 localhost kernel: [] wait_on_buffer+0x38/0x3c
Jun  9 11:38:25 localhost kernel: [] sync_dirty_buffer+0x5b/0x94
Jun  9 11:38:25 localhost kernel: [] ext2_write_inode+0x291/0x319 [ext2]
Jun  9 11:38:25 localhost kernel: [] writeback_single_inode+0x11f/0x203
Jun  9 11:38:25 localhost kernel: [] sync_inode+0x28/0x36
Jun  9 11:38:25 localhost kernel: [] simple_fsync+0x58/0x6a
Jun  9 11:38:25 localhost kernel: [] ext2_fsync+0x2a/0x5d [ext2]
Jun  9 11:38:25 localhost kernel: [] vfs_fsync_range+0x7d/0xad
Jun  9 11:38:25 localhost kernel: [] vfs_fsync+0x18/0x1a
Jun  9 11:38:25 localhost kernel: [] do_fsync+0x2f/0x44
Jun  9 11:38:25 localhost kernel: [] sys_fsync+0xb/0xf
Jun  9 11:38:25 localhost kernel: [] sysenter_dispatch+0x7/0x2e
Jun  9 11:40:25 localhost kernel: INFO: task zvol/1:2305 blocked for more than 120 seconds.
Jun  9 11:40:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:40:25 localhost kernel: zvol/1        D 0000000000000002     0  2305      2 0x00000080
Jun  9 11:40:25 localhost kernel: ffff88007b9693c0 0000000000000046 ffff88007b9694b8 0000000000000008
Jun  9 11:40:25 localhost kernel: 00000000000157c0 00000000914d69f3 0000000000000001 ffff88007b969fd8
Jun  9 11:40:25 localhost kernel: ffff88007b969fd8 000000000000f9b0 00000000000157c0 ffff8800c81649b8

Jun  9 11:40:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:40:25 localhost kernel: [] ? sync_page+0x0/0x45
Jun  9 11:40:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:40:25 localhost kernel: [] sync_page+0x41/0x45
Jun  9 11:40:25 localhost kernel: [] __wait_on_bit+0x43/0x76
Jun  9 11:40:25 localhost kernel: [] wait_on_page_bit+0x6d/0x74
Jun  9 11:40:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:40:25 localhost kernel: [] ? block_write_full_page+0x10/0x12
Jun  9 11:40:25 localhost kernel: [] pageout+0x1ce/0x1fe
Jun  9 11:40:25 localhost kernel: [] shrink_page_list+0x260/0x472
Jun  9 11:40:25 localhost kernel: [] ? __delayacct_blkio_end+0x39/0x3b
Jun  9 11:40:25 localhost kernel: [] ? io_schedule_timeout+0x9d/0xc8
Jun  9 11:40:25 localhost kernel: [] ? congestion_wait+0x7b/0x8a
Jun  9 11:40:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:40:25 localhost kernel: [] shrink_inactive_list+0x455/0x675
Jun  9 11:40:25 localhost kernel: [] ? shrink_active_list+0x27a/0x29b
Jun  9 11:40:25 localhost kernel: [] ? determine_dirtyable_memory+0x15/0x27
Jun  9 11:40:25 localhost kernel: [] ? get_dirty_limits+0x22/0x24d
Jun  9 11:40:25 localhost kernel: [] shrink_zone+0x358/0x40c
Jun  9 11:40:25 localhost kernel: [] ? shrink_slab+0x145/0x157
Jun  9 11:40:25 localhost kernel: [] do_try_to_free_pages+0x20e/0x381
Jun  9 11:40:25 localhost kernel: [] try_to_free_pages+0x6a/0x6c
Jun  9 11:40:25 localhost kernel: [] ? isolate_pages_global+0x0/0x1f2
Jun  9 11:40:25 localhost kernel: [] __alloc_pages_nodemask+0x3e6/0x630
Jun  9 11:40:25 localhost kernel: [] alloc_pages_current+0x90/0x99
Jun  9 11:40:25 localhost kernel: [] __get_free_pages+0x9/0x46
Jun  9 11:40:25 localhost kernel: [] kv_alloc+0x28/0x40 [spl]
Jun  9 11:40:25 localhost kernel: [] spl_kmem_cache_alloc+0x135/0x49b [spl]
Jun  9 11:40:25 localhost kernel: [] dbuf_create+0x3e/0x2dc [zfs]
Jun  9 11:40:25 localhost kernel: [] ? dbuf_findbp+0xaa/0x12c [zfs]
Jun  9 11:40:25 localhost kernel: [] dbuf_hold_impl+0xce/0x1fc [zfs]
Jun  9 11:40:25 localhost kernel: [] dbuf_hold+0x1b/0x29 [zfs]
Jun  9 11:40:25 localhost kernel: [] dmu_buf_hold_array_by_dnode+0x182/0x2e9 [zfs]
Jun  9 11:40:25 localhost kernel: [] dmu_buf_hold_array+0x5a/0x7b [zfs]
Jun  9 11:40:25 localhost kernel: [] dmu_write_req+0x55/0x14a [zfs]
Jun  9 11:40:25 localhost kernel: [] zvol_write+0xd9/0x371 [zfs]
Jun  9 11:40:25 localhost kernel: [] taskq_thread+0x15c/0x22b [spl]
Jun  9 11:40:25 localhost kernel: [] ? default_wake_function+0x0/0xf
Jun  9 11:40:25 localhost kernel: [] ? taskq_thread+0x0/0x22b [spl]
Jun  9 11:40:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:40:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:40:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:40:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:40:25 localhost kernel: INFO: task txg_quiesce:3528 blocked for more than 120 seconds.
Jun  9 11:40:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:40:25 localhost kernel: txg_quiesce   D 0000000000000000     0  3528      2 0x00000080
Jun  9 11:40:25 localhost kernel: ffff8800c02c1d50 0000000000000046 0000000000000000 ffff880123959f80
Jun  9 11:40:25 localhost kernel: 00000000000157c0 0000000000000000 ffff880123959f80 ffff8800c02c1fd8
Jun  9 11:40:25 localhost kernel: ffff8800c02c1fd8 000000000000f9b0 00000000000157c0 ffff88004f636108
Jun  9 11:40:25 localhost kernel: Call Trace:

Jun  9 11:40:25 localhost kernel: [] cv_wait_common+0x85/0xa9 [spl]
Jun  9 11:40:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:40:25 localhost kernel: [] __cv_wait+0xe/0x10 [spl]
Jun  9 11:40:25 localhost kernel: [] txg_wait_exit+0x4a/0x78 [zfs]
Jun  9 11:40:25 localhost kernel: [] txg_quiesce_thread+0x115/0x13f [zfs]
Jun  9 11:40:25 localhost kernel: [] ? txg_quiesce_thread+0x0/0x13f [zfs]
Jun  9 11:40:25 localhost kernel: [] thread_generic_wrapper+0x6c/0x79 [spl]
Jun  9 11:40:25 localhost kernel: [] ? thread_generic_wrapper+0x0/0x79 [spl]
Jun  9 11:40:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:40:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:40:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:40:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:40:25 localhost kernel: INFO: task txg_sync:3529 blocked for more than 120 seconds.
Jun  9 11:40:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:40:25 localhost kernel: txg_sync      D 0000000000000000     0  3529      2 0x00000080
Jun  9 11:40:25 localhost kernel: ffff880075937d60 0000000000000046 0000000000000000 ffff880005a557c0
Jun  9 11:40:25 localhost kernel: ffff880075937cd0 ffffffff81035c68 ffff880075937cd0 ffff880075937fd8
Jun  9 11:40:25 localhost kernel: ffff880075937fd8 000000000000f9b0 00000000000157c0 ffff88004f633268
Jun  9 11:40:25 localhost kernel: Call Trace:
Jun  9 11:40:25 localhost kernel: [] ? activate_task+0x28/0x30
Jun  9 11:40:25 localhost kernel: [] cv_wait_common+0x85/0xa9 [spl]
Jun  9 11:40:25 localhost kernel: [] ? autoremove_wake_function+0x0/0x34
Jun  9 11:40:25 localhost kernel: [] ? __wake_up+0x3f/0x48
Jun  9 11:40:25 localhost kernel: [] __cv_wait+0xe/0x10 [spl]
Jun  9 11:40:25 localhost kernel: [] txg_thread_wait+0x2a/0x2c [zfs]
Jun  9 11:40:25 localhost kernel: [] txg_sync_thread+0x153/0x365 [zfs]
Jun  9 11:40:25 localhost kernel: [] ? txg_sync_thread+0x0/0x365 [zfs]
Jun  9 11:40:25 localhost kernel: [] thread_generic_wrapper+0x6c/0x79 [spl]
Jun  9 11:40:25 localhost kernel: [] ? thread_generic_wrapper+0x0/0x79 [spl]
Jun  9 11:40:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:40:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:40:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:40:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10
Jun  9 11:40:25 localhost kernel: INFO: task flush-230:0:16377 blocked for more than 120 seconds.
Jun  9 11:40:25 localhost kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun  9 11:40:25 localhost kernel: flush-230:0   D ffffffff81121e08     0 16377      2 0x00000080
Jun  9 11:40:25 localhost kernel: ffff8800750c1900 0000000000000046 ffff8800750c1860 ffff8801243a58c0
Jun  9 11:40:25 localhost kernel: ffff8801148d2930 ffff8801243a58c0 ffff8800750c1890 ffff8800750c1fd8
Jun  9 11:40:25 localhost kernel: ffff8800750c1fd8 000000000000f9b0 00000000000157c0 ffff8800be50c9b8

Jun  9 11:40:25 localhost kernel: Call Trace:
Jun  9 11:40:25 localhost kernel: [] ? ktime_get_ts+0xad/0xba
Jun  9 11:40:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:40:25 localhost kernel: [] io_schedule+0x6e/0xb0
Jun  9 11:40:25 localhost kernel: [] sync_buffer+0x3b/0x3f
Jun  9 11:40:25 localhost kernel: [] __wait_on_bit_lock+0x41/0x8a
Jun  9 11:40:25 localhost kernel: [] out_of_line_wait_on_bit_lock+0x69/0x74
Jun  9 11:40:25 localhost kernel: [] ? sync_buffer+0x0/0x3f
Jun  9 11:40:25 localhost kernel: [] ? wake_bit_function+0x0/0x2e
Jun  9 11:40:25 localhost kernel: [] __lock_buffer+0x25/0x27
Jun  9 11:40:25 localhost kernel: [] lock_buffer+0x37/0x3c
Jun  9 11:40:25 localhost kernel: [] __block_write_full_page+0x14f/0x2a8
Jun  9 11:40:25 localhost kernel: [] ? blkdev_get_block+0x0/0x5e
Jun  9 11:40:25 localhost kernel: [] ? end_buffer_async_write+0x0/0x130
Jun  9 11:40:25 localhost kernel: [] ? end_buffer_async_write+0x0/0x130
Jun  9 11:40:25 localhost kernel: [] ? blkdev_get_block+0x0/0x5e
Jun  9 11:40:25 localhost kernel: [] block_write_full_page_endio+0x84/0x90
Jun  9 11:40:25 localhost kernel: [] block_write_full_page+0x10/0x12
Jun  9 11:40:25 localhost kernel: [] blkdev_writepage+0x13/0x15
Jun  9 11:40:25 localhost kernel: [] __writepage+0x12/0x2b
Jun  9 11:40:25 localhost kernel: [] write_cache_pages+0x20a/0x340
Jun  9 11:40:25 localhost kernel: [] ? __writepage+0x0/0x2b
Jun  9 11:40:25 localhost kernel: [] generic_writepages+0x1f/0x21
Jun  9 11:40:25 localhost kernel: [] do_writepages+0x1c/0x25
Jun  9 11:40:25 localhost kernel: [] writeback_single_inode+0xbe/0x203
Jun  9 11:40:25 localhost kernel: [] writeback_inodes_wb+0x2ef/0x380
Jun  9 11:40:25 localhost kernel: [] wb_writeback+0x13d/0x1bc
Jun  9 11:40:25 localhost kernel: [] wb_do_writeback+0x1a8/0x1be
Jun  9 11:40:25 localhost kernel: [] bdi_writeback_task+0x3a/0xab
Jun  9 11:40:25 localhost kernel: [] ? bdi_start_fn+0x0/0xd4
Jun  9 11:40:25 localhost kernel: [] bdi_start_fn+0x6c/0xd4
Jun  9 11:40:25 localhost kernel: [] ? bdi_start_fn+0x0/0xd4
Jun  9 11:40:25 localhost kernel: [] kthread+0x7a/0x82
Jun  9 11:40:25 localhost kernel: [] kernel_thread_helper+0x4/0x10
Jun  9 11:40:25 localhost kernel: [] ? kthread+0x0/0x82
Jun  9 11:40:25 localhost kernel: [] ? kernel_thread_helper+0x0/0x10

zfs-0.4.9 on 32bit Debian Lenny using 2.6.32-bpo.5-686-bigmem

This issue is posted to provide feedback on an installation of zfs-0.4.9 with spl-0.4.9 on a 32bit Debian Lenny installation using 2.6.32-bpo.5-686-bigmem from lenny-backports. Elements of SPL and ZFS were tested on two different pieces of hardware, both running the same kernel and distribution.
#1. Building and Installing SPL .debs

No real trouble here, except some of the rpm files, when converted to deb files using 'alien -d' are given the same .deb filename. The solution was to run 'alien -d' and install only spl-0.4.9-1.i386.rpm, spl-modules-0.4.9-1_2.6.32_bpo.5_686_bigmem.i386.rpm and spl-modules-devel-0.4.9-1_2.6.32_bpo.5_686_bigmem.i386.rpm (and not spl-0.4.9-1.src.rpm and spl-modules-0.4.9-1.src.rpm).
#2. Running splat

On machine A, a Dell PowerEdge 2950 with 32G ram, 'splat -a' hung at kmem:slab_large. The OS didn't crash, but did appear to slow down, so it was necessary to reboot the machine (which is a production machine, so further testing on this machine hasn't yet been possible).

On machine B, a Dell SC430 with 4G ram, 'splat -a' completed successfully.
#3. Building and Installing ZFS .debs

No real trouble compiling, but had trouble building the rpms and consequently the debs. The 'make rpm' failed with errors (see bottom of this post). Eventually, ran 'checkinstall' to create a .deb, which installed fine, except I found many files were installed in /usr/local instead of /usr, zconfig.sh didn't like that. Re-ran './configure --prefix=/usr' and then checkinstall created a .deb with the files under /usr.
#4. Running zconfig.sh

On the first run on machine B, zconfig.sh crashed the machine completely during test 2. The machine was rebooted, and a second and third runs completely successfully.
#5. Creating pools and vols

No trouble creating a pool on a 10G LVM volume with 'zpool create tank /dev/Main/zfs1'. No trouble creating a volume with 'zfs create -V 2000M tank/fish' (it took me a while to realise that the block device would be created in /dev/tank/fish, and not /dev/zvol/tank/fish, as was implied on the Example ZVOL wiki page.)

However, it is not possible to create a zvol larger than 2G, for some reason.

'zfs create -V 2049M tank/fish2' fails with the message: "cannot create 'tank/f4': volume size exceeds limit for this system"
#6. Speed Tests

Again on machine B, compared data transfer rates to a native ext3 filesystem, to an ext3 filesystem onto of a ZFS volume, using 'dd if=somefile of=destfile bs=1M'.

Copying to /tmp/somefile (ext3 on LVM volume on SATA): 60-70Mb/s
Copying to /mnt/somefile (having run 'mkfs.ext3 /dev/tank/fish', 'mount /dev/tank/fish /mnt'): 25-30Mb/s

I hope this helps.

=== 'make rpm' errors ===

Processing files: zfs-0.4.9-1
error: File not found by glob: /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/etc/*
Executing(%doc): /bin/sh -e /tmp/zfs-build-root-FmhrFsgQ/TMP/rpm-tmp.58469

  • umask 022
  • cd /tmp/zfs-build-root-FmhrFsgQ/BUILD
  • cd zfs-0.4.9
  • DOCDIR=/tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/share/doc/zfs-0.4.9
  • export DOCDIR
  • rm -rf /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/share/doc/zfs-0.4.9
  • /bin/mkdir -p /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/share/doc/zfs-0.4.9
  • cp -pr AUTHORS ChangeLog COPYING COPYRIGHT DISCLAIMER /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/share/doc/zfs-0.4.9
  • cp -pr GIT OPENSOLARIS.LICENSE README ZFS.RELEASE /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/share/doc/zfs-0.4.9
  • exit 0
    Processing files: zfs-devel-0.4.9-1
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Processing files: zfs-test-0.4.9-1
    Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
    Requires: /bin/bash
    Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root
    error: Installed (but unpackaged) file(s) found:
    /etc/udev/rules.d/60-zpool.rules
    /etc/zfs/zdev.conf
    /etc/zfs/zdev.conf.dragon.example
    /etc/zfs/zdev.conf.supermicro.example
    /etc/zfs/zdev.conf.x4550.example

RPM build errors:
File not found by glob: /tmp/zfs-build-root-FmhrFsgQ/TMP/zfs-0.4.9-1-root/usr/etc/*
Installed (but unpackaged) file(s) found:
/etc/udev/rules.d/60-zpool.rules
/etc/zfs/zdev.conf
/etc/zfs/zdev.conf.dragon.example
/etc/zfs/zdev.conf.supermicro.example
/etc/zfs/zdev.conf.x4550.example
make[1]: *** [rpm-common] Error 1
make[1]: Leaving directory `/usr/src/zfs-0.4.9'
make: *** [rpm-utils] Error 2

Reduce Stack Usage

The following stack usage is the current worst case stack usage I observed on an i686 FC12 box. 32-bit systems are going to be out worst case because they can be configured with 4k stacks and I'd like to fit in that if at all possible. The worst case offender here is zpios_ioctl_cmd() which is easy low hanging fruit but we should look at the other big functions and see what can be done.

        Depth    Size   Location    (78 entries)
        -----    ----   --------
  0)     4484      20   jiffies_to_timeval+0x23/0x3a
  1)     4464      48   acct_update_integrals+0x48/0xd3
  2)     4416      40   account_system_time+0x12d/0x135
  3)     4376      16   account_process_tick+0x5d/0x6f
  4)     4360      20   update_process_times+0x24/0x48
  5)     4340      24   tick_sched_timer+0x72/0xa0
  6)     4316      32   __run_hrtimer+0xa0/0xef
  7)     4284      60   hrtimer_interrupt+0xe0/0x1d5
  8)     4224       8   timer_interrupt+0x3b/0x42
  9)     4216      32   handle_IRQ_event+0x57/0xfd
 10)     4184      20   handle_level_irq+0x5e/0xb1
 11)     4164      20   handle_irq+0x40/0x4d
 12)     4144      24   do_IRQ+0x46/0x9a
 13)     4120      68   common_interrupt+0x30/0x38
 14)     4052      20   __queue_work+0x2f/0x34
 15)     4032       8   delayed_work_timer_fn+0x32/0x34
 16)     4024      60   run_timer_softirq+0x16d/0x1f0
 17)     3964      44   __do_softirq+0xb1/0x157
 18)     3920      12   do_softirq+0x36/0x41
 19)     3908       8   irq_exit+0x2e/0x61
 20)     3900      24   do_IRQ+0x86/0x9a
 21)     3876     104   common_interrupt+0x30/0x38
 22)     3772      12   __blk_run_queue+0x36/0x60
 23)     3760      68   cfq_insert_request+0x347/0x4e2
 24)     3692      28   elv_insert+0x11d/0x1b3
 25)     3664      28   __elv_add_request+0x92/0x99
 26)     3636      60   __make_request+0x312/0x386
 27)     3576      92   generic_make_request+0x21e/0x268
 28)     3484      60   submit_bio+0xc7/0xe0
 29)     3424      12   mpage_bio_submit+0x21/0x26
 30)     3412     176   do_mpage_readpage+0x527/0x58a
 31)     3236     128   mpage_readpages+0x88/0xbe
 32)     3108      12   ext3_readpages+0x19/0x1b
 33)     3096      56   __do_page_cache_readahead+0x102/0x160
 34)     3040      20   ra_submit+0x1c/0x21
 35)     3020      40   ondemand_readahead+0x181/0x18d
 36)     2980      28   page_cache_sync_readahead+0x38/0x42
 37)     2952     116   generic_file_aio_read+0x200/0x4e4
 38)     2836     168   do_sync_read+0xae/0xe9
 39)     2668      28   vfs_read+0x82/0xe1
 40)     2640      32   vn_rdwr+0x62/0x9e [spl]
 41)     2608      56   vdev_file_io_start+0xb1/0xe1 [zfs]
 42)     2552      44   zio_vdev_io_start+0x207/0x20f [zfs]
 43)     2508      32   zio_execute+0x91/0xaf [zfs]
 44)     2476      12   zio_nowait+0x31/0x34 [zfs]
 45)     2464     116   vdev_cache_read+0x2be/0x2d9 [zfs]
 46)     2348      44   zio_vdev_io_start+0x1b9/0x20f [zfs]
 47)     2304      32   zio_execute+0x91/0xaf [zfs]
 48)     2272      12   zio_nowait+0x31/0x34 [zfs]
 49)     2260     176   vdev_raidz_io_start+0x828/0x848 [zfs]
 50)     2084      44   zio_vdev_io_start+0x207/0x20f [zfs]
 51)     2040      32   zio_execute+0x91/0xaf [zfs]
 52)     2008      12   zio_nowait+0x31/0x34 [zfs]
 53)     1996      56   vdev_mirror_io_start+0x33e/0x358 [zfs]
 54)     1940      44   zio_vdev_io_start+0x42/0x20f [zfs]
 55)     1896      32   zio_execute+0x91/0xaf [zfs]
 56)     1864      12   zio_nowait+0x31/0x34 [zfs]
 57)     1852      76   arc_read_nolock+0x643/0x64d [zfs]
 58)     1776      48   arc_read+0x41/0x71 [zfs]
 59)     1728     108   dbuf_read+0x33b/0x458 [zfs]
 60)     1620      32   dbuf_findbp+0xd0/0x145 [zfs]
 61)     1588      48   dbuf_hold_impl+0x5b/0x1c5 [zfs]
 62)     1540      52   dbuf_findbp+0xb9/0x145 [zfs]
 63)     1488      48   dbuf_hold_impl+0x5b/0x1c5 [zfs]
 64)     1440      52   dbuf_findbp+0xb9/0x145 [zfs]
 65)     1388      48   dbuf_hold_impl+0x5b/0x1c5 [zfs]
 66)     1340      52   dbuf_findbp+0xb9/0x145 [zfs]
 67)     1288      48   dbuf_hold_impl+0x5b/0x1c5 [zfs]
 68)     1240     120   dnode_next_offset_level+0xd4/0x3d2 [zfs]
 69)     1120      72   dnode_next_offset+0xa8/0x153 [zfs]
 70)     1048     104   dmu_object_alloc+0xe6/0x1c8 [zfs]
 71)      944      52   zpios_dmu_object_create+0xa9/0x13e [zpios]
 72)      892     596   zpios_ioctl_cmd+0x5f3/0x1433 [zpios]
 73)      296      48   zpios_ioctl+0x1ed/0x235 [zpios]
 74)      248      32   vfs_ioctl+0x5c/0x76
 75)      216     104   do_vfs_ioctl+0x493/0x4d1
 76)      112      32   sys_ioctl+0x46/0x66
 77)       80      80   syscall_call+0x7/0xb

Unable to destroy faulted ZFS pool

I have this pool cached on my system:

      pool: tankmds1
     state: FAULTED
    status: One or more devices could not be used because the label is missing 
            or invalid.  There are insufficient replicas for the pool to continue
            functioning.
    action: Destroy and re-create the pool from
            a backup source.
       see: http://www.sun.com/msg/ZFS-8000-5E
     scan: none requested
    config:

            NAME             STATE     READ WRITE CKSUM
            tankmds1         FAULTED      0     0     0  corrupted data
              /tmp/img-mds1  UNAVAIL      0     0     0  corrupted data

But I'm unable to destroy it:

    [root@rhel5 zfs]# zpool destroy tankmds1
    cannot destroy 'tankmds1': one or more devices is currently unavailable

Not sure if this is an upstream bug or not, but the destroy is supposed to succeed.

I think the pool was created on top of a file on /tmp, which is still there, but I guess at some point the file was overwritten with zeros. Now when I load the ZFS module, I can't destroy the pool.
As a workaround, I can make the pool disappear by removing /etc/zfs/zpool.cache before loading the ZFS module.

I'm using these commits:

SPL: d0bd694
ZFS: 21191af

This is on RHEL5.5 using a Lustre-patched kernel (linux-2.6.18-164.6.1.el5).

Compilation problems on 32-bit systems

__divdi3 missing; propose to extend spl (optional reference: http://www.hackersdelight.org/HDcode/newCode/divDouble.c)

Compilation further required the following workarounds on my Lucid i386 box v2.6.35-rc3:

On your revision 8d2cb18:
0001-GCC-format-string-security-fixes.txt
0002-add_range-conflicts-with-new-kernel-symbol-since-v2.6..txt
0003-Size-of-format-parameter-is-arch-specific.txt

From f0639837324455f98457966ce94a34baba30a959 Mon Sep 17 00:00:00 2001
From: Seth Heeren 
Date: Wed, 7 Jul 2010 03:11:08 +0200
Subject: [PATCH 1/3] GCC format string security fixes

---
 cmd/zdb/zdb.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/cmd/zdb/zdb.c b/cmd/zdb/zdb.c
index 7735434..788d0d1 100644
--- a/cmd/zdb/zdb.c
+++ b/cmd/zdb/zdb.c
@@ -1663,7 +1663,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer)
 {
    time_t timestamp = ub->ub_timestamp;
 
-   (void) printf(header ? header : "");
+   (void) printf("%s", header ? header : "");
    (void) printf("\tmagic = %016llx\n", (u_longlong_t)ub->ub_magic);
    (void) printf("\tversion = %llu\n", (u_longlong_t)ub->ub_version);
    (void) printf("\ttxg = %llu\n", (u_longlong_t)ub->ub_txg);
@@ -1675,7 +1675,7 @@ dump_uberblock(uberblock_t *ub, const char *header, const char *footer)
        sprintf_blkptr(blkbuf, &ub->ub_rootbp);
        (void) printf("\trootbp = %s\n", blkbuf);
    }
-   (void) printf(footer ? footer : "");
+   (void) printf("%s", footer ? footer : "");
 }
 
 static void
-- 
1.7.0.4

From bdc1cf7401e2f06e9f6dc73f671a1f79725ac03c Mon Sep 17 00:00:00 2001
From: Seth Heeren 
Date: Wed, 7 Jul 2010 03:13:22 +0200
Subject: [PATCH 2/3] add_range conflicts with (new) kernel symbol since v2.6.33-rc7

---
 module/zfs/zfs_fm.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/module/zfs/zfs_fm.c b/module/zfs/zfs_fm.c
index 5138f49..c85b234 100644
--- a/module/zfs/zfs_fm.c
+++ b/module/zfs/zfs_fm.c
@@ -465,7 +465,7 @@ shrink_ranges(zfs_ecksum_info_t *eip)
 }
 
 static void
-add_range(zfs_ecksum_info_t *eip, int start, int end)
+zadd_range(zfs_ecksum_info_t *eip, int start, int end)
 {
    struct zei_ranges *r = eip->zei_ranges;
    size_t count = eip->zei_range_count;
@@ -570,7 +570,7 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info,
            if (start == -1)
                continue;
 
-           add_range(eip, start, idx);
+           zadd_range(eip, start, idx);
            start = -1;
        } else {
            if (start != -1)
@@ -580,7 +580,7 @@ annotate_ecksum(nvlist_t *ereport, zio_bad_cksum_t *info,
        }
    }
    if (start != -1)
-       add_range(eip, start, idx);
+       zadd_range(eip, start, idx);
 
    /* See if it will fit in our inline buffers */
    inline_size = range_total_size(eip);
-- 
1.7.0.4

From ec93bb4528d5e382eedf1b67affb88ff486be858 Mon Sep 17 00:00:00 2001
From: Seth Heeren 
Date: Wed, 7 Jul 2010 03:18:55 +0200
Subject: [PATCH 3/3] Size of format parameter is arch specific

---
 module/zpios/zpios.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/module/zpios/zpios.c b/module/zpios/zpios.c
index 9aa3b5c..e289bab 100644
--- a/module/zpios/zpios.c
+++ b/module/zpios/zpios.c
@@ -1041,7 +1041,7 @@ zpios_ioctl_cmd(struct file *file, unsigned long arg)
 
    kcmd = kmem_alloc(sizeof(zpios_cmd_t), KM_SLEEP);
    if (kcmd == NULL) {
-       zpios_print(file, "Unable to kmem_alloc() %ld byte for "
+       zpios_print(file, "Unable to kmem_alloc() %Iu byte for " // FIXME test on 64bit as well
                "zpios_cmd_t\n", sizeof(zpios_cmd_t));
        return -ENOMEM;
    }
-- 
1.7.0.4

Can't mount zfs-filesystems

Hi,

I'm using debian linux on a 2.6.32 kernel.
Compiling and installing zfs and spl worked fine as well as running spl's testsuite.
Unfortunatelly trying to mount the newly create zpool or an ufs inside it my kernel spits out the following stacktrace:

[ 5118.055503] BUG: using smp_processor_id() in preemptible [00000000] code: zfs/7343
[ 5118.055537] caller is txg_hold_open+0x15/0x52 [zfs]
[ 5118.055543] Pid: 7343, comm: zfs Tainted: P           2.6.32-my-kernel #2
[ 5118.055548] Call Trace:
[ 5118.055557]  [] ? debug_smp_processor_id+0xa2/0xb4
[ 5118.055606]  [] ? txg_hold_open+0x15/0x52 [zfs]
[ 5118.055633]  [] ? dmu_tx_assign+0x171/0x47b [zfs]
[ 5118.055645]  [] ? kmem_alloc_debug+0x55/0xc7 [spl]
[ 5118.055657]  [] ? kmem_alloc_debug+0xa7/0xc7 [spl]
[ 5118.055689]  [] ? dsl_sync_task_group_wait+0x2a/0x15a [zfs]
[ 5118.055732]  [] ? dsl_sync_task_do+0x33/0x46 [zfs]
[ 5118.055763]  [] ? spa_history_log_sync+0x0/0x452 [zfs]
[ 5118.055795]  [] ? spa_history_log+0x57/0x6f [zfs]
[ 5118.055839]  [] ? zfs_log_history+0x45/0x62 [zfs]
[ 5118.055880]  [] ? zfs_ioctl+0x133/0x14a [zfs]
[ 5118.055908]  [] ? zfs_ioctl+0x0/0x14a [zfs]
[ 5118.055917]  [] ? vfs_ioctl+0x15/0x72
[ 5118.055925]  [] ? do_vfs_ioctl+0x45f/0x4a3
[ 5118.055935]  [] ? sys_ioctl+0x44/0x64
[ 5118.055943]  [] ? sysenter_do_call+0x12/0x28

Feel free to contact me for further information :)

make rpm fails

It can't find <sys/tsol/label_macro.h> and <sys/tsol/label.h> to include into lib/libspl/ltos.c.
Strange, make without specifying target works ok. Only 'make rpm' fails.

Making all in asm-x86_64

make[6]: Entering directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0/lib/libspl'
[skip]
#   source='../../lib/libspl/ltos.c' object='ltos.lo' libtool=yes 
/bin/sh ../../libtool  --tag=CC --silent  --mode=compile gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -c -o ltos.lo `test -f '../../lib/libspl/ltos.c' || echo './'`../../lib/libspl/ltos.c
../../lib/libspl/ltos.c:29:34: error: sys/tsol/label_macro.h: No such file or directory
../../lib/libspl/ltos.c:30:28: error: sys/tsol/label.h: No such file or directory
In file included from ../../lib/libspl/ltos.c:31:
../../lib/libspl/include/label.h:76: error: expected declaration specifiers or '...' before 'm_label_t'
../../lib/libspl/include/label.h:77: error: expected declaration specifiers or '...' before 'm_label_t'
../../lib/libspl/include/label.h:79: error: expected ')' before '*' token
../../lib/libspl/include/label.h:80: error: expected declaration specifiers or '...' before 'm_label_t'
cc1: warnings being treated as errors
[skip]
make[6]: *** [ltos.lo] Error 1
make[6]: Leaving directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0/lib/libspl'
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0/lib/libspl'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0/lib'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/tmp/zfs-build-seriv-qAcU0y88/BUILD/zfs-0.5.0'
error: Bad exit status from /tmp/zfs-build-seriv-qAcU0y88/TMP/rpm-tmp.462Djt (%build)


RPM build errors:
    Bad exit status from /tmp/zfs-build-seriv-qAcU0y88/TMP/rpm-tmp.462Djt (%build)
make[1]: *** [rpm-common] Error 1
make[1]: Leaving directory `/home/seriv/work/zfs'
make: *** [rpm-utils] Error 2

Frame size error when building - Karmic

After building and installing SPL in Ubuntu 10.04 x86_64, doing a ./configure; make [with or without explicitly pointing to the kernel source] causes cc1 to bail with the following error:
/root/zfs/zfs-0.4.9/module/zfs/dsl_deleg.c: In function ‘dsl_deleg_get’:
/root/zfs/zfs-0.4.9/module/zfs/dsl_deleg.c:364: error: the frame size of 1040 bytes is larger than 1024 bytes

This is with a freshly updated system, running kernel version 2.6.32-22

Strange behavior during the zconfig.sh test on debian lenny with 2.6.32 kernel

Hi.

I re-installed SPL and ZFS on a clean machine to be sure there was no issue I missed.

And I get a strange behavior during the ZVOL Sanity test.

After the fresh compilation and installation of SPL and ZFS, the mkfs.ext3 command is hanging, and the only way I have to resolve this problem, is reboot the machine.

After a reboot, I can start again the zconfig.sh script, and the tests are working well.

Here is the syslog part : http://paste.davromaniak.eu/pastebin.php?show=m3fe8f8e6

The log of the mkfs.ext3 command : http://paste.davromaniak.eu/pastebin.php?show=m5fd28b0c

It's running for 40 minutes now, and if I reboot the machine, the full test will run with no error.

Also, there is no disk access now (there was some disk access at the beginning of the mkfs.ext3 command).

This is a strange behavior from the system, and I don't actually know which part of the system is affected.

Thanks.

Update core ZFS code from OpenSolaris

The 0.4.9 release is currently based on b121 which is getting quite stale. As part of the 0.5.0 release I need to make sure to update the ZFS core code to the latest build and of course work through all the breakage that will likely cause.

cannot create duplicate filename

Observed during zconfig test 4 using Ubuntu 2.6.32-22-generic kernel.

ZFS: 7dfe24e

SPL: Loaded Solaris Porting Layer v0.5.0
ZFS: Loaded ZFS Filesystem v0.5.0
------------[ cut here ]------------
WARNING: at /build/buildd/linux-2.6.32/fs/sysfs/dir.c:491 sysfs_add_one+0xa0/0x100()
Hardware name: Inspiron 531
sysfs: cannot create duplicate filename '/devices/virtual/block/test4!fish2'
Pid: 8679, comm: zfs Tainted: P           2.6.32-22-generic #36-Ubuntu
Call Trace:
 [] warn_slowpath_common+0x72/0xa0
 [] ? sysfs_add_one+0xa0/0x100
 [] ? sysfs_add_one+0xa0/0x100
 [] warn_slowpath_fmt+0x2b/0x30
 [] sysfs_add_one+0xa0/0x100
 [] create_dir+0x4e/0x90
 [] sysfs_create_dir+0x30/0x50
 [] kobject_add_internal+0x92/0x1d0
 [] ? vsnprintf+0xc8/0x410
 [] kobject_add_varg+0x2d/0x50
 [] ? get_device_parent+0xcb/0x1a0
 [] kobject_add+0x2c/0x60
 [] device_add+0x99/0x430
 [] ? kobject_set_name_vargs+0x64/0x70
 [] register_disk+0x36/0x140
 [] ? blk_register_region+0x32/0x40
 [] ? exact_match+0x0/0x10
 [] add_disk+0x85/0x150
 [] ? exact_match+0x0/0x10
 [] ? exact_lock+0x0/0x20
 [] zvol_create_minor+0x31a/0x380 [zfs]
 [] zfs_ioc_create+0x2a4/0x350 [zfs]
 [] ? zvol_create_cb+0x0/0x190 [zfs]
 [] ? zvol_create_cb+0x0/0x190 [zfs]
 [] zfs_ioctl+0xda/0x1c0 [zfs]
 [] ? zfs_ioctl+0x0/0x1c0 [zfs]
 [] vfs_ioctl+0x21/0x90
 [] do_vfs_ioctl+0x79/0x310
 [] ? do_page_fault+0x160/0x3a0
 [] sys_ioctl+0x67/0x80
 [] syscall_call+0x7/0xb

zfs.ko init hangs with fedora 2.6.33.6-147.fc13 kernel

I've pulled sources from top branch, made distclean, run autogen.sh, ./configure and make rpm and install rpm on Fedora-13. Kernel 2.6.33.6-147.fc13.x86_64.

$ git log | head -6
commit 21191af40b6151667bf2dc94890dc9d49a0812a6
Merge: 849bf9b 4103b50
Author: Brian Behlendorf 
Date:   Wed Jul 14 12:53:05 2010 -0700

    Merge commit 'refs/top-bases/top' into top
.

When I did 'sudo modprobe zfs' the computer hanged, not reacting to sysrq and power button.
I've rebooted, and did strace insmod for spl.ko and zfs *.ko, one by one.

# lsmod | grep z
Module                  Size  Used by
zunicode              319072  0 
zcommon                33219  0 
zavl                    5352  0 
znvpair                35203  1 zcommon
spl                    90825  4 zunicode,zcommon,zavl,znvpair
zlib_deflate           18911  1 btrfs

I was not able to insmod zpios.ko, - unknown symbol in the module, - I guess I should insmod it after zfs.
But insmod zfs gave me the same result: computer hanged.

# strace -f /sbin/insmod /lib/modules/2.6.33.6-147.fc13.x86_64/addon/zfs/zfs/zfs.ko 
execve("/sbin/insmod", ["/sbin/insmod", "/lib/modules/2.6.33.6-147.fc13.x"...], [/* 33 vars */]) = 0
brk(0)                                  = 0x105a000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb9f45cc000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=131789, ...}) = 0
mmap(NULL, 131789, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb9f45ab000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\355!A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1838296, ...}) = 0
mmap(0x3941200000, 3664040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941200000
mprotect(0x3941375000, 2097152, PROT_NONE) = 0
mmap(0x3941575000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x175000) = 0x3941575000
mmap(0x394157a000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x394157a000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb9f45aa000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb9f45a9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb9f45a8000
arch_prctl(ARCH_SET_FS, 0x7fb9f45a9700) = 0
mprotect(0x3941575000, 16384, PROT_READ) = 0
mprotect(0x394101e000, 4096, PROT_READ) = 0
munmap(0x7fb9f45ab000, 131789)          = 0
brk(0)                                  = 0x105a000
brk(0x107b000)                          = 0x107b000
open("/lib/modules/2.6.33.6-147.fc13.x86_64/addon/zfs/zfs/zfs.ko", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\1\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 16384) = 16384
read(3, "\320\353\0311\311H\203\312\377A\270\1\0\0\0H\211\336\350\r\326\377\377M\205\344u\32H\213=\0"..., 16384) = 16384
read(3, "$\300\0\0\0\2\17\205\246\0\0\0\17\266\25\0\0\0\0L\211\377\211U\220\350\0\0\0\0\213U"..., 32768) = 32768
read(3, "\211\357\350\0\0\0\0H\201\304\230\0\0\0[A\\A]A^A_\311\303UH\211\345AUA"..., 65536) = 65536
mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb9f4567000
read(3, "\350\0\0\0\0\203}\254\0\17\205\305\376\377\377H\213}\230H\205\377t\10L\211\346\350\0\0\0\0"..., 131072) = 131072
mremap(0x7fb9f4567000, 266240, 528384, MREMAP_MAYMOVE) = 0x7fb9f44e6000
read(3, "E\220L\211\342L\211\356D\211\367\307E\220 \0\0\0H\211E\230H\215E\260H\211E\240\350\226"..., 262144) = 262144
mremap(0x7fb9f44e6000, 528384, 1052672, MREMAP_MAYMOVE) = 0x7fb9f43e5000
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\2\0\0\0\0\0"..., 524288) = 524288
mremap(0x7fb9f43e5000, 1052672, 2101248, MREMAP_MAYMOVE) = 0x7fb9f41e4000
read(3, "\2\36\0\0\0\0\223w\1\343\356\0\0\300\2\36\0\0\0\0\223x\1\364\5\0\0\310\2\36\0\0"..., 1048576) = 1048576
mremap(0x7fb9f41e4000, 2101248, 4198400, MREMAP_MAYMOVE) = 0x7fb9f3de3000
read(3, "9\3\0\0\200\2\v\0\0\0\0\213e9\3\0\0\210\2\v\0\0\0\0\213f9\3\0\0\220\2"..., 2097152) = 2097152
mremap(0x7fb9f3de3000, 4198400, 8392704, MREMAP_MAYMOVE) = 0x7fb9f35e2000
read(3, "\10\10\36*\0\0\"\0\0\0\0y\3\1S\306\0\0\f\1_\306\0\0\rT\273\0\0\0\"\0"..., 4194304) = 4194304
mremap(0x7fb9f35e2000, 8392704, 16781312, MREMAP_MAYMOVE) = 0x7fb9f25e1000
read(3, "t_share\0os_groupused_dnode\0write"..., 8388608) = 8388608
mremap(0x7fb9f25e1000, 16781312, 33558528, MREMAP_MAYMOVE) = 0x7fb9f05e0000
read(3, "R\22&\0\0\0\0\0f^@\0\0\0\0\0\n\0\0\0\25\0\0\0004\263%\0\0\0\0\0"..., 16777216) = 1112222
read(3, "", 15664994)                   = 0
close(3)                                = 0
init_module(0x7fb9f05e0010, 17889438, ""

and I was able to recover it only by hard reset.

Large kmem allocs in get_nvlist and load_nvlist

Backtraces:

SPL: large kmem_alloc(11876, 0x50) at get_nvlist:911 (341009/1877530)
SPL: Showing stack for process 23078

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88540bcf>] :zfs:get_nvlist+0x50/0xb8
[<ffffffff800de8b6>] __vmalloc_node+0x56/0x63
[<ffffffff88541223>] :zfs:zfs_ioc_pool_tryimport+0x2e/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2639492/2643588)
SPL: Showing stack for process 23078

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88510a84>] :zfs:load_nvlist+0xb8/0x109
[<ffffffff88514746>] :zfs:spa_load+0xdfb/0x11b4
[<ffffffff8850fea2>] :zfs:spa_activate+0x41e/0x44b
[<ffffffff88514b8a>] :zfs:spa_tryimport+0x8b/0x38f
[<ffffffff88541234>] :zfs:zfs_ioc_pool_tryimport+0x3f/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11876, 0x50) at get_nvlist:911 (353643/2795475)
SPL: Showing stack for process 23078

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88540bcf>] :zfs:get_nvlist+0x50/0xb8
[<ffffffff800de8b6>] __vmalloc_node+0x56/0x63
[<ffffffff88541223>] :zfs:zfs_ioc_pool_tryimport+0x2e/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2639140/2795475)
SPL: Showing stack for process 23078

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88510a84>] :zfs:load_nvlist+0xb8/0x109
[<ffffffff88514746>] :zfs:spa_load+0xdfb/0x11b4
[<ffffffff8850fea2>] :zfs:spa_activate+0x41e/0x44b
[<ffffffff88514b8a>] :zfs:spa_tryimport+0x8b/0x38f
[<ffffffff88541234>] :zfs:zfs_ioc_pool_tryimport+0x3f/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11876, 0x50) at get_nvlist:911 (353643/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88540bcf>] :zfs:get_nvlist+0x50/0xb8
[<ffffffff800de8b6>] __vmalloc_node+0x56/0x63
[<ffffffff88541223>] :zfs:zfs_ioc_pool_tryimport+0x2e/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2638876/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88510a84>] :zfs:load_nvlist+0xb8/0x109
[<ffffffff88514746>] :zfs:spa_load+0xdfb/0x11b4
[<ffffffff8850fea2>] :zfs:spa_activate+0x41e/0x44b
[<ffffffff88514b8a>] :zfs:spa_tryimport+0x8b/0x38f
[<ffffffff88541234>] :zfs:zfs_ioc_pool_tryimport+0x3f/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11876, 0x50) at get_nvlist:911 (353643/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88540bcf>] :zfs:get_nvlist+0x50/0xb8
[<ffffffff800de8b6>] __vmalloc_node+0x56/0x63
[<ffffffff88541223>] :zfs:zfs_ioc_pool_tryimport+0x2e/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2639404/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88510a84>] :zfs:load_nvlist+0xb8/0x109
[<ffffffff88514746>] :zfs:spa_load+0xdfb/0x11b4
[<ffffffff8850fea2>] :zfs:spa_activate+0x41e/0x44b
[<ffffffff88514b8a>] :zfs:spa_tryimport+0x8b/0x38f
[<ffffffff88541234>] :zfs:zfs_ioc_pool_tryimport+0x3f/0x72
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(32572, 0x50) at get_nvlist:911 (353643/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88540bcf>] :zfs:get_nvlist+0x50/0xb8
[<ffffffff800de8b6>] __vmalloc_node+0x56/0x63
[<ffffffff8854129c>] :zfs:zfs_ioc_pool_import+0x35/0x10d
[<ffffffff8849fb73>] :zcommon:pool_namecheck+0xbb/0x100
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2712556/2795475)
SPL: Showing stack for process 23462

Call Trace:
[<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
[<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
[<ffffffff88510a84>] :zfs:load_nvlist+0xb8/0x109
[<ffffffff8854aa84>] :zfs:zio_destroy+0x14a/0x153
[<ffffffff88514746>] :zfs:spa_load+0xdfb/0x11b4
[<ffffffff8003da06>] debug_mutex_free_waiter+0x5a/0x5e
[<ffffffff88514eee>] :zfs:spa_load_best+0x60/0x1e4
[<ffffffff88516757>] :zfs:spa_import+0xe7/0x627
[<ffffffff884319d7>] :znvpair:nvlist_lookup_common+0x7d/0x90
[<ffffffff88541326>] :zfs:zfs_ioc_pool_import+0xbf/0x10d
[<ffffffff885401c8>] :zfs:zfs_ioctl+0x122/0x18d
[<ffffffff800463c2>] do_ioctl+0x2a/0x77
[<ffffffff80033098>] vfs_ioctl+0x456/0x4b7
[<ffffffff800c3b06>] audit_syscall_entry+0x18b/0x1c1
[<ffffffff800513a6>] sys_ioctl+0x5f/0x82
[<ffffffff8006328d>] tracesys+0xd5/0xe0

make failed: the frame size of 1040 bytes is larger than 1024 bytes

latest ubuntu.

/bin/bash ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2   -o zpios zpios_main.o zpios_util.o  -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/home/domdorn/tmp/zfs/zfs-0.4.9/cmd/zpios'
make[3]: Entering directory `/home/domdorn/tmp/zfs/zfs-0.4.9/cmd'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/home/domdorn/tmp/zfs/zfs-0.4.9/cmd'
make[2]: Leaving directory `/home/domdorn/tmp/zfs/zfs-0.4.9/cmd'
Making all in module
make[2]: Entering directory `/home/domdorn/tmp/zfs/zfs-0.4.9/module'
# Make the exported SPL symbols available to these modules.
cp /home/domdorn/tmp/zfs/behlendorf-spl-5c04498//module/Module.symvers .
make -C /usr/src/linux-headers-2.6.32-23-generic SUBDIRS=`pwd`  modules
make[3]: Entering directory `/usr/src/linux-headers-2.6.32-23-generic'
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/avl/avl.o
  LD [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/avl/zavl.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/nvpair/nvpair.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/nvpair/nvpair_alloc_spl.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/nvpair/nvpair_alloc_fixed.o
  LD [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/nvpair/znvpair.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/unicode/u8_textprep.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/unicode/uconv.o
  LD [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/unicode/zunicode.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zfs_deleg.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zfs_prop.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zprop_common.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zfs_namecheck.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zfs_comutil.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zpool_prop.o
  LD [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zcommon/zcommon.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/arc.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/bplist.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dbuf.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_object.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_objset.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_send.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_traverse.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_tx.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dmu_zfetch.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dnode.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dnode_sync.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dsl_dataset.o
  CC [M]  /home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dsl_deleg.o
cc1: warnings being treated as errors
/home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dsl_deleg.c: In function ‘dsl_deleg_get’:
/home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dsl_deleg.c:364: error: the frame size of 1040 bytes is larger than 1024 bytes
make[5]: *** [/home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs/dsl_deleg.o] Error 1
make[4]: *** [/home/domdorn/tmp/zfs/zfs-0.4.9/module/zfs] Error 2
make[3]: *** [_module_/home/domdorn/tmp/zfs/zfs-0.4.9/module] Error 2
make[3]: Leaving directory `/usr/src/linux-headers-2.6.32-23-generic'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/home/domdorn/tmp/zfs/zfs-0.4.9/module'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/domdorn/tmp/zfs/zfs-0.4.9'
make: *** [all] Error 2
root@domdorn-laptop:/home/domdorn/tmp/zfs/zfs-0.4.9# ls
aclocal.m4  ChangeLog  config.log     configure.ac  DISCLAIMER  lib   Makefile.am  META         README    zfs_config.h  zfs-modules.spec.in  zfs.spec.in
AUTHORS     cmd        config.status  COPYING       etc     libtool   Makefile.in  module           scripts   zfs_config.h.in   ZFS.RELEASE
autogen.sh  config     configure      COPYRIGHT     GIT     Makefile  man          OPENSOLARIS.LICENSE  stamp-h1  zfs-modules.spec  zfs.spec

root@domdorn-laptop:/home/domdorn/tmp/zfs/zfs-0.4.9# uname -a
Linux domdorn-laptop 2.6.32-23-generic #37-Ubuntu SMP Fri Jun 11 08:03:28 UTC 2010 x86_64 GNU/Linux
root@domdorn-laptop:/home/domdorn/tmp/zfs/zfs-0.4.9# 

using spl behlendorf-spl-5c04498

files instead of blockdevices for vdevs do not work

I think this is trivial to implement and should work according to upstream and e.g. zfs-fuse

I suppose it might not be much more than a simple replace of a ioctl(fd, BLKGETSIZE64, &i) by the appropriate stat call?

It would be really neat because it enables us to test various pool layouts using sparse files, like so (output shows it currently don't work):

sehe@lucid:/tmp$ dd of=backing.vdev bs=512M seek=1024 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 9.398e-06 s, 0.0 kB/s

sehe@lucid:/tmp$ sudo zpool create test /tmp/backing.vdev
[sudo] password for sehe:
cannot create 'test': one or more devices is less than the minimum size (64M)

sehe@lucid:/tmp$ ls -ltrah
-rw-r--r-- 1 sehe sehe 512G 2010-07-15 23:26 backing.vdev

Large kmem allocs during mzap_upgrade()

It looks like some large kmem allocs are being done during mzap_upgrade():

SPL: large kmem_alloc(131072, 0x50) at mzap_upgrade:535 (4854076/5012299)
SPL: Showing stack for process 14903

Call Trace:
 [<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
 [<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
 [<ffffffff885395a1>] :zfs:mzap_upgrade+0xcf/0x288
 [<ffffffff8853a0dd>] :zfs:zap_lockdir+0x983/0xa7e
 [<ffffffff88000001>] :ehci_hcd:periodic_usecs+0x1/0xf5
 [<ffffffff8853b18f>] :zfs:zap_add+0x3d/0x170
 [<ffffffff88a51c6b>] :osd_zfs:udmu_zap_insert+0xcb/0xf0
 [<ffffffff88a46271>] :osd_zfs:osd_dt_dev+0x11/0x40
 [<ffffffff88a4f371>] :osd_zfs:osd_object_create+0x311/0x540
 [<ffffffff885eb969>] :libcfs:libcfs_debug_vmsg2+0x809/0xaf0
 [<ffffffff88a24bd7>] :ldiskfs:dynlock_lock+0x137/0x300
 [<ffffffff80013b06>] poison_obj+0x27/0x32
 [<ffffffff88a24bd7>] :ldiskfs:dynlock_lock+0x137/0x300
 [<ffffffff80174ddd>] __spin_lock_init+0x31/0x52
 [<ffffffff88acbfd9>] :mdd:mdd_object_create_internal+0x1c9/0x2a0
 [<ffffffff8006ae11>] __down_write+0xb/0xd
 [<ffffffff88aec534>] :mdd:mdd_create+0x1334/0x1eb0
 [<ffffffff88acebfc>] :mdd:mdd_version_get+0x9c/0xb0
 [<ffffffff88b8f7b7>] :cmm:cml_create+0x197/0x210
 [<ffffffff88b45eb9>] :mdt:mdt_reint_open+0x22d9/0x2ee0
 [<ffffffff88aef892>] :mdd:md_ucred+0x42/0x50
 [<ffffffff88aef892>] :mdd:md_ucred+0x42/0x50
 [<ffffffff88b312a3>] :mdt:mdt_reint_rec+0x83/0x100
 [<ffffffff88b15f65>] :mdt:mdt_reint_internal+0x8e5/0x990
 [<ffffffff88b23be5>] :mdt:mdt_intent_reint+0x1f5/0x5a0
 [<ffffffff88b243f7>] :mdt:mdt_intent_policy+0x467/0x650
 [<ffffffff8879000d>] :ptlrpc:ldlm_resource_putref+0x38d/0x3a0
 [<ffffffff8878b45c>] :ptlrpc:ldlm_lock_enqueue+0x17c/0x980
 [<ffffffff885f1399>] :libcfs:cfs_hash_add+0x219/0x250
 [<ffffffff887a8ff5>] :ptlrpc:ldlm_handle_enqueue0+0xa55/0x1050
 [<ffffffff88b1802d>] :mdt:mdt_unpack_req_pack_rep+0x5ed/0x6b0
 [<ffffffff88b23892>] :mdt:mdt_enqueue+0x72/0x100
 [<ffffffff88b192d6>] :mdt:mdt_handle_common+0x11e6/0x1750
 [<ffffffff88b19910>] :mdt:mdt_regular_handle+0x10/0x20
 [<ffffffff887d6b6a>] :ptlrpc:ptlrpc_server_handle_request+0x8da/0xec0
 [<ffffffff8009477d>] default_wake_function+0xd/0xf
 [<ffffffff8006b411>] _spin_unlock_bh+0x2f/0x34
 [<ffffffff885e1019>] :libcfs:cfs_timer_arm+0x9/0x10
 [<ffffffff887dbd83>] :ptlrpc:ptlrpc_main+0x1333/0x14d0
 [<ffffffff80094770>] default_wake_function+0x0/0xf
 [<ffffffff80063fb1>] child_rip+0xa/0x11


SPL: large kmem_alloc(131072, 0x50) at mzap_upgrade:535 (4893853/5012299)
SPL: Showing stack for process 15315

Call Trace:
 [<ffffffff883b6b22>] :spl:spl_debug_dumpstack+0x2b/0x2d
 [<ffffffff883bb46a>] :spl:kmem_alloc_debug+0xc8/0x29c
 [<ffffffff885395a1>] :zfs:mzap_upgrade+0xcf/0x288
 [<ffffffff8853a0dd>] :zfs:zap_lockdir+0x983/0xa7e
 [<ffffffff88000001>] :ehci_hcd:periodic_usecs+0x1/0xf5
 [<ffffffff8853b18f>] :zfs:zap_add+0x3d/0x170
 [<ffffffff88a51c6b>] :osd_zfs:udmu_zap_insert+0xcb/0xf0
 [<ffffffff88a46271>] :osd_zfs:osd_dt_dev+0x11/0x40
 [<ffffffff88a4f371>] :osd_zfs:osd_object_create+0x311/0x540
 [<ffffffff883bb50f>] :spl:kmem_alloc_debug+0x16d/0x29c
 [<ffffffff800e9a41>] __kmalloc+0xfc/0x108
 [<ffffffff88a487c0>] :osd_zfs:osd_trans_commit_cb+0x0/0x2b0
 [<ffffffff884d9a4b>] :zfs:dmu_tx_callback_register+0x56/0x5e
 [<ffffffff8006b74a>] _spin_unlock_irq+0x26/0x2c
 [<ffffffff8006ada2>] __down_write_nested+0x3d/0xa1
 [<ffffffff8006ae11>] __down_write+0xb/0xd
 [<ffffffff88c13a1f>] :obdfilter:filter_precreate_object+0x98f/0xca0
 [<ffffffff88c11a07>] :obdfilter:filter_create+0xe37/0xf30
 [<ffffffff88bec1e1>] :ost:ost_handle+0x1ee1/0x52e6
 [<ffffffff8006b43c>] _spin_unlock+0x26/0x2a
 [<ffffffff885e027f>] :libcfs:cfs_trace_unlock_tcd+0x6f/0x80
 [<ffffffff885eb969>] :libcfs:libcfs_debug_vmsg2+0x809/0xaf0
 [<ffffffff8001bae6>] vsnprintf+0x340/0x5b0
 [<ffffffff885e6cbf>] :libcfs:libcfs_next_nidstring+0x3f/0x60
 [<ffffffff885e6c2f>] :libcfs:libcfs_decnum_addr2str+0x1f/0x30
 [<ffffffff885e6d9e>] :libcfs:libcfs_nid2str+0xbe/0x100
 [<ffffffff887cb662>] :ptlrpc:lustre_msg_get_opc+0x22/0xf0
 [<ffffffff887d6b6a>] :ptlrpc:ptlrpc_server_handle_request+0x8da/0xec0
 [<ffffffff8009477d>] default_wake_function+0xd/0xf
 [<ffffffff8006b411>] _spin_unlock_bh+0x2f/0x34
 [<ffffffff885e1019>] :libcfs:cfs_timer_arm+0x9/0x10
 [<ffffffff887dbd83>] :ptlrpc:ptlrpc_main+0x1333/0x14d0
 [<ffffffff80094770>] default_wake_function+0x0/0xf
 [<ffffffff80063fb1>] child_rip+0xa/0x11
 [<ffffffff885e02fa>] :libcfs:cfs_trace_lock_tcd+0x6a/0x80
 [<ffffffff887daa50>] :ptlrpc:ptlrpc_main+0x0/0x14d0
 [<ffffffff80063fa7>] child_rip+0x0/0x11

test scripts for ubuntu 10.04.

When i do the test on ubuntu 10.04

  1. ./configure
  2. make
  3. make install

then the zfs folder for libexec was located under /usr/local/libexec/zfs
but the location of the reference in test scripts such as zconfig.sh is "/usr/libexec".

so maybe this is one thing worth improving.

thanks very much

Fuse Implementation

There currently exists a popular fuse based implementation of the ZFS for Linux originally started by Ricardo Correia. I would very much like to explore the idea of working with the current ZFS on FUSE/Linux guys to get the same sort of thing working with this code base. After talking with Ricardo I know he likes the idea.

http://zfs-fuse.net/

Having ZVOL can cause EBUSY for certain operations

As of zfs-0.4.8 merely creating a zvol causes certain operations such as 'zpool destroy' and 'zpool export' return 'pool is busy', e.g.:

$ zpool create -f tank /dev/sdb1
$ zfs create -V 500M tank/zvol
$ zpool destroy tank
cannot destroy 'tank': pool is busy

This is because the zvol in the Linux port opens the objset when the minor device is created and closes it when the minor is destroyed. This causes the zvol to keep a reference on the spa even though it might not actively be in use. It looks like the Solaris zvol implementation uses dmu_objset_{own,disown}() and doesn't leave the device open. The Linux port should do something similar in the long term.

In the meanwhile if this is a problem the workaround is to simply explicitly destroy all of the volumes in a pool before destroying the pool itself.

$ zpool create -f tank /dev/sdb1
$ zfs create -V 500M tank/zvol
$ zfs destroy tank/zvol
$ zpool destroy tank

zfs commands return EINVAL

Opening as a new bug remaining issue in bug #32.

Here they are:

[root@localhost ~]# strace zpool list
execve("/usr/sbin/zpool", ["zpool", "list"], [/* 27 vars */]) = 0
brk(0)                                  = 0x1707000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160f6000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=141347, ...}) = 0
mmap(NULL, 141347, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f09160d3000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240>\240A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=598816, ...}) = 0
mmap(0x3941a00000, 2633944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941a00000
mprotect(0x3941a83000, 2093056, PROT_NONE) = 0
mmap(0x3941c82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0x3941c82000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@!`B9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=47072, ...}) = 0
mmap(0x3942600000, 2128816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3942600000
mprotect(0x3942607000, 2093056, PROT_NONE) = 0
mmap(0x3942806000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x3942806000
close(3)                                = 0
open("/usr/lib/libspl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220-\240T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=101116, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160d2000
mmap(0x3654a00000, 2124688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654a00000
mprotect(0x3654a06000, 2093056, PROT_NONE) = 0
mmap(0x3654c05000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x3654c05000
close(3)                                = 0
open("/usr/lib/libavl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\10 T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=27413, ...}) = 0
mmap(0x3654200000, 2103712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654200000
mprotect(0x3654202000, 2093056, PROT_NONE) = 0
mmap(0x3654401000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3654401000
close(3)                                = 0
open("/usr/lib/libefi.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \r`U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=48116, ...}) = 0
mmap(0x3655600000, 2114776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655600000
mprotect(0x3655604000, 2097152, PROT_NONE) = 0
mmap(0x3655804000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x3655804000
close(3)                                = 0
open("/usr/lib/libnvpair.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 /`T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149217, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160d1000
mmap(0x3654600000, 2139592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654600000
mprotect(0x365460a000, 2097152, PROT_NONE) = 0
mmap(0x365480a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x365480a000
close(3)                                = 0
open("/usr/lib/libunicode.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\7\240U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=378152, ...}) = 0
mmap(0x3655a00000, 2419832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655a00000
mprotect(0x3655a4f000, 2093056, PROT_NONE) = 0
mmap(0x3655c4e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4e000) = 0x3655c4e000
close(3)                                = 0
open("/usr/lib/libuutil.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320#\340S6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=103399, ...}) = 0
mmap(0x3653e00000, 2132344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3653e00000
mprotect(0x3653e09000, 2093056, PROT_NONE) = 0
mmap(0x3654008000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x3654008000
close(3)                                = 0
open("/usr/lib/libzpool.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\r\"U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2943720, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160d0000
mmap(0x3655200000, 2914976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655200000
mprotect(0x36552b6000, 2097152, PROT_NONE) = 0
mmap(0x36554b6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb6000) = 0x36554b6000
mmap(0x36554bc000, 47776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x36554bc000
close(3)                                = 0
open("/usr/lib/libzfs.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240r\340T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=591565, ...}) = 0
mmap(0x3654e00000, 2321400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654e00000
mprotect(0x3654e36000, 2097152, PROT_NONE) = 0
mmap(0x3655036000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36000) = 0x3655036000
close(3)                                = 0
open("/lib64/libuuid.so.1", O_RDONLY)   = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0#?\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=18648, ...}) = 0
mmap(0x3f23000000, 2110984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3f23000000
mprotect(0x3f23004000, 2093056, PROT_NONE) = 0
mmap(0x3f23203000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x3f23203000
close(3)                                = 0
open("/lib64/libz.so.1", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\36 B9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88368, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160cf000
mmap(0x3942200000, 2181168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3942200000
mprotect(0x3942215000, 2093056, PROT_NONE) = 0
mmap(0x3942414000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x3942414000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\\`A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=141576, ...}) = 0
mmap(0x3941600000, 2208672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941600000
mprotect(0x3941617000, 2093056, PROT_NONE) = 0
mmap(0x3941816000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x3941816000
mmap(0x3941818000, 13216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3941818000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\355!A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1838296, ...}) = 0
mmap(0x3941200000, 3664040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941200000
mprotect(0x3941375000, 2097152, PROT_NONE) = 0
mmap(0x3941575000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x175000) = 0x3941575000
mmap(0x394157a000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x394157a000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160ce000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160cd000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160cb000
arch_prctl(ARCH_SET_FS, 0x7f09160cbb40) = 0
mprotect(0x3941c82000, 4096, PROT_READ) = 0
mprotect(0x3942806000, 4096, PROT_READ) = 0
mprotect(0x3941816000, 4096, PROT_READ) = 0
mprotect(0x3941575000, 16384, PROT_READ) = 0
mprotect(0x394101e000, 4096, PROT_READ) = 0
munmap(0x7f09160d3000, 141347)          = 0
set_tid_address(0x7f09160cbe10)         = 3701
set_robust_list(0x7f09160cbe20, 0x18)   = 0
futex(0x7fff8dc1f21c, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fff8dc1f21c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7f09160cbb40) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x3941605a90, [], SA_RESTORER|SA_SIGINFO, 0x394160f440}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x3941605b20, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x394160f440}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x1707000
brk(0x1728000)                          = 0x1728000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158752, ...}) = 0
mmap(NULL, 99158752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f091023a000
close(3)                                = 0
open("/dev/zfs", O_RDWR)                = 3
open("/proc/mounts", O_RDONLY)          = 4
open("/etc/dfs/sharetab", O_RDONLY)     = -1 ENOENT (No such file or directory)
ioctl(3, 0x5a04, 0x7fff8dc16af0)        = 0
ioctl(3, 0x5a05, 0x7fff8dc16ab0)        = 0
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a05, 0x7fff8dc16ab0)        = 0
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a70)        = -1 EINVAL (Invalid argument)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 6), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f09160f5000
write(1, "NAME   SIZE  ALLOC   FREE    CAP"..., 57NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
) = 57
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
write(1, "-         -      -      -      -"..., 51-         -      -      -      -      -       -  -
) = 51
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
ioctl(3, 0x5a28, 0x7fff8dc15a60)        = -1 EINVAL (Invalid argument)
write(1, "-         -      -      -      -"..., 51-         -      -      -      -      -       -  -
) = 51
close(3)                                = 0
close(4)                                = 0
exit_group(0)                           = ?

and

[root@localhost ~]# strace -f -o /var/tmp/zsnap.log zfs snapshot data/phoronix@test
internal error: Invalid argument
Aborted (core dumped)
[root@localhost ~]# strace  zfs snapshot data/phoronix@newtest
execve("/usr/sbin/zfs", ["zfs", "snapshot", "data/phoronix@newtest"], [/* 27 vars */]) = 0
brk(0)                                  = 0x8f9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced49b5000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=141347, ...}) = 0
mmap(NULL, 141347, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fced4992000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240>\240A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=598816, ...}) = 0
mmap(0x3941a00000, 2633944, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941a00000
mprotect(0x3941a83000, 2093056, PROT_NONE) = 0
mmap(0x3941c82000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x82000) = 0x3941c82000
close(3)                                = 0
open("/lib64/librt.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@!`B9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=47072, ...}) = 0
mmap(0x3942600000, 2128816, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3942600000
mprotect(0x3942607000, 2093056, PROT_NONE) = 0
mmap(0x3942806000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x3942806000
close(3)                                = 0
open("/usr/lib/libspl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220-\240T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=101116, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced4991000
mmap(0x3654a00000, 2124688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654a00000
mprotect(0x3654a06000, 2093056, PROT_NONE) = 0
mmap(0x3654c05000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x3654c05000
close(3)                                = 0
open("/usr/lib/libavl.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\10 T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=27413, ...}) = 0
mmap(0x3654200000, 2103712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654200000
mprotect(0x3654202000, 2093056, PROT_NONE) = 0
mmap(0x3654401000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x3654401000
close(3)                                = 0
open("/usr/lib/libefi.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \r`U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=48116, ...}) = 0
mmap(0x3655600000, 2114776, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655600000
mprotect(0x3655604000, 2097152, PROT_NONE) = 0
mmap(0x3655804000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x3655804000
close(3)                                = 0
open("/usr/lib/libnvpair.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 /`T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=149217, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced4990000
mmap(0x3654600000, 2139592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654600000
mprotect(0x365460a000, 2097152, PROT_NONE) = 0
mmap(0x365480a000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x365480a000
close(3)                                = 0
open("/usr/lib/libunicode.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\7\240U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=378152, ...}) = 0
mmap(0x3655a00000, 2419832, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655a00000
mprotect(0x3655a4f000, 2093056, PROT_NONE) = 0
mmap(0x3655c4e000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4e000) = 0x3655c4e000
close(3)                                = 0
open("/usr/lib/libuutil.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320#\340S6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=103399, ...}) = 0
mmap(0x3653e00000, 2132344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3653e00000
mprotect(0x3653e09000, 2093056, PROT_NONE) = 0
mmap(0x3654008000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x3654008000
close(3)                                = 0
open("/usr/lib/libzpool.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\r\"U6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2943720, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced498f000
mmap(0x3655200000, 2914976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3655200000
mprotect(0x36552b6000, 2097152, PROT_NONE) = 0
mmap(0x36554b6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb6000) = 0x36554b6000
mmap(0x36554bc000, 47776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x36554bc000
close(3)                                = 0
open("/usr/lib/libzfs.so.0", O_RDONLY)  = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240r\340T6\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=591565, ...}) = 0
mmap(0x3654e00000, 2321400, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3654e00000
mprotect(0x3654e36000, 2097152, PROT_NONE) = 0
mmap(0x3655036000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36000) = 0x3655036000
close(3)                                = 0
open("/lib64/libuuid.so.1", O_RDONLY)   = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\24\0#?\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=18648, ...}) = 0
mmap(0x3f23000000, 2110984, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3f23000000
mprotect(0x3f23004000, 2093056, PROT_NONE) = 0
mmap(0x3f23203000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x3f23203000
close(3)                                = 0
open("/lib64/libz.so.1", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\36 B9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=88368, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced498e000
mmap(0x3942200000, 2181168, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3942200000
mprotect(0x3942215000, 2093056, PROT_NONE) = 0
mmap(0x3942414000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x3942414000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\\`A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=141576, ...}) = 0
mmap(0x3941600000, 2208672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941600000
mprotect(0x3941617000, 2093056, PROT_NONE) = 0
mmap(0x3941816000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x3941816000
mmap(0x3941818000, 13216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3941818000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\355!A9\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1838296, ...}) = 0
mmap(0x3941200000, 3664040, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3941200000
mprotect(0x3941375000, 2097152, PROT_NONE) = 0
mmap(0x3941575000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x175000) = 0x3941575000
mmap(0x394157a000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x394157a000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced498d000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced498c000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced498a000
arch_prctl(ARCH_SET_FS, 0x7fced498ab40) = 0
mprotect(0x3941c82000, 4096, PROT_READ) = 0
mprotect(0x3942806000, 4096, PROT_READ) = 0
mprotect(0x3941816000, 4096, PROT_READ) = 0
mprotect(0x3941575000, 16384, PROT_READ) = 0
mprotect(0x394101e000, 4096, PROT_READ) = 0
munmap(0x7fced4992000, 141347)          = 0
set_tid_address(0x7fced498ae10)         = 3884
set_robust_list(0x7fced498ae20, 0x18)   = 0
futex(0x7fff8884115c, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fff8884115c, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, 7fced498ab40) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0x3941605a90, [], SA_RESTORER|SA_SIGINFO, 0x394160f440}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x3941605b20, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x394160f440}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
brk(0)                                  = 0x8f9000
brk(0x91a000)                           = 0x91a000
open("/usr/lib/locale/locale-archive", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=99158752, ...}) = 0
mmap(NULL, 99158752, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fceceaf9000
close(3)                                = 0
open("/proc/mounts", O_RDONLY)          = 3
open("/dev/zfs", O_RDWR)                = 4
open("/proc/mounts", O_RDONLY)          = 5
open("/etc/dfs/sharetab", O_RDONLY)     = -1 ENOENT (No such file or directory)
open("/usr/share/locale/locale.alias", O_RDONLY) = 6
fstat(6, {st_mode=S_IFREG|0644, st_size=2512, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fced49b4000
read(6, "# Locale name alias data base.\n#"..., 4096) = 2512
read(6, "", 4096)                       = 0
close(6)                                = 0
munmap(0x7fced49b4000, 4096)            = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/zfs-linux-user.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
ioctl(4, 0x5a12, 0x7fff88837c70)        = 0
ioctl(4, 0x5a05, 0x7fff88833680)        = 0
ioctl(4, 0x5a24, 0x7fff8883c620)        = -1 EINVAL (Invalid argument)
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "internal error: Invalid argument"..., 33internal error: Invalid argument
) = 33
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(3884, 3884, SIGABRT)             = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT (core dumped) +++
Aborted (core dumped)
.

Interesting that zpool list shows nothing while zpool status works:

[root@localhost ~]# zpool list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
-         -      -      -      -      -       -  -
-         -      -      -      -      -       -  -
[root@localhost ~]# zpool status
  pool: data
 state: ONLINE
 scan: scrub repaired 0 in 755h12m with 0 errors on Mon Aug  2 21:54:24 2010
config:

    NAME        STATE     READ WRITE CKSUM
    data        ONLINE       0     0     0
      sdc2      ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
 scan: none requested
config:

    NAME        STATE     READ WRITE CKSUM
    rpool       ONLINE       0     0     0
      sdc1      ONLINE       0     0     0

errors: No known data errors

infinite hang on loading zfs module

On Ubuntu 10.04 amd64, with a git checkout (ID: 7dfe24e), I loaded the zfs module, made 7 pools named "disk1" through "disk7", and made a zvol on each, named "d1" through "d7", respectively.

I assembled an MD RAID-6 out of the zvols, made an ext4 FS on it, mounted it and started copying data to test the behavior. While it was copying, I pulled one of the seven disks. Linux appeared to not notice in a meaningful way - the pool, disk2, reported >1600 write errors, but thought the disk was still online, as did Linux, though any IO to it failed.

I rebooted, the machine hung during shutdown, I SysRq-S,U,B'd the machine.

On next bootup, I tried "modprobe zfs", and it's been sitting here for about 10 minutes, with no output. dmesg|tail reports "INFO: task modprobe:2606 blocked for more than 120 seconds.", with a trace. (As soon as I figure out how to attach things in github's issue tracker, I'll attach the trace.)

zfs module busy infinite loop: vmap allocation [...] failed

A reboot is required (SysRq+B)

bash$ zpool create inkernel /dev/sda3

or sometime later:

bash$ zfs create inkernel/zfs
bash$ zfs create inkernel/data
bash$ cat zfs.pool_repl | mbuffer -m 180M | zfs receive -vFd inkernel/zfs
receiving full stream of zfs@crossedover into inkernel/zfs@crossedover
received 22.5KB stream in 1 seconds (22.5KB/sec)
receiving incremental stream of zfs@replicate into inkernel/zfs@replicate
received 20.6KB stream in 1 seconds (20.6KB/sec)
in @  160 MB/s, out @  177 kB/s,  124 kB total, buffer  62% fullreceiving full stream of zfs/BUDGETTEER@ec2 into inkernel/zfs/BUDGETTEER@ec2
in @  0.0 kB/s, out @  0.0 kB/s,  588 kB total, buffer 100% full

Hangs forever, 1 CPU core stuck at 100% and the log is flooded with messages:

Jul 16 00:26:27 localhost kernel: [  969.528505] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528509] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528512] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528516] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528519] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528523] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528526] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528530] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528534] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:27 localhost kernel: [  969.528537] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532504] __ratelimit: 2515704 callbacks suppressed
Jul 16 00:26:32 localhost kernel: [  974.532505] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532509] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532513] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532516] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532520] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532523] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532527] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532530] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532534] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:32 localhost kernel: [  974.532537] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536503] __ratelimit: 2500972 callbacks suppressed
Jul 16 00:26:37 localhost kernel: [  979.536505] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536509] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536512] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536516] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536520] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536523] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536527] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536530] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536534] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:37 localhost kernel: [  979.536538] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540504] __ratelimit: 2505043 callbacks suppressed
Jul 16 00:26:42 localhost kernel: [  984.540506] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540509] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540513] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540516] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540520] vmap allocation for size 8392704 failed: use vmalloc= to increase size.
Jul 16 00:26:42 localhost kernel: [  984.540524] vmap allocation for size 8392704 failed: use vmalloc= to increase size.

sda3 is a 19.62GiB SSD partition.

Versions:
SPL

sehe@lucid:~/custom/spl/cmd$ git log -1 --oneline; git describe --dirty
8f813bb Proposed fix for oops on SIGINT in splat atomic:64-bit test.
spl-0.4.9-36-g8f813bb

ZFS

sehe@lucid:~/custom/kernelzfs$ git log -1 --oneline ; git describe --dirty
21191af Merge commit 'refs/top-bases/top' into top
zfs-0.4.9-1968-g21191af-dirty

Stock pae kernel, 8GB RAM, free:

sehe@lucid:/tmp$ uname -a
Linux lucid 2.6.32-23-generic-pae #37-Ubuntu SMP Fri Jun 11 09:26:55 UTC 2010 i686 GNU/Linux

This may be related to splat failure reported in http://github.com/behlendorf/spl/issues#issue/24

Compile failure on Ubuntu Karmic x64

cc1: warnings being treated as errors
/root/zfs-kernel/zfs-0.4.9/module/zfs/dsl_deleg.c: In function ‘dsl_deleg_get’:
/root/zfs-kernel/zfs-0.4.9/module/zfs/dsl_deleg.c:364: error: the frame size of 1040 bytes is larger than 1024 bytes
make[5]: *** [/root/zfs-kernel/zfs-0.4.9/module/zfs/dsl_deleg.o] Error 1
make[4]: *** [/root/zfs-kernel/zfs-0.4.9/module/zfs] Error 2
make[3]: *** [module/root/zfs-kernel/zfs-0.4.9/module] Error 2
make[3]: Leaving directory /usr/src/linux-headers-2.6.31-14-server' make[2]: *** [modules] Error 2 make[2]: Leaving directory/root/zfs-kernel/zfs-0.4.9/module'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/zfs-kernel/zfs-0.4.9'
make: *** [all] Error 2

Verify On Disk Compatibility

When porting this to Linux I tried to be very careful to maintain on disk compatibility. That is you should be able to export a zpool from a Solaris ZFS system spread over a set of devices. Then move those same devices to a Linux ZFS system and successfully import the zpool. This should work but it has never actually been verified and that needs to be done.

Split zpios off in to its own project

The zpios module and utils has lived in the zfs tree as a matter of early development convenience. Early on there was no infrastructure in place to build a dependent zfs module outside the zfs build tree. However that has changed with the addition on clean zfs-devel pacakges. It would now probably be desirable to split zpios off in to it's own project for a few reasons.

  • This would allow us to remove a rather large topic branch which simplifies the topgit tree and minimizes the chance of conflicts between branches.
  • The zpios code is GPL code living next to CDDL code. While this isn't really a problem since this fact is noted in the header for each file zpios and explicitly mentioned in to the top level COPYRIGHT. It would still be nice to split it off.

The big down side to this would be that the current zfs test framework leverages the zpios tests for some basic 'make check' sanity testing. This was done because early on there was no working zvol and this was the only way to move data through the dmu. At this point however I think we can shift to using the zvol interface and pushing some data through it for basic sanity. Any some point too we will have the zpl interfaces to extend sanity testings.

ztest pthread_create() failing on 32-bit systems

ztest is failing on 32-bit systems because of a pthread_create() failure. The surprising thing is that not that many threads are concurrently in use on my test system, ztest has spawned only perhaps a 100 or so. I have not witnessed these issues on a 64-bit system.

lt-ztest: ../../lib/libzpool/kernel.c:175: Assertion `pthread_create(&kt->t_tid, &attr, &zk_thread_helper, kt) == 0 (0xb == 0x0)' failed.

Things like stack size should not be causing this since all the stacks were kept low for use in the kernel. However, something funny is clearly going on here and should be run down.

ZFS On Debian Lenny 64 bits (with 2.6.32 backport kernel)

Hi again, :).

I create this issue to report the status of ZFS under Debian Lenny (stable) 64 bits with the 2.6.32 backport kernel.

Compilation, installation and modprobe (dont forget the "depmod -a") : All working well.

Here the configure line I used (important for the following part) : ./configure --with-linux=/usr/src/linux-headers-2.6.32-bpo.4-common/ --with-linux-obj=/usr/src/linux-headers-2.6.32-bpo.4-amd64/ --with-spl=/usr/local/src/spl-0.4.9/2.6.32-bpo.4-amd64/ --prefix=/usr/local/

I know "/usr/local/" is the default value for "--prefix", but it's just a habit for me.

First problem : the zconfig.sh execution

splzfs:~# /usr/local/libexec/zfs/zconfig.sh 
test 1 - persistent zpool.cache: /usr/local/libexec/zfs/zconfig.sh: line 63: /usr/libexec/zfs/zfs.sh: No such file or directory
FAIL (1)

For the moment, I give a solution which looks like more a piece of duct tape than a real fix.

I created the file /usr/local/libexec/.script-config with the following content :

splzfs:~# cat /usr/local/libexec/.script-config
KERNELSRC=/usr/src/linux-headers-2.6.32-bpo.4-common/
KERNELBUILD=/usr/src/linux-headers-2.6.32-bpo.4-amd64/
KERNELSRCVER=2.6.32-bpo.4-amd64
KERNELMOD=/lib/modules/${KERNELSRCVER}/kernel

SPLSRC=/usr/local/src/spl-0.4.9/2.6.32-bpo.4-amd64/
SPLBUILD=/lib/modules/{KERNELSRCVER}/addon/spl/
SPLSRCVER=0.4.9

TOPDIR=/usr/local
LIBDIR=${TOPDIR}/lib
MODDIR=/lib/modules/{KERNELSRCVER}/addon/zfs/
SCRIPTDIR=${TOPDIR}/libexec/zfs/
ZPOOLDIR=${SCRIPTDIR}/zpool-config
ZPIOSDIR=${SCRIPTDIR}/zpios-test
ZPIOSPROFILEDIR=${SCRIPTDIR}/zpios-profile

ZDB=${TOPDIR}/sbin/zdb
ZFS=${TOPDIR}/sbin/zfs
ZINJECT=${TOPDIR}/sbin/zinject
ZPOOL=${TOPDIR}/sbin/zpool
ZPOOL_ID=${TOPDIR}/bin/zpool_id
ZTEST=${TOPDIR}/sbin/ztest
ZPIOS=${TOPDIR}/sbin/zpios

COMMON_SH=${SCRIPTDIR}/common.sh
ZFS_SH=${SCRIPTDIR}/zfs.sh
ZPOOL_CREATE_SH=${SCRIPTDIR}/zpool-create.sh
ZPIOS_SH=${SCRIPTDIR}/zpios.sh
ZPIOS_SURVEY_SH=${SCRIPTDIR}/zpios-survey.sh

INTREE=1
MODULES=(zlib_deflate spl splat zavl znvpair zunicode zcommon zfs)

The last line is necessary for using "zfs.sh -u".

Now I've "duct-taped" this problem, I relaunch the zconfig.sh script.

Problem :

splzfs:~# /usr/local/libexec/zfs/zconfig.sh 
test 1 - persistent zpool.cache: PASS
test 2 - scan disks for pools to import: PASS
test 3 - ZVOL sanity: PASS

The first 2 tests passed without difficulties (thanks to the piece of duct tape).

The ZVOL sanity test takes a bit longer, maybe because the server I use is a bit old.

The zpios-sanity.sh script also works well :

splzfs:~# /usr/local/libexec/zfs/zpios-sanity.sh 
status    name        id    wr-data wr-ch   wr-bw   rd-data rd-ch   rd-bw
-------------------------------------------------------------------------------
PASS:     file-raid0   0    64m 64  20.52m  64m 64  838.66m
PASS:     file-raid10  0    64m 64  10.34m  64m 64  933.38m
PASS:     file-raidz   0    64m 64  7.86m   64m 64  748.92m
PASS:     file-raidz2  0    64m 64  6.29m   64m 64  718.95m
PASS:     lo-raid0     0    64m 64  20.10m  64m 64  961.69m
PASS:     lo-raid10    0    64m 64  5.80m   64m 64  794.47m
PASS:     lo-raidz     0    64m 64  6.26m   64m 64  641.12m
PASS:     lo-raidz2    0    64m 64  7.58m   64m 64  679.89m

Thanks.

Enclosure Management Integration

When ZFS fails a drive we need to be able to automatically do some minimal enclosure management. Luckily modern kernels provide a ses and enclosure module here which we may be able to leverage. Minimally in this case we want to set the fault led for this device in the enclosure. This could probably be done in kernel but that assumes that these modules provide a reasonable API. A simpler and perhaps more flexible solution would be to have zeventd set the fault led through the standard /sys/ interface. Regardless this needs to be thought through.

echo 1 >/sys/class/enclosure/6:0:9:0/000/fault

Use Barriers in pre-2.6.24 kernels

Barrier support was added as of zfs-0.4.5. This has been implemented in the vdev_disk layer for 2.6.24+ kernels. This is where generic support first appears for empty bios in the kernel which can be submitted as a WRITE_BARRIER io request. This prevents the elevator from reordering requests from one side of this barrier to the other, and the callback will only run once this io (and previous ios) are all physically on disk. For kernels priors to this there is a more primitive barrier mechanism but the code has not been updated to use it and instead returns ENOTSUP to indicate there is no barrier support. This works needs to be done.

Debian with 2.6.26 : Compilation fails for ZFS

Hi.

After successfully compile and install SPL (thanks to the issue 14 from SPL : http://github.com/behlendorf/spl/issues/closed#issue/14 ), and creating the NONE file by hand.

The compilation fails.

...
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zfs'
Making all in zpool
make[3]: Entering directory `/root/zfs-0.4.9/cmd/zpool'
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zcommon/include -I../../module/zfs/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpool_iter.o -MD -MP -MF .deps/zpool_iter.Tpo -c -o zpool_iter.o `test -f '../../cmd/zpool/zpool_iter.c' || echo './'`../../cmd/zpool/zpool_iter.c
mv -f .deps/zpool_iter.Tpo .deps/zpool_iter.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zcommon/include -I../../module/zfs/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpool_main.o -MD -MP -MF .deps/zpool_main.Tpo -c -o zpool_main.o `test -f '../../cmd/zpool/zpool_main.c' || echo './'`../../cmd/zpool/zpool_main.c
mv -f .deps/zpool_main.Tpo .deps/zpool_main.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zcommon/include -I../../module/zfs/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpool_util.o -MD -MP -MF .deps/zpool_util.Tpo -c -o zpool_util.o `test -f '../../cmd/zpool/zpool_util.c' || echo './'`../../cmd/zpool/zpool_util.c
mv -f .deps/zpool_util.Tpo .deps/zpool_util.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zcommon/include -I../../module/zfs/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpool_vdev.o -MD -MP -MF .deps/zpool_vdev.Tpo -c -o zpool_vdev.o `test -f '../../cmd/zpool/zpool_vdev.c' || echo './'`../../cmd/zpool/zpool_vdev.c
mv -f .deps/zpool_vdev.Tpo .deps/zpool_vdev.Po
/bin/sh ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -pthread -lm -lz -lrt -luuid   -o zpool zpool_iter.o zpool_main.o zpool_util.o zpool_vdev.o ../../lib/libspl/libspl.la ../../lib/libavl/libavl.la ../../lib/libefi/libefi.la ../../lib/libnvpair/libnvpair.la ../../lib/libunicode/libunicode.la ../../lib/libuutil/libuutil.la ../../lib/libzpool/libzpool.la ../../lib/libzfs/libzfs.la -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zpool'
Making all in zpool_id
make[3]: Entering directory `/root/zfs-0.4.9/cmd/zpool_id'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zpool_id'
Making all in zdb
make[3]: Entering directory `/root/zfs-0.4.9/cmd/zdb'
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libzpool/include -I../../lib/libnvpair/include -I../../lib/libzfs/include -I../../module/zfs/include -I../../module/zcommon/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zdb.o -MD -MP -MF .deps/zdb.Tpo -c -o zdb.o `test -f '../../cmd/zdb/zdb.c' || echo './'`../../cmd/zdb/zdb.c
mv -f .deps/zdb.Tpo .deps/zdb.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libzpool/include -I../../lib/libnvpair/include -I../../lib/libzfs/include -I../../module/zfs/include -I../../module/zcommon/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zdb_il.o -MD -MP -MF .deps/zdb_il.Tpo -c -o zdb_il.o `test -f '../../cmd/zdb/zdb_il.c' || echo './'`../../cmd/zdb/zdb_il.c
mv -f .deps/zdb_il.Tpo .deps/zdb_il.Po
/bin/sh ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -pthread -lm -lz -lrt -luuid   -o zdb zdb.o zdb_il.o ../../lib/libspl/libspl.la ../../lib/libavl/libavl.la ../../lib/libefi/libefi.la ../../lib/libnvpair/libnvpair.la ../../lib/libunicode/libunicode.la ../../lib/libuutil/libuutil.la ../../lib/libzpool/libzpool.la ../../lib/libzfs/libzfs.la -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zdb'
Making all in zinject
make[3]: Entering directory `/root/zfs-0.4.9/cmd/zinject'
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libzpool/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zfs -I../../module/zfs/include -I../../module/zcommon/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT translate.o -MD -MP -MF .deps/translate.Tpo -c -o translate.o `test -f '../../cmd/zinject/translate.c' || echo './'`../../cmd/zinject/translate.c
mv -f .deps/translate.Tpo .deps/translate.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libzpool/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zfs -I../../module/zfs/include -I../../module/zcommon/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zinject.o -MD -MP -MF .deps/zinject.Tpo -c -o zinject.o `test -f '../../cmd/zinject/zinject.c' || echo './'`../../cmd/zinject/zinject.c
mv -f .deps/zinject.Tpo .deps/zinject.Po
/bin/sh ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -pthread -lm -lz -lrt -luuid   -o zinject translate.o zinject.o ../../lib/libspl/libspl.la ../../lib/libavl/libavl.la ../../lib/libefi/libefi.la ../../lib/libnvpair/libnvpair.la ../../lib/libunicode/libunicode.la ../../lib/libuutil/libuutil.la ../../lib/libzpool/libzpool.la ../../lib/libzfs/libzfs.la -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zinject'
Making all in ztest
make[3]: Entering directory `/root/zfs-0.4.9/cmd/ztest'
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../lib/libspl/include -I../../lib/libefi/include -I../../lib/libzpool/include -I../../lib/libuutil/include -I../../lib/libzfs/include -I../../lib/libnvpair/include -I../../module/zfs -I../../module/zfs/include -I../../module/zcommon/include -I../../module/nvpair/include -I../../module/avl/include -I../../module/unicode/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT ztest.o -MD -MP -MF .deps/ztest.Tpo -c -o ztest.o `test -f '../../cmd/ztest/ztest.c' || echo './'`../../cmd/ztest/ztest.c
mv -f .deps/ztest.Tpo .deps/ztest.Po
/bin/sh ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -pthread -lm -lz -lrt -ldl -luuid   -o ztest ztest.o ../../lib/libspl/libspl.la ../../lib/libavl/libavl.la ../../lib/libefi/libefi.la ../../lib/libnvpair/libnvpair.la ../../lib/libunicode/libunicode.la ../../lib/libuutil/libuutil.la ../../lib/libzpool/libzpool.la ../../lib/libzfs/libzfs.la -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/ztest'
Making all in zpios
make[3]: Entering directory `/root/zfs-0.4.9/cmd/zpios'
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../module/zpios/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpios_main.o -MD -MP -MF .deps/zpios_main.Tpo -c -o zpios_main.o `test -f '../../cmd/zpios/zpios_main.c' || echo './'`../../cmd/zpios/zpios_main.c
mv -f .deps/zpios_main.Tpo .deps/zpios_main.Po
gcc -DHAVE_CONFIG_H -include ../../zfs_config.h -I../../module/zpios/include    -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2 -MT zpios_util.o -MD -MP -MF .deps/zpios_util.Tpo -c -o zpios_util.o `test -f '../../cmd/zpios/zpios_util.c' || echo './'`../../cmd/zpios/zpios_util.c
mv -f .deps/zpios_util.Tpo .deps/zpios_util.Po
/bin/sh ../../libtool  --tag=CC --silent  --mode=link gcc -Wall -Wstrict-prototypes -fno-strict-aliasing -Werror -D_GNU_SOURCE -D__EXTENSIONS__ -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -DTEXT_DOMAIN=\"zfs-linux-user\" -g -O2   -o zpios zpios_main.o zpios_util.o  -luuid -luuid -lz -lz -lz 
make[3]: Leaving directory `/root/zfs-0.4.9/cmd/zpios'
make[3]: Entering directory `/root/zfs-0.4.9/cmd'
make[3]: Nothing to be done for `all-am'.
make[3]: Leaving directory `/root/zfs-0.4.9/cmd'
make[2]: Leaving directory `/root/zfs-0.4.9/cmd'
Making all in module
make[2]: Entering directory `/root/zfs-0.4.9/module'
# Make the exported SPL symbols available to these modules.
cp /usr/local/src/spl-0.4.9/2.6.26-2-686//module/NONE .
make -C /usr/src/linux-headers-2.6.26-2-686/ SUBDIRS=`pwd`  O=/usr/src/linux-headers-2.6.26-2-686/ modules
make[3]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
  CC [M]  /root/zfs-0.4.9/module/avl/avl.o
  LD [M]  /root/zfs-0.4.9/module/avl/zavl.o
  CC [M]  /root/zfs-0.4.9/module/nvpair/nvpair.o
  CC [M]  /root/zfs-0.4.9/module/nvpair/nvpair_alloc_spl.o
  CC [M]  /root/zfs-0.4.9/module/nvpair/nvpair_alloc_fixed.o
  LD [M]  /root/zfs-0.4.9/module/nvpair/znvpair.o
  CC [M]  /root/zfs-0.4.9/module/unicode/u8_textprep.o
  CC [M]  /root/zfs-0.4.9/module/unicode/uconv.o
  LD [M]  /root/zfs-0.4.9/module/unicode/zunicode.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zfs_deleg.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zfs_prop.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zprop_common.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zfs_namecheck.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zfs_comutil.o
  CC [M]  /root/zfs-0.4.9/module/zcommon/zpool_prop.o
  LD [M]  /root/zfs-0.4.9/module/zcommon/zcommon.o
  CC [M]  /root/zfs-0.4.9/module/zfs/arc.o
  CC [M]  /root/zfs-0.4.9/module/zfs/bplist.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dbuf.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_object.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_objset.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_send.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_traverse.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_tx.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dmu_zfetch.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dnode.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dnode_sync.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_dataset.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_deleg.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_dir.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_pool.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_prop.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_scrub.o
  CC [M]  /root/zfs-0.4.9/module/zfs/dsl_synctask.o
  CC [M]  /root/zfs-0.4.9/module/zfs/fletcher.o
  CC [M]  /root/zfs-0.4.9/module/zfs/fm.o
  CC [M]  /root/zfs-0.4.9/module/zfs/gzip.o
  CC [M]  /root/zfs-0.4.9/module/zfs/lzjb.o
  CC [M]  /root/zfs-0.4.9/module/zfs/metaslab.o
  CC [M]  /root/zfs-0.4.9/module/zfs/refcount.o
  CC [M]  /root/zfs-0.4.9/module/zfs/rrwlock.o
  CC [M]  /root/zfs-0.4.9/module/zfs/sha256.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa_boot.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa_config.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa_errlog.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa_history.o
  CC [M]  /root/zfs-0.4.9/module/zfs/spa_misc.o
  CC [M]  /root/zfs-0.4.9/module/zfs/space_map.o
  CC [M]  /root/zfs-0.4.9/module/zfs/txg.o
  CC [M]  /root/zfs-0.4.9/module/zfs/uberblock.o
  CC [M]  /root/zfs-0.4.9/module/zfs/unique.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_cache.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_disk.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_file.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_label.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_mirror.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_missing.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_queue.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_raidz.o
  CC [M]  /root/zfs-0.4.9/module/zfs/vdev_root.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zap.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zap_leaf.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zap_micro.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_acl.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_byteswap.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_ctldir.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_dir.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_fm.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_fuid.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_ioctl.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_log.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_replay.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_rlock.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_vfsops.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_vnops.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zfs_znode.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zil.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zio.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zio_checksum.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zio_compress.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zio_inject.o
  CC [M]  /root/zfs-0.4.9/module/zfs/zvol.o
cc1: warnings being treated as errors
/root/zfs-0.4.9/module/zfs/zvol.c: In function ‘zvol_read’:
/root/zfs-0.4.9/module/zfs/include/sys/blkdev.h:131: warning: ‘rc’ is used uninitialized in this function
make[6]: *** [/root/zfs-0.4.9/module/zfs/zvol.o] Error 1
make[5]: *** [/root/zfs-0.4.9/module/zfs] Error 2
make[4]: *** [_module_/root/zfs-0.4.9/module] Error 2
make[3]: *** [sub-make] Error 2
make[3]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/root/zfs-0.4.9/module'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/zfs-0.4.9'
make: *** [all] Error 2

The full version is here : http://paste.davromaniak.eu/pastebin.php?show=m6ddd2e2

It's the same problem on 32 and 64 bits arch.

Thanks.

zfs command hangs after corrupting storage

I created a raidz zpool with 16 disks and a 100G volume within it then
trashed the storage by dd'ing from /dev/zero over the first 1GB of
each disk. I scrubbed the zpool to make ZFS aware of the damage, then
attempted to access the volume with the zfs command. This triggered an
SPLError and the zfs command never returns. The console shows stack traces
for the hung process. I can reproduce this with both 'zfs list' and 'zfs destroy
tank/fish'.

Note that if I don't first scrub the zpool, so that 'zpool status'
doesn't report any errors, then 'zfs list' and 'zfs destroy tank/fish'
both return normally.

Here are the commands used with output trimmed.

> cat disks

> cat disks | xargs zpool create -f tank

> zfs create -V 100G tank/fish
> for x in `cat disks` ; do \
        dd  if=/dev/zero of=$x bs=32k count=327680 & done

> zpool scrub tank

> zpool status -v

> zfs list

With output.

> cat disks
/dev/disk/zpool/disk1
/dev/disk/zpool/disk2
/dev/disk/zpool/disk3
/dev/disk/zpool/disk4
/dev/disk/zpool/disk5
/dev/disk/zpool/disk6
/dev/disk/zpool/disk7
/dev/disk/zpool/disk8
/dev/disk/zpool/disk9
/dev/disk/zpool/disk10
/dev/disk/zpool/disk11
/dev/disk/zpool/disk12
/dev/disk/zpool/disk13
/dev/disk/zpool/disk14
/dev/disk/zpool/disk15
/dev/disk/zpool/disk16

> cat disks | xargs zpool create -f tank

> zfs create -V 100G tank/fish
> for x in `cat disks` ; do \
        sudo dd  if=/dev/zero of=$x bs=32k count=327680 & done
...

> zpool scrub tank

> zpool status -v
  pool: tank
 state: ONLINE
status: One or more devices has experienced an error resulting in data
        corruption.  Applications may be affected.
action: Restore the file in question if possible.  Otherwise restore the
        entire pool from backup.
   see: http://www.sun.com/msg/ZFS-8000-8A
 scan: scrub repaired 0 in 0h0m with 27 errors on Thu Aug  5 10:55:47 2010
config:

        NAME            STATE     READ WRITE CKSUM
        tank            ONLINE       0     0    27
          disk1-part1   ONLINE       0     0    54
          disk2-part1   ONLINE       0     0    46
          disk3-part1   ONLINE       0     0     0
          disk4-part1   ONLINE       0     0     0
          disk5-part1   ONLINE       0     0     0
          disk6-part1   ONLINE       0     0     0
          disk7-part1   ONLINE       0     0     0
          disk8-part1   ONLINE       0     0     0
          disk9-part1   ONLINE       0     0     0
          disk10-part1  ONLINE       0     0     0
          disk11-part1  ONLINE       0     0     0
          disk12-part1  ONLINE       0     0     0
          disk13-part1  ONLINE       0     0     0
          disk14-part1  ONLINE       0     0     0
          disk15-part1  ONLINE       0     0     0
          disk16-part1  ONLINE       0     0    54

errors: Permanent errors have been detected in the following files:
        <metadata>:<0x3>
        <metadata>:<0x4>
        <metadata>:<0x6>
        <metadata>:<0x7>
        <metadata>:<0x9>
        <metadata>:<0xa>
        <metadata>:<0xd>
        <metadata>:<0xe>
        <metadata>:<0x10>
        <metadata>:<0x11>
        <metadata>:<0x13>
        <metadata>:<0x16>
        <metadata>:<0x17>
        <metadata>:<0x19>
        <metadata>:<0x1a>
        <metadata>:<0x1b>
        <metadata>:<0x1e>
        <metadata>:<0x2d>
        <metadata>:<0x2f>
        <metadata>:<0x32>
        <metadata>:<0x33>
        <metadata>:<0x35>
        <metadata>:<0x36>
        tank:<0x0>
        tank/fish:<0x0>

> zfs list

Message from syslogd@mrtwig at Aug  5 10:56:30 ...
 kernel:VERIFY(zvol_get_stats(os, nv) == 0) failed

Message from syslogd@mrtwig at Aug  5 10:56:30 ...
 kernel:SPLError: 11472:0:(zfs_ioctl.c:1642:zfs_ioc_objset_stats()) SPL PANIC

Console log:

SPL: Showing stack for process 11175
Pid: 11175, comm: txg_sync Tainted: P        W  2.6.32-11chaos.16k #1
Call Trace:
 [] spl_debug_dumpstack+0x27/0x40 [spl]
 [] kmem_alloc_debug+0x11d/0x130 [spl]
 [] dsl_scan_setup_sync+0x1e1/0x210 [zfs]
 [] ? ftrace_call+0x5/0x2b
 [] dsl_sync_task_group_sync+0x12b/0x210 [zfs]
 [] dsl_pool_sync+0x1eb/0x460 [zfs]
 [] spa_sync+0x387/0x960 [zfs]
 [] ? ftrace_call+0x5/0x2b
 [] ? ftrace_call+0x5/0x2b
 [] txg_sync_thread+0x1c7/0x3d0 [zfs]
 [] ? txg_sync_thread+0x0/0x3d0 [zfs]
 [] ? txg_sync_thread+0x0/0x3d0 [zfs]
 [] ? thread_generic_wrapper+0x0/0x80 [spl]
 [] thread_generic_wrapper+0x68/0x80 [spl]
 [] kthread+0x96/0xa0
 [] ? early_idt_handler+0x0/0x71
 [] child_rip+0xa/0x20
 [] ? early_idt_handler+0x0/0x71
 [] ? kthread+0x0/0xa0
 [] ? child_rip+0x0/0x20
VERIFY(zvol_get_stats(os, nv) == 0) failed
SPLError: 11472:0:(zfs_ioctl.c:1642:zfs_ioc_objset_stats()) SPL PANIC
SPL: Showing stack for process 11472
Pid: 11472, comm: zfs Tainted: P        W  2.6.32-11chaos.16k #1
Call Trace:
 [] spl_debug_dumpstack+0x27/0x40 [spl]
 [] spl_debug_bug+0x81/0xd0 [spl]
 [] zfs_ioc_objset_stats+0x11b/0x120 [zfs]
 [] zfs_ioc_dataset_list_next+0x15b/0x1d0 [zfs]
 [] zfs_ioctl+0xf8/0x1f0 [zfs]
 [] vfs_ioctl+0x36/0xa0
 [] do_vfs_ioctl+0xab/0x550
 [] sys_ioctl+0x87/0xa0
 [] system_call_fastpath+0x16/0x1b
SPL: Dumping log to /tmp/spl-log.1281030990.11472
INFO: task zfs:11472 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
zfs           D ffff880230c23680     0 11472   2764 0x00000080
 ffff8802637c7d58 0000000000000086 0000000000000000 0000000000016840
 ffff88041ffe0670 ffff88041ffe0180 ffff88041ffe00c0 ffff88022831aa60
 ffff88041ffe0670 00000001000eea63 00000000637c7d10 0000000000000000
Call Trace:
 [] spl_debug_bug+0xad/0xd0 [spl]
 [] zfs_ioc_objset_stats+0x11b/0x120 [zfs]
 [] zfs_ioc_dataset_list_next+0x15b/0x1d0 [zfs]
 [] zfs_ioctl+0xf8/0x1f0 [zfs]
 [] vfs_ioctl+0x36/0xa0
 [] do_vfs_ioctl+0xab/0x550
 [] sys_ioctl+0x87/0xa0
 [] system_call_fastpath+0x16/0x1b

ztest -f option doesn't work

In the Linux ZFS tree, we have this code in ztest_run_zdb():

4910         (void) sprintf(zdb,
4911             "%s/zdb/zdb -bcc%s%s -U /tmp/zpool.cache %s",
4912             bin,
4913             zopt_verbose >= 3 ? "s" : "",
4914             zopt_verbose >= 4 ? "v" : "",
4915             pool);

But in OpenSolaris, the code looks like this:

4754         (void) sprintf(bin,
4755             "/usr/sbin%.*s/zdb -bcc%s%s -U %s %s",
4756             isalen,
4757             isa,
4758             zopt_verbose >= 3 ? "s" : "",
4759             zopt_verbose >= 4 ? "v" : "",
4760             spa_config_path,
4761             pool);

As you can see, in the Linux repo, ztest calls zdb using a hardcoded path to /tmp/zpool.cache.

This makes it impossible to use the "-f" option of ztest, which is used for creating the test pool in a directory different than /tmp.

ZFS Test Suite

While I have tried to provide some ZFS test suite coverage as I develop it is still sparse. Sure I check that ztest runs in user space without error. And I do verify that you can successfully create zpools on top of various types of block devices (disk, loopback, md, ram, etc). And I do make an effort to push some real data through the system using zpios. But that's not enough. Happily it looks like much of the work for a solution is out there already. The community has provided their own test suite which looks pretty darn good. It's going to be a fair chunk of work to integrate this with Linux but it's something which needs to be done. Additionally of course the tests which we expect to fail because that functionality isn't implemented yet should be disabled for now.

http://hub.opensolaris.org/bin/view/Community+Group+zfs/zfstestsuite

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.