openzfs / zfs

OpenZFS on Linux and FreeBSD
https://openzfs.github.io/openzfs-docs
Other
10.17k stars 1.69k forks source link

zconfig test failure #78

Closed cjharris closed 13 years ago

cjharris commented 13 years ago

I have slackware linux 13.1 installed on an amd64 machine. After installing spl-0.5.1 and zfs-0.5.1 from source code using the generic:

 $ ./configure
 $ make
 # make install

routine, I ran the suggested tests:

 1. splat -a
 2. /usr/local/libexec/zfs/zpios-sanity.sh
 3. /usr/local/libexec/zfs/zconfig.sh -c

Although the first two tests had a favorable outcome, the last test, zconfig, produced the following output:

root@slack:/opt# depmod -a root@slack:/opt# modprobe zfs root@slack:/opt# /usr/local/libexec/zfs/zconfig.sh -c 1 persistent zpool.cache zfs.sh: Unload these modules with 'zfs.sh -u': zfs zcommon zunicode znvpair zavl splat spl Fail (1) root@slack:/opt# /usr/local/libexec/zfs/zfs.sh
zfs.sh: Unload these modules with 'zfs.sh -u': zfs zcommon zunicode znvpair zavl splat spl root@slack:/opt# /usr/local/libexec/zfs/zfs.sh -u root@slack:/opt# /usr/local/libexec/zfs/zconfig.sh -c 1 persistent zpool.cache FATAL: Module zlib_deflate not found. Unable to open /dev/zfs: No such file or directory. Verify the ZFS module stack is loaded by running '/sbin/modprobe zfs'. Fail (2)

Hopefully, there is just a misprint on the web page, or a misinterpretation on my part; otherwise, it looks like there is a software conflict.

Cheers,

Chris Harris

behlendorf commented 13 years ago

Your not the first to be confused. The zconfig.sh test itself tries to load the zfs kernel module stack, so you need to make sure it's unloaded before running zconfig.sh. That's what the error message "Unload these modules with 'zfs.sh -u'" it attempting to say. Simply unload the module stack by running 'zfs.sh -u' and try again.

/usr/local/libexec/zfs/zfs.sh -u
/usr/lo/usr/local/libexec/zfs/zconfig.sh -c

Since you've called my attention to this again, I'll try and do something to handle this a little more gracefully in the next tag.

cjharris commented 13 years ago

I realize the output is rather compact, but when the command that you recommend is enacted, this leads to failure (2):

root@slack:/opt# /usr/local/libexec/zfs/zfs.sh -u

root@slack:/opt# /usr/local/libexec/zfs/zconfig.sh -c

1 persistent zpool.cache FATAL: Module zlib_deflate not found. Unable to open /dev/zfs: No such file or directory. Verify the ZFS module stack is loaded by running '/sbin/modprobe zfs'. Fail (2)

As you can see, without ZFS module loaded, module zlib_deflate is not found, and the output suggests that you load ZFS module... the classic catch 22 situation.

behlendorf commented 13 years ago

Can you verify that zlib_deflate is built as an kernel module on your slackware system, it should be installed in /lib/modules/uname -r/kernel/lib/zlib_deflate.ko. Most distributions build it as an external module but it's possible slackware builds it as part of the kernel itself. If that's the case then we just need to make the test scripts a little smarter so they can tell the difference between the two cases and skip loading the module.

cjharris commented 13 years ago

The only reference to zlib that I see in the kernel module directory, through slocate, is the following:

 /lib/modules/2.6.33.4/kernel/crypto/zlib.ko

Otherwise, zlib functions, such as, zlib_inflate, zlib_deflate seem to be handled in the software libraries, accordingly:

 /usr/src/linux-2.6.33.4/lib/zlib_inflate
 /usr/src/linux-2.6.33.4/lib/zlib_deflate

 /usr/src/linux-2.6.33.4/include/config/zlib/inflate.h
 /usr/src/linux-2.6.33.4/include/config/zlib/deflate.h

Slackpkg confirms that the following zlib version is installed:

 [ installed ] - zlib-1.2.3-x86_64-2

Let me know if you want me to try any commands to verify implementation.

behlendorf commented 13 years ago

Actually, we're mainly relying on the in-kernel zlib implementation and it sounds like slackware builds that support in by default. This morning I committed a fix which I believe should address this issue. If you get a change please pull the latest git sources and try again. It shouldn't get hung up on the in-kernel case anymore.

cjharris commented 13 years ago

Using behlendorf-zfs-zfs-0.5.1-0-g2c4834f.tar.gz [ behlendorf-zfs-4ab8c5c ], assuming this includes the latest changes, I still get:

 FATAL: Module zlib_deflate not found.

If this is not the latest version, please advise me on how to download it through git, as I am more familiar with material science issues than software.

behlendorf commented 13 years ago

As it happens I just tagged a new release today which has the proposed fix, just go ahead and try the spl/zfs-0.5.2 release.

http://github.com/downloads/behlendorf/spl/spl-0.5.2.tar.gz http://github.com/downloads/behlendorf/zfs/zfs-0.5.2.tar.gz

cjharris commented 13 years ago

Bravo! the latest release version passes all the tests with flying colors on slackware. Using the generic instaIl approach for spl/zfs:

 $ ./configure
 $ make
 # make install

All I had to do to get up and running was the following:

 # cd /lib/modules/2.6.33.4/kernel
 # ln -s /lib/modules/2.6.33.4/addon addon
 # depmod -a

I hope this helps other observers and look forward to when a mountable system becomes available. In the meantime, I will have to fall back to zfs-fuse, which is only about 50 % slower than kernel based file transfers.

behlendorf commented 13 years ago

Glad to hear it works for you on slackware. Never fear the mountable version is on the way, plus when it gets here you will be able to import your existing zfs-fuse zpools.