Refresh zfs-branch

This commit is contained in:
Brian Behlendorf 2008-12-05 09:46:11 -08:00
parent 9364d361b8
commit 9baaa468ac
53 changed files with 1949 additions and 0 deletions

4
AUTHORS Normal file
View File

@ -0,0 +1,4 @@
Brian Behlendorf <behlendorf1@llnl.gov>,
Herb Wartens <wartens2@llnl.gov>,
Jim Garlick <garlick@llnl.gov>,
Ricardo M. Correia <Ricardo.M.Correia@sun.com>

114
ChangeLog Normal file
View File

@ -0,0 +1,114 @@
2008-11-19 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.4.0
* : ZFS project migrated from Subversion which leveraged a
quilt based patch stack to Git and a TopGit managed patch
stack. The new method treats all patches as Git branches
which can be more easily shared for distributed development.
Consult the top level GIT file for detailed information on
how to properly develop for this package using Git+TopGit.
2008-11-12 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.3.4
* zfs-07-create-dev-zfs.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Make libzfs create /dev/zfs if it doesn't exist.
* zfs-05-check-zvol-size.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Properly check zvol size under Linux.
* zfs-04-no-openat-fdopendir.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Do not use openat() and fdopendir() since they are not available
on older systems.
* zfs-03-fix-bio-sync.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Fix memory corruption in RHEL4 due to synchronous IO becoming
asynchronous.
2008-11-06 Brian Behlendorf <behlendorf1@llnl.gov>
* zfs-02-zpios-fix-stuck-thread-memleak.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Fix stuck threads and memory leaks when errors occur while writing.
* zfs-01-zpios-arg-corruption.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Fix zpios cmd line argument corruption problem.
* zfs-00-minor-fixes.patch:
Ricardo M. Correia <Ricardo.M.Correia@sun.com>
- Minor build system improvements
- Minor script improvements
- Create a full copy and not a link tree with quilt
- KPIOS_MAJOR changed from 231 to 232
- BIO_RW_BARRIER flag removed from IO request
2008-06-30 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.3.3
* : Minor script updates and tweaks to be compatible with
the latest version of the SPL.
2008-06-13 Brian Behlendorf <behlendorf1@llnl.gov>
* vdev_disk.diff: Replace vdev_disk implementation which was
based on the kmalloc'ed logical address space with a version
which works with vmalloc'ed memory in the virtual address space.
This was done to support the new SPL slab implementation which
is based on virtual addresses to avoid the need for contigeously
allocated memory.
2008-06-05 Brian Behlendorf <behlendorf1@llnl.gov>
* arc-vm-integration.diff: Reduce maximum default arc memory
usage to 1/4 of total system memory. Because all the bulk data
is still allocated on the slab memory fragmentation is a serious
concern. To address this in the short term we simply need to
leave lots of free memory.
* fix-stack.diff: First step towards reducing stack usage so
we can run the full ZFS stack using a stock kernel.
2008-06-04 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.3.2
* : Extensive improvements to the build system to detect kernel
API changes so we can flexibly build with a wider range of kernel
versions. The code has now been testing with the 2.6.18-32chaos
and 2.6.25.3-18.fc9 kernels, however we should also be compatible
with other kernels in the range of 2.6.18-2.6.25. The only
remaining issue preventing us from running with a stock
kernel is ZFS stack usage.
2008-05-21 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.3.1
* : License headers including URCL added for release.
2008-05-21 Brian Behlendorf <behlendorf1@llnl.gov>
* : Tag zfs-0.3.0
* configure.ac: Improved autotools support and configurable debug.
2008-05-15 Brian Behlendorf <behlendorf1@llnl.gov>
* : Updating original ZFS sources to build 89 which
includes the new write throttling changes plus support
for using ZFS as your root device. Neither of which
will work exactly right without some more work but this
gets us much closers to the latest source.
2008-02-28 Brian Behlendorf <behlendorf1@llnl.gov>
* : First attempt based on SPL module and zfs-lustre sources

186
GIT Normal file
View File

@ -0,0 +1,186 @@
=========================== WHY USE GIT+TOPGIT? ==========================
Three major concerns were on our mind when setting up this project.
o First we needed to structure the project in such a way that it would be
easy to rebase all of our changes on the latest official ZFS release
from Sun. We absolutely need to be able to benefit from the upstream
improvements and not get locked in to an old version of the code base.
o Secondly, we wanted to be able to easily manage our changes in terms
of a patch stack or graph. This allows us to easily isolate specific
changes and push them upstream for inclusion. It also allows us to
easily update or drop specific changes based on what occurs upstream.
o Thirdly we needed our DVCS to be integrated with the management of this
patch stack or graph. We have tried other methods in the past such as
SVN+Quilt but have found managing the patch stack becomes cumbersome.
By using Git+TopGit to more tightly integrate our patches in to the repo
we expect several benefits. One of the most important will be the
ability to easily work on the patch's with a distributed development
team, additionally the repo can track patch history, and we can utilize
Git to merge patches and resolve conflicts.
TopGit is designed to specifically address these concerns by providing
tools to simplify the handling of large numbers of interdependent topic
branches. When using a TopGit aware repo every topic branch represents
a 'patch' and that branch references its dependent branches. The union
of all these branches is your final source base.
========================= SETTING UP GIT+TOPGIT ==========================
First off you need to install a Git package on your system. For my
purposes I have been working on a RHEL5 system with git version 1.5.4.5
installed and it has been working well. You will also need to go get
the latest version of TopGit which likely is not packaged nicely so you
will need to build it from source. You can use Git to clone TopGit
from the official site here and your all set:
> git clone git://repo.or.cz/w/topgit.git
> make
> make install # Default installs to $(HOME)
========================== TOPGIT AND ZFS ================================
One you have Git and TopGit installed you will want to clone a copy of
the Linux ZFS repo. While this project does not yet have a public home
it hopefully will some day. In the meanwhile if you have VPN access to
LLNL you can clone the latest official repo here. Cloning a TopGit
controlled repo is very similar to cloning a normal Git repo, but you
need to remember to use 'tg remote' to populate all topic branches.
> git clone http://eris.llnl.gov/git/zfs.git zfs
> cd zfs
> tg remote --populate origin
Now that you have the Linux ZFS repo the first thing you will probably
want to do is have a look at all the topic branches. TopGit provides
a summary command which shows all the branches and a brief summary for
each branch obtained from the .topmsg files.
> tg summary
0 feature-branch [PATCH] feature-branch
feature-commit-cb [PATCH] feature commit cb
feature-zap-cursor-to-key [PATCH] feature zap cursor to key
...
By convention all TopGit branches are usually prefixed with 't/', however
I have chosen not to do this for simplicity. A different convention I have
adopted is to tag the top most TopGit branch as 'top' for easy reference.
This provides a consistent label to be used when you need to reference the
branch which contains the union of all topic branches.
One thing you may also notice about the 'tg summary' command is it does
not show the branches in dependent order. This is done because TopGit allows
each branch to express multiple dependencies as a DAC. Initially this seemed
like an added complication which I planned to avoid by just implementing a
stack using the graph. However, this ended up being problematic because
with a stack when a change was made to a branch near the base, it was a
very expensive operation to merge the change up to the top of the stack.
By defining the dependencies as a graph it is possible to keep the depth
much shallower thus minimizing the merging. It has also proved insightful
as to each patches actual dependencies.
To see the dependencies you will need to use the --graphviz option and pipe
the result to dot for display. The following command works fairly well for
me. Longer term it would be nice to update this option to use a preferred
config options stored in the repo.
> tg summary --graphviz | dot -Txlib -Nfontsize=8
========================= UPDATING A TOPIC BRANCH ========================
Updating a topic branch in TopGit is a pretty straight forward but there
are a few rules you need to be aware of. The basic process involves
checking out the relevant topic branch where the changes need to be made,
making the changes, committing the changes to the branch and then merging
those changes in to dependent branches. TopGit provides some tools to make
this pretty easy, although it may be a little sluggish depending on how many
dependent branches are impacted by the change. Here is an example:
> git checkout modify-topic-branch # Checkout the proper branch
> ...update branch... # Update the branch
> git commit -a # Commit your changes
> git checkout top # Checkout the top branch
> tg update # Recursively merge in new branch
Assuming you change does not introduce any conflicts your done. All branches
were dependent on your change will have had the changed merged in. If your
change introduced a conflict you will need to resolve the conflict and then
continue on with the update.
========================== ADDING A TOPIC BRANCH =========================
Adding a topic branch in TopGit can be pretty straight forward. If your
adding a non-conflicting patch in parallel with other patches of the same
type, then things are pretty easy and TopGit does all the work.
> git co existing-topic-branch # Checkout the branch to add after
> tg create new-topic-branch # Create a new topic branch
> ...update .topmsg... # Update the branch message
> ...create patch... # Update with your changes
> git commit -a # Commit your changes
> git co dependent-topic-branch # Checkout dependent branch
> tg depend add new-topic-branch # Update dependencies
> git checkout top # Checkout the top branch
> tg update # Recursively merge in new branch
If you need to add your patch in series with another change things are
a little more complicated. In this case TopGit does not yet support removing
dependencies so you will need to do it by hand, as follows.
> git co existing-topic-branch # Checkout the branch to add after
> tg create new-topic-branch # Create a new topic branch
> ...update .topmsg... # Update the branch message
> ...create patch... # Update with your changes
> git commit -a # Commit your changes
> git co dependent-topic-branch # Checkout dependent branch
> ...update .topdeps... # Manually update dependencies
> git commit -a # Commit your changes
> tg update # TopGit update
> git checkout top # Checkout the top branch
> tg update # Recursively merge in new branch
Once your done, I find it is a good idea view the repo using the
'tg summary --graphviz' command and verify the updated dependency graph.
========================= REMOVING A TOPIC BRANCH ========================
Removing a topic branch in TopGit is also currently not very easy. To remove
a dependent branch the basic process is to commit a patch which reverts all
changes on the branch. Then that reversion must be merged in to all dependent
branches, the dependencies manually updated and finally the branch removed.
If the branch is not empty you will not be able to remove it.
> git co delete-topic-branch # Checkout the branch to delete
> tg patch | patch -R -p1 # Revert all branch changes
> git commit -a # Commit your changes
> git checkout top # Checkout the top branch
> tg update # Recursively merge revert
> git co dependent-topic-branch # Checkout dependent branch
> ...update .topdeps... # Manually update dependencies
> git commit -a # Commit your changes
> tg delete delete-topic-branch # Delete empty topic branch
Once your done, I find it is a good idea view the repo using the
'tg summary --graphviz' command and verify the updated dependency graph.
============================ TOPGIT TODO =================================
TopGit is still a young package which seems to be under active development
by its author. It provides the minimum set of commands needed but there
are clearly areas which simply have not yet been implemented. My short
list of features includes:
o 'tg summary --deps', option to display a text version of the topic
branch dependency DAC.
o 'tg depend list', list all topic branch dependencies.
o 'tg depend delete', cleanly remove a topic branch dependency.
o 'tg create', cleanly insert a topic branch in the middle
of the graph and properly take care updating all dependencies.
o 'tg delete', cleanly delete a topic branch in the middle
of the graph and properly take care updating all dependencies.

6
META Normal file
View File

@ -0,0 +1,6 @@
Meta: 1
Name: zfs
Branch: 1.0
Version: 0.4.0
Release: 1
Release-Tags: relext

25
Makefile.am Normal file
View File

@ -0,0 +1,25 @@
AUTOMAKE_OPTIONS = foreign dist-zip
SUBDIRS = doc scripts $(BUILDDIR)
CONFIG_CLEAN_FILES = aclocal.m4 config.guess config.sub
CONFIG_CLEAN_FILES += depcomp missing mkinstalldirs
EXTRA_DIST = autogen.sh
.PHONY: quilt
quilt: .quilt-$(BUILDDIR)
autogen: .autogen-$(BUILDDIR)
config: .config-$(BUILDDIR)
.quilt-$(BUILDDIR):
./scripts/quilt.sh -p $(NAME) -b $(BUILDDIR) -s $(SERIESFILE) -d $(PATCHDIR)
echo $(BUILDDIR) >$@
unquilt:
rm -rf $(BUILDDIR)
rm -f .quilt-$(BUILDDIR)
clean-generic:
distclean: unquilt
rpms: dist Makefile
rpmbuild -ta $(distdir).tar.gz

74
README Normal file
View File

@ -0,0 +1,74 @@
============================ ZFS KERNEL BUILD ============================
1) Build the SPL (Solaris Porting Layer) module which is designed to
provide many Solaris APIs in the Linux kernel which are needed
by ZFS. To build the SPL:
tar -xzf spl-x.y.z.tgz
cd spl-x.y.z
./configure --with-linux=<kernel src>
make
make check <as root>
2) Build ZFS, this port is based on build 89 of ZFS from OpenSolaris.
You will need to have both the kernel and SPL source available.
To build ZFS for use as a Linux kernel module (default):
tar -xzf zfs-x.y.z.tgz
cd zfs-x.y.z
./configure --with-linux=<kernel src> \
--with-spl=<spl src>
make
make check <as root>
========================= ZFS USER LIBRARY BUILD =========================
1) Build ZFS, this port is based on build 89 of ZFS from OpenSolaris.
To build ZFS as a userspace library:
tar -xzf zfs-x.y.z.tgz
cd zfs-x.y.z
./configure --zfsconfig=user
make
make check <as root>
============================ ZFS LUSTRE BUILD ============================
1) Build the SPL (Solaris Porting Layer) module which is designed to
provide many Solaris APIs in the Linux kernel which are needed
by ZFS. To build the SPL:
tar -xzf spl-x.y.z.tgz
cd spl-x.y.z
./configure --with-linux=<kernel src>
make
make check <as root>
2) Build ZFS, this port is based on build 89 of ZFS from OpenSolaris.
To build ZFS as a userspace library for use by a Lustre filesystem:
tar -xzf zfs-x.y.z.tgz
cd zfs-x.y.z
./configure --zfsconfig=lustre \
--with-linux=<kernel src> \
--with-spl=<spl src>
make
make check <as root>
3) Provided is an in-kernel test application called zpios which can be
used to simulate a Lustre IO load. It may be used as a stress test
or as a performance to measure your configuration. To simplify testing
there are scripts provided in the scripts/ directory. A single test
can be run as follows:
WARNING: You MUST update DEVICES in the create-zpool.sh script
to reference the devices you wish to use.
cd scripts
./load-zfs.sh # Load the ZFS/SPL module stack
./create-zpool.sh # Modify DEVICES to list your zpool devices
./zpios.sh # Modify for your particular zpios test
./unload-zfs.sh # Unload the ZFS/SPL module stack
Enjoy,
Brian Behlendorf <behlendorf1@llnl.gov>

8
autogen.sh Normal file
View File

@ -0,0 +1,8 @@
#!/bin/sh
aclocal -I config &&
libtoolize --automake --copy
autoheader &&
automake --add-missing --include-deps 2>/dev/null
autoconf
rm -rf autom4te.cache aclocal.m4

1
build/Makefile Normal file
View File

@ -0,0 +1 @@
obj-m := conftest.o

3
config/Makefile.am Normal file
View File

@ -0,0 +1,3 @@
EXTRA_DIST = zfs-build.m4
EXTRA_DIST = kernel user lustre

62
config/kernel.m4 Normal file
View File

@ -0,0 +1,62 @@
dnl #
dnl # Default ZFS kernel configuration
dnl #
AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
dnl # Kernel build make options
dnl # KERNELMAKE_PARAMS="V=1" # Enable verbose module build
KERNELMAKE_PARAMS=
dnl # Kernel build cpp flags
KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL "
KERNELCPPFLAGS="$KERNELCPPFLAGS -I$splsrc -I$splsrc/include -I$TOPDIR"
dnl # Required for pread() functionality an other GNU goodness
HOSTCFLAGS="$HOSTCFLAGS -ggdb -O2 -std=c99 "
HOSTCFLAGS="$HOSTCFLAGS -D_GNU_SOURCE -D__EXTENSIONS__ "
dnl # XXX: Quiet warnings not covered by the gcc-* patches
dnl # XXX: Remove once all the warnings are resolved
HOSTCFLAGS="$HOSTCFLAGS -Wno-switch -Wno-unused -Wno-missing-braces "
HOSTCFLAGS="$HOSTCFLAGS -Wno-parentheses "
HOSTCFLAGS="$HOSTCFLAGS -Wno-uninitialized -fno-strict-aliasing "
dnl # Expected defines not covered by zfs_config.h or spl_config.h
HOSTCFLAGS="$HOSTCFLAGS -DHAVE_SPL -D_POSIX_PTHREAD_SEMANTICS "
HOSTCFLAGS="$HOSTCFLAGS -D_FILE_OFFSET_BITS=64 "
HOSTCFLAGS="$HOSTCFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT "
HOSTCFLAGS="$HOSTCFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\" "
dnl # Expected default include path
HOSTCFLAGS="$HOSTCFLAGS -I$TOPDIR "
if test "$kernelbuild" != "$kernelsrc"; then
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild"
fi
AC_SUBST(KERNELMAKE_PARAMS)
AC_SUBST(KERNELCPPFLAGS)
AC_SUBST(HOSTCFLAGS)
dnl # XXX: I really, really hate this... but to ensure the kernel
dnl # build system compiles C files shared between a library and a
dnl # kernel module, we need to ensure each file has a unique make
dnl # target. To do that I'm creating symlinks for each shared
dnl # file at configure time. It may be possible something better
dnl # can be done in the Makefile but it will take some serious
dnl # investigation and I don't have the time now.
echo "creating symlinks for additional kernel make targets"
ln -f -s $LIBDIR/libport/u8_textprep.c $LIBDIR/libport/ku8_textprep.c
ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/kavl.c
ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/uavl.c
ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/knvpair.c
ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/unvpair.c
ln -f -s $LIBDIR/libzcommon/zfs_deleg.c $LIBDIR/libzcommon/kzfs_deleg.c
ln -f -s $LIBDIR/libzcommon/zfs_prop.c $LIBDIR/libzcommon/kzfs_prop.c
ln -f -s $LIBDIR/libzcommon/zprop_common.c $LIBDIR/libzcommon/kzprop_common.c
ln -f -s $LIBDIR/libzcommon/compress.c $LIBDIR/libzcommon/kcompress.c
ln -f -s $LIBDIR/libzcommon/list.c $LIBDIR/libzcommon/klist.c
ln -f -s $LIBDIR/libzcommon/zfs_namecheck.c $LIBDIR/libzcommon/kzfs_namecheck.c
ln -f -s $LIBDIR/libzcommon/zfs_comutil.c $LIBDIR/libzcommon/kzfs_comutil.c
ln -f -s $LIBDIR/libzcommon/zpool_prop.c $LIBDIR/libzcommon/kzpool_prop.c
])

4
config/lustre.m4 Normal file
View File

@ -0,0 +1,4 @@
dnl #
dnl # Default ZFS lustre configuration
dnl #
AC_DEFUN([ZFS_AC_CONFIG_LUSTRE], [])

4
config/user.m4 Normal file
View File

@ -0,0 +1,4 @@
dnl #
dnl # Default ZFS user configuration
dnl #
AC_DEFUN([ZFS_AC_CONFIG_USER], [])

387
config/zfs-build.m4 Normal file
View File

@ -0,0 +1,387 @@
AC_DEFUN([ZFS_AC_KERNEL], [
ver=`uname -r`
AC_ARG_WITH([linux],
AS_HELP_STRING([--with-linux=PATH],
[Path to kernel source]),
[kernelsrc="$withval"; kernelbuild="$withval"])
AC_ARG_WITH(linux-obj,
AS_HELP_STRING([--with-linux-obj=PATH],
[Path to kernel build objects]),
[kernelbuild="$withval"])
AC_MSG_CHECKING([kernel source directory])
if test -z "$kernelsrc"; then
kernelbuild=
sourcelink=/lib/modules/${ver}/source
buildlink=/lib/modules/${ver}/build
if test -e $sourcelink; then
kernelsrc=`(cd $sourcelink; /bin/pwd)`
fi
if test -e $buildlink; then
kernelbuild=`(cd $buildlink; /bin/pwd)`
fi
if test -z "$kernelsrc"; then
kernelsrc=$kernelbuild
fi
if test -z "$kernelsrc" -o -z "$kernelbuild"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Please specify the location of the kernel source
*** with the '--with-linux=PATH' option])
fi
fi
AC_MSG_RESULT([$kernelsrc])
AC_MSG_CHECKING([kernel build directory])
AC_MSG_RESULT([$kernelbuild])
AC_MSG_CHECKING([kernel source version])
if test -r $kernelbuild/include/linux/version.h &&
fgrep -q UTS_RELEASE $kernelbuild/include/linux/version.h; then
kernsrcver=`(echo "#include <linux/version.h>";
echo "kernsrcver=UTS_RELEASE") |
cpp -I $kernelbuild/include |
grep "^kernsrcver=" | cut -d \" -f 2`
elif test -r $kernelbuild/include/linux/utsrelease.h &&
fgrep -q UTS_RELEASE $kernelbuild/include/linux/utsrelease.h; then
kernsrcver=`(echo "#include <linux/utsrelease.h>";
echo "kernsrcver=UTS_RELEASE") |
cpp -I $kernelbuild/include |
grep "^kernsrcver=" | cut -d \" -f 2`
fi
if test -z "$kernsrcver"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Cannot determine the version of the linux kernel source.
*** Please prepare the kernel before running this script])
fi
AC_MSG_RESULT([$kernsrcver])
kmoduledir=${INSTALL_MOD_PATH}/lib/modules/$kernsrcver
LINUX=${kernelsrc}
LINUX_OBJ=${kernelbuild}
AC_SUBST(LINUX)
AC_SUBST(LINUX_OBJ)
AC_SUBST(kmoduledir)
])
AC_DEFUN([ZFS_AC_SPL], [
AC_ARG_WITH([spl],
AS_HELP_STRING([--with-spl=PATH],
[Path to spl source]),
[splsrc="$withval"; splbuild="$withval"])
AC_ARG_WITH([spl-obj],
AS_HELP_STRING([--with-spl-obj=PATH],
[Path to spl build objects]),
[splbuild="$withval"])
AC_MSG_CHECKING([spl source directory])
if test -z "$splsrc"; then
splbuild=
sourcelink=/tmp/`whoami`/spl
buildlink=/tmp/`whoami`/spl
if test -e $sourcelink; then
splsrc=`(cd $sourcelink; /bin/pwd)`
fi
if test -e $buildlink; then
splbuild=`(cd $buildlink; /bin/pwd)`
fi
if test -z "$splsrc"; then
splsrc=$splbuild
fi
fi
if test -z "$splsrc" -o -z "$splbuild"; then
sourcelink=/lib/modules/${ver}/source
buildlink=/lib/modules/${ver}/build
if test -e $sourcelink; then
splsrc=`(cd $sourcelink; /bin/pwd)`
fi
if test -e $buildlink; then
splbuild=`(cd $buildlink; /bin/pwd)`
fi
if test -z "$splsrc"; then
splsrc=$splbuild
fi
if test -z "$splsrc" -o -z "$splbuild"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Please specify the location of the spl source
*** with the '--with-spl=PATH' option])
fi
fi
AC_MSG_RESULT([$splsrc])
AC_MSG_CHECKING([spl build directory])
AC_MSG_RESULT([$splbuild])
AC_MSG_CHECKING([spl source version])
if test -r $splbuild/spl_config.h &&
fgrep -q VERSION $splbuild/spl_config.h; then
splsrcver=`(echo "#include <spl_config.h>";
echo "splsrcver=VERSION") |
cpp -I $splbuild |
grep "^splsrcver=" | cut -d \" -f 2`
fi
if test -z "$splsrcver"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Cannot determine the version of the spl source.
*** Please prepare the spl source before running this script])
fi
AC_MSG_RESULT([$splsrcver])
AC_MSG_CHECKING([spl Module.symvers])
if test -r $splbuild/modules/Module.symvers; then
splsymvers=$splbuild/modules/Module.symvers
elif test -r $kernelbuild/Module.symvers; then
splsymvers=$kernelbuild/Module.symvers
fi
if test -z "$splsymvers"; then
AC_MSG_RESULT([Not found])
AC_MSG_ERROR([
*** Cannot find extra Module.symvers in the spl source.
*** Please prepare the spl source before running this script])
fi
AC_MSG_RESULT([$splsymvers])
AC_SUBST(splsrc)
AC_SUBST(splsymvers)
])
AC_DEFUN([ZFS_AC_LICENSE], [
AC_MSG_CHECKING([license])
AC_MSG_RESULT([CDDL])
dnl # AC_DEFINE([HAVE_GPL_ONLY_SYMBOLS], [1],
dnl # [Define to 1 if module is licensed under the GPL])
])
AC_DEFUN([ZFS_AC_DEBUG], [
AC_MSG_CHECKING([whether debugging is enabled])
AC_ARG_ENABLE( [debug],
AS_HELP_STRING([--enable-debug],
[Enable generic debug support (default off)]),
[ case "$enableval" in
yes) zfs_ac_debug=yes ;;
no) zfs_ac_debug=no ;;
*) AC_MSG_RESULT([Error!])
AC_MSG_ERROR([Bad value "$enableval" for --enable-debug]) ;;
esac ]
)
if test "$zfs_ac_debug" = yes; then
AC_MSG_RESULT([yes])
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DDEBUG "
HOSTCFLAGS="${HOSTCFLAGS} -DDEBUG "
else
AC_MSG_RESULT([no])
AC_DEFINE([NDEBUG], [1],
[Define to 1 to disable debug tracing])
KERNELCPPFLAGS="${KERNELCPPFLAGS} -DNDEBUG "
HOSTCFLAGS="${HOSTCFLAGS} -DNDEBUG "
fi
])
AC_DEFUN([ZFS_AC_CONFIG_SCRIPT], [
SCRIPT_CONFIG=.script-config
rm -f ${SCRIPT_CONFIG}
echo "KERNELSRC=${LINUX}" >>${SCRIPT_CONFIG}
echo "KERNELBUILD=${LINUX_OBJ}" >>${SCRIPT_CONFIG}
echo "KERNELSRCVER=$kernsrcver" >>${SCRIPT_CONFIG}
echo >>${SCRIPT_CONFIG}
echo "SPLSRC=$splsrc" >>${SCRIPT_CONFIG}
echo "SPLBUILD=$splbuild" >>${SCRIPT_CONFIG}
echo "SPLSRCVER=$splsrcver" >>${SCRIPT_CONFIG}
echo "SPLSYMVERS=$splsymvers" >>${SCRIPT_CONFIG}
echo >>${SCRIPT_CONFIG}
echo "ZFSSRC=${TOPDIR}/src" >>${SCRIPT_CONFIG}
echo "ZFSBUILD=${ZFSDIR}" >>${SCRIPT_CONFIG}
echo >>${SCRIPT_CONFIG}
echo "TOPDIR=${TOPDIR}" >>${SCRIPT_CONFIG}
echo "LIBDIR=${LIBDIR}" >>${SCRIPT_CONFIG}
echo "CMDDIR=${CMDDIR}" >>${SCRIPT_CONFIG}
])
AC_DEFUN([ZFS_AC_CONFIG], [
TOPDIR=`/bin/pwd`
BUILDDIR=$ZFS_META_NAME #+$zfsconfig
ZFSDIR=$TOPDIR/$BUILDDIR
LIBDIR=$ZFSDIR/lib
CMDDIR=$ZFSDIR/zcmd
UNAME=`uname -r | cut -d- -f1`
AC_SUBST(UNAME)
AC_SUBST(TOPDIR)
AC_SUBST(BUILDDIR)
AC_SUBST(ZFSDIR)
AC_SUBST(LIBDIR)
AC_SUBST(CMDDIR)
AC_SUBST(UNAME)
AC_ARG_WITH([zfs-config],
AS_HELP_STRING([--with-config=CONFIG],
[Config file 'kernel|user|lustre']),
[zfsconfig="$withval"])
AC_MSG_CHECKING([zfs config])
AC_MSG_RESULT([$zfsconfig]);
case "$zfsconfig" in
kernel) ZFS_AC_CONFIG_KERNEL ;;
user) ZFS_AC_CONFIG_USER ;;
lustre) ZFS_AC_CONFIG_LUSTRE ;;
*)
AC_MSG_RESULT([Error!])
AC_MSG_ERROR([Bad value "$zfsconfig" for --with-config,
user kernel|user|lustre]) ;;
esac
ZFS_AC_CONFIG_SCRIPT
])
dnl #
dnl # ZFS_LINUX_CONFTEST
dnl #
AC_DEFUN([ZFS_LINUX_CONFTEST], [
cat >conftest.c <<_ACEOF
$1
_ACEOF
])
dnl #
dnl # ZFS_LANG_PROGRAM(C)([PROLOGUE], [BODY])
dnl #
m4_define([ZFS_LANG_PROGRAM], [
$1
int
main (void)
{
dnl Do *not* indent the following line: there may be CPP directives.
dnl Don't move the `;' right after for the same reason.
$2
;
return 0;
}
])
dnl #
dnl # ZFS_LINUX_COMPILE_IFELSE / like AC_COMPILE_IFELSE
dnl #
AC_DEFUN([ZFS_LINUX_COMPILE_IFELSE], [
m4_ifvaln([$1], [ZFS_LINUX_CONFTEST([$1])])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.ko build/Makefile
echo "obj-m := conftest.o" >build/Makefile
dnl AS_IF([AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" -f $PWD/build/Makefile LINUXINCLUDE="-Iinclude -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM SUBDIRS=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
AS_IF([AC_TRY_COMMAND(cp conftest.c build && make [$2] CC="$CC" LINUXINCLUDE="-Iinclude -include include/linux/autoconf.h" -o tmp_include_depends -o scripts -o include/config/MARKER -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build) >/dev/null && AC_TRY_COMMAND([$3])],
[$4],
[_AC_MSG_LOG_CONFTEST
m4_ifvaln([$5],[$5])dnl])dnl
rm -f build/conftest.o build/conftest.mod.c build/conftest.mod.o build/conftest.ko m4_ifval([$1], [build/conftest.c conftest.c])[]dnl
])
dnl #
dnl # ZFS_LINUX_TRY_COMPILE like AC_TRY_COMPILE
dnl #
AC_DEFUN([ZFS_LINUX_TRY_COMPILE],
[ZFS_LINUX_COMPILE_IFELSE(
[AC_LANG_SOURCE([ZFS_LANG_PROGRAM([[$1]], [[$2]])])],
[modules],
[test -s build/conftest.o],
[$3], [$4])
])
dnl #
dnl # ZFS_LINUX_CONFIG
dnl #
AC_DEFUN([ZFS_LINUX_CONFIG],
[AC_MSG_CHECKING([whether Linux was built with CONFIG_$1])
ZFS_LINUX_TRY_COMPILE([
#ifndef AUTOCONF_INCLUDED
#include <linux/config.h>
#endif
],[
#ifndef CONFIG_$1
#error CONFIG_$1 not #defined
#endif
],[
AC_MSG_RESULT([yes])
$2
],[
AC_MSG_RESULT([no])
$3
])
])
dnl #
dnl # ZFS_CHECK_SYMBOL_EXPORT
dnl # check symbol exported or not
dnl #
AC_DEFUN([ZFS_CHECK_SYMBOL_EXPORT],
[AC_MSG_CHECKING([whether symbol $1 is exported])
grep -q -E '[[[:space:]]]$1[[[:space:]]]' $LINUX/Module.symvers 2>/dev/null
rc=$?
if test $rc -ne 0; then
export=0
for file in $2; do
grep -q -E "EXPORT_SYMBOL.*($1)" "$LINUX/$file" 2>/dev/null
rc=$?
if test $rc -eq 0; then
export=1
break;
fi
done
if test $export -eq 0; then
AC_MSG_RESULT([no])
$4
else
AC_MSG_RESULT([yes])
$3
fi
else
AC_MSG_RESULT([yes])
$3
fi
])
dnl #
dnl # 2.6.x API change
dnl # bio_end_io_t uses 2 args (size was dropped from prototype)
dnl #
AC_DEFUN([ZFS_AC_2ARGS_BIO_END_IO_T],
[AC_MSG_CHECKING([whether bio_end_io_t wants 2 args])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
ZFS_LINUX_TRY_COMPILE([
#include <linux/bio.h>
],[
void (*wanted_end_io)(struct bio *, int) = NULL;
bio_end_io_t *local_end_io;
local_end_io = wanted_end_io;
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_2ARGS_BIO_END_IO_T, 1,
[bio_end_io_t wants 2 args])
],[
AC_MSG_RESULT(no)
])
EXTRA_KCFLAGS="$tmp_flags"
])

112
config/zfs-meta.m4 Normal file
View File

@ -0,0 +1,112 @@
dnl #
dnl # ZFS_AC_META
dnl # Read metadata from the META file.
dnl #
dnl # AUTHOR:
dnl # Chris Dunlap <cdunlap@llnl.gov>
dnl #
AC_DEFUN([ZFS_AC_META], [
AC_MSG_CHECKING([metadata])
META="$srcdir/META"
_zfs_ac_meta_got_file=no
if test -f "$META"; then
_zfs_ac_meta_got_file=yes
ZFS_META_NAME=_ZFS_AC_META_GETVAL([(?:NAME|PROJECT|PACKAGE)]);
if test -n "$ZFS_META_NAME"; then
AC_DEFINE_UNQUOTED([ZFS_META_NAME], ["$ZFS_META_NAME"],
[Define the project name.]
)
AC_SUBST([ZFS_META_NAME])
fi
ZFS_META_VERSION=_ZFS_AC_META_GETVAL([VERSION]);
if test -n "$ZFS_META_VERSION"; then
AC_DEFINE_UNQUOTED([ZFS_META_VERSION], ["$ZFS_META_VERSION"],
[Define the project version.]
)
AC_SUBST([ZFS_META_VERSION])
fi
ZFS_META_RELEASE=_ZFS_AC_META_GETVAL([RELEASE]);
if test -n "$ZFS_META_RELEASE"; then
AC_DEFINE_UNQUOTED([ZFS_META_RELEASE], ["$ZFS_META_RELEASE"],
[Define the project release.]
)
AC_SUBST([ZFS_META_RELEASE])
fi
if test -n "$ZFS_META_NAME" -a -n "$ZFS_META_VERSION"; then
ZFS_META_ALIAS="$ZFS_META_NAME-$ZFS_META_VERSION"
test -n "$ZFS_META_RELEASE" &&
ZFS_META_ALIAS="$ZFS_META_ALIAS-$ZFS_META_RELEASE"
AC_DEFINE_UNQUOTED([ZFS_META_ALIAS],
["$ZFS_META_ALIAS"],
[Define the project alias string.]
)
AC_SUBST([ZFS_META_ALIAS])
fi
ZFS_META_DATA=_ZFS_AC_META_GETVAL([DATE]);
if test -n "$ZFS_META_DATA"; then
AC_DEFINE_UNQUOTED([ZFS_META_DATA], ["$ZFS_META_DATA"],
[Define the project release date.]
)
AC_SUBST([ZFS_META_DATA])
fi
ZFS_META_AUTHOR=_ZFS_AC_META_GETVAL([AUTHOR]);
if test -n "$ZFS_META_AUTHOR"; then
AC_DEFINE_UNQUOTED([ZFS_META_AUTHOR], ["$ZFS_META_AUTHOR"],
[Define the project author.]
)
AC_SUBST([ZFS_META_AUTHOR])
fi
m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$])
ZFS_META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_CURRENT]);
ZFS_META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_REVISION]);
ZFS_META_LT_AGE=_ZFS_AC_META_GETVAL([LT_AGE]);
if test -n "$ZFS_META_LT_CURRENT" \
-o -n "$ZFS_META_LT_REVISION" \
-o -n "$ZFS_META_LT_AGE"; then
test -n "$ZFS_META_LT_CURRENT" || ZFS_META_LT_CURRENT="0"
test -n "$ZFS_META_LT_REVISION" || ZFS_META_LT_REVISION="0"
test -n "$ZFS_META_LT_AGE" || ZFS_META_LT_AGE="0"
AC_DEFINE_UNQUOTED([ZFS_META_LT_CURRENT],
["$ZFS_META_LT_CURRENT"],
[Define the libtool library 'current'
version information.]
)
AC_DEFINE_UNQUOTED([ZFS_META_LT_REVISION],
["$ZFS_META_LT_REVISION"],
[Define the libtool library 'revision'
version information.]
)
AC_DEFINE_UNQUOTED([ZFS_META_LT_AGE], ["$ZFS_META_LT_AGE"],
[Define the libtool library 'age'
version information.]
)
AC_SUBST([ZFS_META_LT_CURRENT])
AC_SUBST([ZFS_META_LT_REVISION])
AC_SUBST([ZFS_META_LT_AGE])
fi
fi
AC_MSG_RESULT([$_zfs_ac_meta_got_file])
]
)
AC_DEFUN([_ZFS_AC_META_GETVAL],
[`perl -n\
-e "BEGIN { \\$key=shift @ARGV; }"\
-e "next unless s/^\s*\\$key@<:@:=@:>@//i;"\
-e "s/^((?:@<:@^'\"#@:>@*(?:(@<:@'\"@:>@)@<:@^\2@:>@*\2)*)*)#.*/\\@S|@1/;"\
-e "s/^\s+//;"\
-e "s/\s+$//;"\
-e "s/^(@<:@'\"@:>@)(.*)\1/\\@S|@2/;"\
-e "\\$val=\\$_;"\
-e "END { print \\$val if defined \\$val; }"\
'$1' $META`]dnl
)

141
configure.ac Normal file
View File

@ -0,0 +1,141 @@
#
# This file is part of the ZFS Linux port.
#
# Copyright (c) 2008 Lawrence Livermore National Security, LLC.
# Produced at Lawrence Livermore National Laboratory
# Written by:
# Brian Behlendorf <behlendorf1@llnl.gov>,
# Herb Wartens <wartens2@llnl.gov>,
# Jim Garlick <garlick@llnl.gov>
# LLNL-CODE-403049
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
AC_INIT
AC_LANG(C)
ZFS_AC_META
AC_CONFIG_AUX_DIR([config])
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE([$ZFS_META_NAME], [$ZFS_META_VERSION])
AC_CONFIG_HEADERS([zfs_config.h])
AM_MAINTAINER_MODE
AC_PROG_INSTALL
AC_PROG_CC
AC_PROG_LIBTOOL
zfsconfig=kernel
kernelsrc=
kernelbuild=
splsrc=
splbuild=
ZFS_AC_KERNEL
ZFS_AC_SPL
ZFS_AC_CONFIG
ZFS_AC_LICENSE
ZFS_AC_DEBUG
ZFS_AC_2ARGS_BIO_END_IO_T
# Check for needed userspace bits
AC_CHECK_HEADERS(sys/types.h sys/byteorder.h sys/isa_defs.h \
sys/systeminfo.h sys/u8_textprep.h libdiskmgt.h)
AC_CHECK_FUNCS(strlcat strlcpy strnlen issetugid setmntent getexecname)
AC_CHECK_LIB([diskmgt], [libdiskmgt_error],
[AC_DEFINE([HAVE_LIBDISKMGT], 1,
[Define to 1 if 'libdiskmgt' library available])])
AC_CHECK_LIB([efi], [efi_alloc_and_init],
[AC_DEFINE([HAVE_LIBEFI], 1,
[Define to 1 if 'libefi' library available])])
AC_CHECK_LIB([share], [sa_init],
[AC_DEFINE([HAVE_LIBSHARE], 1,
[Define to 1 if 'libshare' library available])])
AC_EGREP_HEADER(ioctl, unistd.h,
[AC_DEFINE([HAVE_IOCTL_IN_UNISTD_H], 1,
[Define to 1 if ioctl() is defined in <unistd.h> header file])])
AC_EGREP_HEADER(ioctl, sys/ioctl.h,
[AC_DEFINE([HAVE_IOCTL_IN_SYS_IOCTL_H], 1,
[Define to 1 if ioctl() is defined in <sys/ioctl.h> header file])])
AC_EGREP_HEADER(ioctl, stropts.h,
[AC_DEFINE([HAVE_IOCTL_IN_STROPTS_H], 1,
[Define to 1 if ioctl() is defined in <stropts.h> header file])])
AC_EGREP_HEADER(strcmp, strings.h,
[AC_DEFINE([HAVE_STRCMP_IN_STRINGS_H], 1,
[Define to 1 if strcmpl() is defined in <strings.h> header file])])
AC_EGREP_HEADER(sysinfo, sys/systeminfo.h,
[AC_DEFINE([HAVE_SYSINFO_IN_SYS_SYSTEMINFO_H], 1,
[Define to 1 if sysinfo() is defined in <sys/systeminfo.h> header file])])
#AC_DEFINE([HAVE_ZVOL], 1, ["Define to 1 to include ZVOL support"])
#AC_DEFINE([HAVE_ZPL], 1, ["Define to 1 to include ZPL support"])
#AC_DEFINE([WANT_FAKE_IOCTL], 1, ["Define to 1 to use fake ioctl() support"])
#AC_DEFINE([HAVE_DM_INUSE_SWAP], 1, ["None"])
#AC_DEFINE([HAVE_UNICODE], 1, ["None"])
#AC_DEFINE([HAVE_INTTYPES], 1, [Define to 1 if unint16 defined in <sys/types.h> header file])
AC_CONFIG_FILES([ Makefile
config/Makefile
doc/Makefile
scripts/Makefile
zfs/Makefile
zfs/lib/Makefile
zfs/lib/libnvpair/include/sys/Makefile
zfs/lib/libnvpair/include/Makefile
zfs/lib/libnvpair/Makefile
zfs/lib/libavl/include/sys/Makefile
zfs/lib/libavl/include/Makefile
zfs/lib/libavl/Makefile
zfs/lib/libuutil/include/Makefile
zfs/lib/libuutil/Makefile
zfs/lib/libzfs/include/Makefile
zfs/lib/libzfs/Makefile
zfs/lib/libumem/include/Makefile
zfs/lib/libumem/Makefile
zfs/lib/libumem/sys/Makefile
zfs/lib/libzcommon/include/Makefile
zfs/lib/libzcommon/include/sys/fm/fs/Makefile
zfs/lib/libzcommon/include/sys/fm/Makefile
zfs/lib/libzcommon/include/sys/Makefile
zfs/lib/libzcommon/include/sys/fs/Makefile
zfs/lib/libzcommon/Makefile
zfs/lib/libzpool/Makefile
zfs/lib/libspl/include/sys/Makefile
zfs/lib/libspl/include/Makefile
zfs/lib/libspl/Makefile
zfs/zcmd/ztest/Makefile
zfs/zcmd/Makefile
zfs/zcmd/zfs/Makefile
zfs/zcmd/zdb/Makefile
zfs/zcmd/zinject/Makefile
zfs/zcmd/zdump/Makefile
zfs/zcmd/zpool/Makefile
])
AC_OUTPUT

1
doc/Makefile.am Normal file
View File

@ -0,0 +1 @@
EXTRA_DIST = LEGAL

8
scripts/Makefile.am Normal file
View File

@ -0,0 +1,8 @@
EXTRA_DIST = check.sh create-zpool.sh load-zfs.sh unload-zfs.sh
EXTRA_DIST += profile-kpios-disk.sh profile-kpios-pids.sh
EXTRA_DIST += profile-kpios-post.sh profile-kpios-pre.sh profile-kpios.sh
EXTRA_DIST += survey.sh update-zfs.sh zpios-jbod.sh zpios.sh
check:
./check.sh

17
scripts/check.sh Normal file
View File

@ -0,0 +1,17 @@
#!/bin/bash
prog=check.sh
die() {
echo "${prog}: $1" >&2
exit 1
}
if [ $(id -u) != 0 ]; then
die "Must run as root"
fi
./load-zfs.sh || die ""
./unload-zfs.sh || die ""
exit 0

39
scripts/create-zpool.sh Normal file
View File

@ -0,0 +1,39 @@
#!/bin/bash
prog=create-zpool.sh
. ../.script-config
# Device list, e.g.
#
# Single device
#DEVICES="/dev/sda"
#
# All disks in a Sun Thumper/Thor
#DEVICES="/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf \
# /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk /dev/sdl \
# /dev/sdm /dev/sdn /dev/sdo /dev/sdp /dev/sdq /dev/sdr \
# /dev/sds /dev/sdt /dev/sdu /dev/sdv /dev/sdw /dev/sdx \
# /dev/sdy /dev/sdz /dev/sdaa /dev/sdab /dev/sdac /dev/sdad \
# /dev/sdae /dev/sdaf /dev/sdag /dev/sdah /dev/sdai /dev/sdaj \
# /dev/sdak /dev/sdal /dev/sdam /dev/sdan /dev/sdao /dev/sdap \
# /dev/sdaq /dev/sdar /dev/sdas /dev/sdat /dev/sdau /dev/sdav"
#
# Promise JBOD config
#DEVICES="/dev/sdb /dev/sdc /dev/sdd \
# /dev/sde /dev/sdf /dev/sdg \
# /dev/sdh /dev/sdi /dev/sdj \
# /dev/sdk /dev/sdl /dev/sdm"
#
DEVICES=""
echo
echo "zpool create lustre <devices>"
${CMDDIR}/zpool/zpool create -F lustre ${DEVICES}
echo
echo "zpool list"
${CMDDIR}/zpool/zpool list
echo
echo "zpool status lustre"
${CMDDIR}/zpool/zpool status lustre

58
scripts/load-zfs.sh Normal file
View File

@ -0,0 +1,58 @@
#!/bin/bash
prog=load-zfs.sh
. ../.script-config
spl_options=$1
zpool_options=$2
spl_module=${SPLBUILD}/modules/spl/spl.ko
zlib_module=/lib/modules/${KERNELSRCVER}/kernel/lib/zlib_deflate/zlib_deflate.ko
zavl_module=${ZFSBUILD}/lib/libavl/zavl.ko
znvpair_module=${ZFSBUILD}/lib/libnvpair/znvpair.ko
zport_module=${ZFSBUILD}/lib/libport/zport.ko
zcommon_module=${ZFSBUILD}/lib/libzcommon/zcommon.ko
zpool_module=${ZFSBUILD}/lib/libzpool/zpool.ko
zctl_module=${ZFSBUILD}/lib/libdmu-ctl/zctl.ko
zpios_module=${ZFSBUILD}/lib/libzpios/zpios.ko
die() {
echo "${prog}: $1" >&2
exit 1
}
load_module() {
echo "Loading $1"
/sbin/insmod $* || die "Failed to load $1"
}
if [ $(id -u) != 0 ]; then
die "Must run as root"
fi
if /sbin/lsmod | egrep -q "^spl|^zavl|^znvpair|^zport|^zcommon|^zlib_deflate|^zpool"; then
die "Must start with modules unloaded"
fi
if [ ! -f ${zavl_module} ] ||
[ ! -f ${znvpair_module} ] ||
[ ! -f ${zport_module} ] ||
[ ! -f ${zcommon_module} ] ||
[ ! -f ${zpool_module} ]; then
die "Source tree must be built, run 'make'"
fi
load_module ${spl_module} ${spl_options}
load_module ${zlib_module}
load_module ${zavl_module}
load_module ${znvpair_module}
load_module ${zport_module}
load_module ${zcommon_module}
load_module ${zpool_module} ${zpool_options}
load_module ${zctl_module}
load_module ${zpios_module}
sleep 1
echo "Successfully loaded ZFS module stack"
exit 0

55
scripts/unload-zfs.sh Normal file
View File

@ -0,0 +1,55 @@
#!/bin/bash
prog=unload-zfs.sh
. ../.script-config
spl_module=${SPLBUILD}/modules/spl/spl.ko
zlib_module=/lib/modules/${KERNELSRCVER}/kernel/lib/zlib_deflate/zlib_deflate.ko
zavl_module=${ZFSBUILD}/lib/libavl/zavl.ko
znvpair_module=${ZFSBUILD}/lib/libnvpair/znvpair.ko
zport_module=${ZFSBUILD}/lib/libport/zport.ko
zcommon_module=${ZFSBUILD}/lib/libzcommon/zcommon.ko
zpool_module=${ZFSBUILD}/lib/libzpool/zpool.ko
zctl_module=${ZFSBUILD}/lib/libdmu-ctl/zctl.ko
zpios_module=${ZFSBUILD}/lib/libzpios/zpios.ko
die() {
echo "${prog}: $1" >&2
exit 1
}
unload_module() {
echo "Unloading $1"
/sbin/rmmod $1 || die "Failed to unload $1"
}
if [ $(id -u) != 0 ]; then
die "Must run as root"
fi
unload_module ${zpios_module}
unload_module ${zctl_module}
unload_module ${zpool_module}
unload_module ${zcommon_module}
unload_module ${zport_module}
unload_module ${znvpair_module}
unload_module ${zavl_module}
unload_module ${zlib_module}
# Set DUMP=1 to generate debug logs on unload
if [ -n "${DUMP}" ]; then
sysctl -w kernel.spl.debug.dump=1
# This is racy, I don't like it, but for a helper script it will do.
SPL_LOG=`dmesg | tail -n 1 | cut -f5 -d' '`
${SPLBUILD}/cmd/spl ${SPL_LOG} >${SPL_LOG}.log
echo
echo "Dumped debug log: ${SPL_LOG}.log"
tail -n1 ${SPL_LOG}.log
echo
fi
unload_module ${spl_module}
echo "Successfully unloaded ZFS module stack"
exit 0

16
zfs/Makefile.in Normal file
View File

@ -0,0 +1,16 @@
subdir-m += lib
subdir-m += zcmd
all:
# Make the exported SPL symbols available to this module. There
# is probably a better way to do this, but this will have to do
# for now... an option to modpost perhaps.
cp @splsymvers@ .
# Kick off the kernel build system
$(MAKE) -C @LINUX@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ modules
install uninstall clean distclean maintainer-clean distdir:
$(MAKE) -C @LINUX@ SUBDIRS=`pwd` @KERNELMAKE_PARAMS@ $@
check:

10
zfs/lib/Makefile.in Normal file
View File

@ -0,0 +1,10 @@
subdir-m += libuutil # User space util support
subdir-m += libumem # User space memory support
subdir-m += libzfs # User space library support
subdir-m += libspl # User space compatibility library
subdir-m += libzpool # Kernel | User SPA/DMU/ZVOL/ZPL
subdir-m += libavl # Kernel &| User space AVL tree support
subdir-m += libnvpair # Kernel &| User space name/value support
subdir-m += libzcommon # Kernel &| User space common support

View File

@ -0,0 +1,31 @@
subdir-m += include
DISTFILES = avl.c
MODULE := zavl
LIBRARY := libavl
# Compile as kernel module. Needed symlinks created for all
# k* objects created by top level configure script.
EXTRA_CFLAGS = @KERNELCPPFLAGS@
EXTRA_CFLAGS += -I@LIBDIR@/libavl/include
obj-m := ${MODULE}.o
${MODULE}-objs += kavl.o # Generic AVL support
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += uavl.o

View File

@ -0,0 +1 @@
subdir-m += sys

View File

@ -0,0 +1 @@
DISTFILES = avl.h avl_impl.h

View File

@ -0,0 +1,34 @@
subdir-m += include
DISTFILES = libnvpair.c nvpair.c nvpair_alloc_fixed.c nvpair_alloc_system.c
MODULE := znvpair
LIBRARY := libnvpair
# Compile as kernel module. Needed symlinks created for all
# k* objects created by top level configure script.
EXTRA_CFLAGS = @KERNELCPPFLAGS@
EXTRA_CFLAGS += -I@LIBDIR@/libnvpair/include
obj-m := ${MODULE}.o
${MODULE}-objs += knvpair.o # Interfaces name/value pairs
${MODULE}-objs += nvpair_alloc_spl.o # Generic alloc/free support
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += unvpair.o
${LIBRARY}-objs += nvpair_alloc_system.o
${LIBRARY}-objs += libnvpair.o

View File

@ -0,0 +1,2 @@
subdir-m += sys
DISTFILES = libnvpair.h

View File

@ -0,0 +1 @@
DISTFILES = nvpair.h nvpair_impl.h

View File

@ -0,0 +1,37 @@
subdir-m += include
DISTFILES = port.c strlcat.c strlcpy.c strnlen.c u8_textprep.c
MODULE := zport
LIBRARY := libzport
# Compile as kernel module. Needed symlinks created for all
# k* objects created by top level configure script.
EXTRA_CFLAGS = @KERNELCPPFLAGS@
EXTRA_CFLAGS += -I@LIBDIR@/libzcommon/include
EXTRA_CFLAGS += -I@LIBDIR@/libport/include
obj-m := ${MODULE}.o
${MODULE}-objs += spl.o
${MODULE}-objs += ku8_textprep.o
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += strlcpy.o
${LIBRARY}-objs += strlcat.o
${LIBRARY}-objs += strnlen.o
${LIBRARY}-objs += port.o
${LIBRARY}-objs += u8_textprep.o

View File

@ -0,0 +1,4 @@
subdir-m += sys
DISTFILES = fake_ioctl.h libdiskmgt.h libshare.h mntent.h stdlib.h
DISTFILES += string.h strings.h stropts.h unistd.h

View File

@ -0,0 +1,3 @@
DISTFILES = byteorder.h debug.h efi_partition.h ioctl.h isa_defs.h
DISTFILES += policy.h socket.h swap.h systeminfo.h systm.h time.h
DISTFILES += types.h u8_textprep.h u8_textprep_data.h

View File

@ -0,0 +1,40 @@
subdir-m += include sys
DISTFILES = COPYING COPYRIGHT OPENSOLARIS.LICENSE README README-alpha TODO
DISTFILES += config.h envvar.c getpcstack.c init_lib.c misc.c misc.h
DISTFILES += sol_compat.h umem.c umem_agent_support.c umem_base.h
DISTFILES += umem_fail.c umem_fork.c umem_impl.h umem_update_thread.c
DISTFILES += vmem.c vmem_base.c vmem_base.h vmem_mmap.c vmem_sbrk.c
DISTFILES += vmem_stand.h
LIBRARY := libumem
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libumem
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libumem/sys
HOSTLDFLAGS += -pthread
HOSTLDFLAGS += -ldl
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += envvar.o
${LIBRARY}-objs += getpcstack.o
${LIBRARY}-objs += init_lib.o
${LIBRARY}-objs += misc.o
${LIBRARY}-objs += umem.o
${LIBRARY}-objs += umem_agent_support.o
${LIBRARY}-objs += umem_fail.o
${LIBRARY}-objs += umem_fork.o
${LIBRARY}-objs += umem_update_thread.o
${LIBRARY}-objs += vmem.o
${LIBRARY}-objs += vmem_base.o
${LIBRARY}-objs += vmem_mmap.o
${LIBRARY}-objs += vmem_sbrk.o

View File

@ -0,0 +1 @@
DISTFILES = umem.h

View File

@ -0,0 +1 @@
DISTFILES = vmem.h vmem_impl_user.h

View File

@ -0,0 +1,35 @@
subdir-m += include
DISTFILES = Makefile.in *.c
LIBRARY := libuutil
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -DNATIVE_BUILD
HOSTLDFLAGS += -pthread
HOSTLDFLAGS += -lrt
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += uu_alloc.o
${LIBRARY}-objs += uu_avl.o
${LIBRARY}-objs += uu_dprintf.o
${LIBRARY}-objs += uu_ident.o
${LIBRARY}-objs += uu_list.o
${LIBRARY}-objs += uu_misc.o
${LIBRARY}-objs += uu_open.o
${LIBRARY}-objs += uu_pname.o
${LIBRARY}-objs += uu_strtoint.o

View File

@ -0,0 +1 @@
DISTFILES = libuutil.h libuutil_common.h libuutil_impl.h

View File

@ -0,0 +1,55 @@
subdir-m += include
DISTFILES = compress.c list.c zfs_comutil.c zfs_deleg.c zfs_namecheck.c
DISTFILES += zfs_prop.c zpool_prop.c zprop_common.c
MODULE := zcommon
LIBRARY := libzcommon
# Compile as kernel module. Needed symlinks created for all
# k* objects created by top level configure script.
EXTRA_CFLAGS = @KERNELCPPFLAGS@
EXTRA_CFLAGS += -I@LIBDIR@/libzcommon/include
EXTRA_CFLAGS += -I@LIBDIR@/libport/include
EXTRA_CFLAGS += -I@LIBDIR@/libavl/include
EXTRA_CFLAGS += -I@LIBDIR@/libnvpair/include
obj-m := ${MODULE}.o
${MODULE}-objs += spl.o
${MODULE}-objs += kzfs_deleg.o
${MODULE}-objs += kzfs_prop.o
${MODULE}-objs += kzprop_common.o
${MODULE}-objs += kcompress.o
${MODULE}-objs += klist.o
${MODULE}-objs += kzfs_namecheck.o
${MODULE}-objs += kzfs_comutil.o
${MODULE}-objs += kzpool_prop.o
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += zfs_deleg.o
${LIBRARY}-objs += zfs_prop.o
${LIBRARY}-objs += zprop_common.o
${LIBRARY}-objs += compress.o
${LIBRARY}-objs += list.o
${LIBRARY}-objs += zfs_namecheck.o
${LIBRARY}-objs += zfs_comutil.o
${LIBRARY}-objs += zpool_prop.o

View File

@ -0,0 +1,2 @@
subdir-m += sys
DISTFILES = zfs_comutil.h zfs_deleg.h zfs_namecheck.h zfs_prop.h

View File

@ -0,0 +1,14 @@
subdir-m += fm fs
DISTFILES = arc.h bplist.h compress.h dbuf.h dmu.h dmu_impl.h
DISTFILES += dmu_objset.h dmu_traverse.h dmu_tx.h dmu_zfetch.h
DISTFILES += dnode.h dsl_dataset.h dsl_deleg.h dsl_dir.h dsl_pool.h
DISTFILES += dsl_prop.h dsl_synctask.h list.h list_impl.h metaslab.h
DISTFILES += metaslab_impl.h refcount.h rprwlock.h rrwlock.h spa.h
DISTFILES += spa_boot.h spa_impl.h space_map.h txg.h txg_impl.h uberblock.h
DISTFILES += uberblock_impl.h unique.h vdev.h vdev_disk.h vdev_file.h
DISTFILES += vdev_impl.h zap.h zap_impl.h zap_leaf.h zfs_acl.h
DISTFILES += zfs_context.h zfs_context_user.h zfs_ctldir.h zfs_debug.h
DISTFILES += zfs_dir.h zfs_fuid.h zfs_i18n.h zfs_ioctl.h zfs_rlock.h
DISTFILES += zfs_vfsops.h zfs_znode.h zil.h zil_impl.h zio.h
DISTFILES += zio_checksum.h zio_compress.h zio_impl.h zvol.h

View File

@ -0,0 +1 @@
subdir-m += fs

View File

@ -0,0 +1 @@
DISTFILES = zfs.h

View File

@ -0,0 +1 @@
DISTFILES = zfs.h

View File

@ -0,0 +1,46 @@
subdir-m += include
DISTFILES = libzfs_changelist.c libzfs_config.c libzfs_dataset.c
DISTFILES += libzfs_graph.c libzfs_import.c libzfs_mount.c libzfs_pool.c
DISTFILES += libzfs_sendrecv.c libzfs_status.c libzfs_util.c
LIBRARY := libzfs
# Compile as shared library. There's an extra useless host program
# here called 'zu' because it was the easiest way I could convince
# the kernel build system to construct a user space shared library.
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libdmu-ctl/include
HOSTCFLAGS += -I@LIBDIR@/libzpool # For existing fletcher.c hack
HOSTLDFLAGS += -ldl -lm
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
hostprogs-y := zu
always := $(hostprogs-y)
zu-objs := zu.o ${LIBRARY}.so
${LIBRARY}-objs += libzfs_dataset.o # Interface for manipulating datasets
${LIBRARY}-objs += libzfs_pool.o # Interface for manipulating pools
${LIBRARY}-objs += libzfs_changelist.o # Support for property changes
${LIBRARY}-objs += libzfs_config.o # Interface for manipulating configuration
${LIBRARY}-objs += libzfs_graph.o # Support for dependent list for datasets
${LIBRARY}-objs += libzfs_import.o # Discover and import pools
${LIBRARY}-objs += libzfs_mount.o # Mount, unmount, and share datasets
${LIBRARY}-objs += libzfs_status.o # Status
${LIBRARY}-objs += libzfs_util.o # Misc support
${LIBRARY}-objs += libzfs_sendrecv.o

View File

@ -0,0 +1 @@
DISTFILES = libzfs.h libzfs_impl.h

View File

@ -0,0 +1,102 @@
# NOTE: kernel.c, taskq.c, util.c unused by kernel port.
# Potentially they should just be removed if we don't care
# able user space lustre intergration from this source base.
DISTFILES = arc.c bplist.c dbuf.c dmu.c dmu_object.c dmu_objset.c
DISTFILES += dmu_traverse.c dmu_tx.c dmu_zfetch.c dnode.c dnode_sync.c
DISTFILES += dsl_dataset.c dsl_deleg.c dsl_dir.c dsl_pool.c dsl_prop.c
DISTFILES += dsl_synctask.c fletcher.c gzip.c kernel.c lzjb.c metaslab.c
DISTFILES += refcount.c sha256.c spa.c spa_boot.c spa_config.c spa_errlog.c
DISTFILES += spa_history.c spa_misc.c space_map.c taskq.c txg.c uberblock.c
DISTFILES += unique.c util.c vdev.c vdev_cache.c vdev_disk.c vdev_missing.c
DISTFILES += vdev_file.c vdev_label.c vdev_mirror.c vdev_queue.c vdev_raidz.c
DISTFILES += vdev_root.c zap.c zap_leaf.c zap_micro.c zfs_byteswap.c zfs_fm.c
DISTFILES += zfs_znode.c zil.c zio.c zio_checksum.c zio_compress.c zio_inject.c
MODULE := zpool
EXTRA_CFLAGS = @KERNELCPPFLAGS@
EXTRA_CFLAGS += -I@LIBDIR@/libzcommon/include
EXTRA_CFLAGS += -I@LIBDIR@/libport/include
EXTRA_CFLAGS += -I@LIBDIR@/libavl/include
EXTRA_CFLAGS += -I@LIBDIR@/libnvpair/include
obj-m := ${MODULE}.o
# DMU (Data Management Unit)
${MODULE}-objs += dmu.o # Interfaces dmu core
${MODULE}-objs += dmu_objset.o # Interfaces dmu objset open/close/manipulate
${MODULE}-objs += dmu_object.o # Interfaces dmu alloc/free
${MODULE}-objs += txg.o # Transaction model control threads
${MODULE}-objs += dmu_tx.o # Interfaces dmu transaction create/manipulate
${MODULE}-objs += dnode.o # Open context object-level support
${MODULE}-objs += dnode_sync.o # Syncing context object-level support
${MODULE}-objs += dbuf.o # Buffer management support
${MODULE}-objs += dmu_zfetch.o # Data stream prefetch logic
${MODULE}-objs += refcount.o # Generic refcount support
#${MODULE}-objs += dmu_send.o # XXX missing: Snapshot send/received support
# DSL (Dataset and Snapshot Layer)
${MODULE}-objs += dsl_dir.o # Namespace and management support
${MODULE}-objs += dsl_dataset.o # Interfaces snapshot/rollback/clone
${MODULE}-objs += dsl_pool.o # Pool-level support
${MODULE}-objs += dsl_prop.o # Property manipulation support
${MODULE}-objs += dsl_deleg.o # XXX: ?
${MODULE}-objs += dsl_synctask.o# XXX: ?
${MODULE}-objs += unique.o # Unique objset ID support
# ZAP (ZFS Attribute Processor)
${MODULE}-objs += zap.o # Interfaces (fat)
${MODULE}-objs += zap_leaf.o # Low-level support
${MODULE}-objs += zap_micro.o # Interfaces (micro)
# ZIL (ZFS Intent Log)
${MODULE}-objs += zil.o # Intent log
# ARC (Adaptive Replacement Cache)
${MODULE}-objs += arc.o # Adaptive replacement cache
# SPA (Storage Pool Allocator)
${MODULE}-objs += spa.o # Open/import/export/destroy support
${MODULE}-objs += spa_misc.o # Misc support (includes locking)
${MODULE}-objs += spa_config.o # Parse and update pool config data
${MODULE}-objs += spa_errlog.o # Log of persistent pool-wide data errors
${MODULE}-objs += spa_history.o # Command history support
${MODULE}-objs += spa_boot.o # Bootable root partitions
${MODULE}-objs += zfs_fm.o # Post reports of FMA consumption support
# ZIO (ZFS I/O Pipeline)
${MODULE}-objs += zio.o # Interfaces zio core
${MODULE}-objs += zio_checksum.o# Generic checksum interface
${MODULE}-objs += fletcher.o # Fletcher 2 and 4 checksum algorithms
${MODULE}-objs += sha256.o # SHA256 checksum algorithms
${MODULE}-objs += zio_compress.o# Generic compression interface
${MODULE}-objs += lzjb.o # LZJB compression algorithm
${MODULE}-objs += gzip.o # GZIP compression algorithm
${MODULE}-objs += uberblock.o # Basic uberblock routines
${MODULE}-objs += bplist.o # Keeps track of list of block pointers
${MODULE}-objs += metaslab.o # Bulk of DVA translation
${MODULE}-objs += space_map.o # Keeps track of free space
${MODULE}-objs += zio_inject.o # Framework for persistent error injection
# VDEV (Virtual Devices)
${MODULE}-objs += vdev.o # Interfaces vdev code
${MODULE}-objs += vdev_disk.o # Disk virtual device
${MODULE}-objs += vdev_file.o # File virtual device
${MODULE}-objs += vdev_mirror.o # N-Way mirroring
${MODULE}-objs += vdev_raidz.o # RAID-Z grouping
${MODULE}-objs += vdev_root.o # Top-level pseudo vdev
${MODULE}-objs += vdev_missing.o# Special device for import
${MODULE}-objs += vdev_label.o # Read/write indentifying label support
${MODULE}-objs += vdev_cache.o # Simple device-level caching for reads
${MODULE}-objs += vdev_queue.o # I/O scheduling algorithm for vdevs
# ZPL (ZFS Posix Layer)
${MODULE}-objs += zfs_byteswap.o# Byteswap support for ZPL
${MODULE}-objs += zfs_znode.o # Vnode to znode mapping
# Traversal
${MODULE}-objs += dmu_traverse.o# Traversal code
# SPL (Solaris Porting Layer)
${MODULE}-objs += spl.o # Linux kernel glue and misc support

6
zfs/zcmd/Makefile.in Normal file
View File

@ -0,0 +1,6 @@
subdir-m += zfs
subdir-m += zpool
#subdir-m += zdb
#subdir-m += ztest
#subdir-m += zdump
#subdir-m += zinject

32
zfs/zcmd/zdb/Makefile.in Normal file
View File

@ -0,0 +1,32 @@
DISTFILES = Makefile.in zdb.c zdb_il.c
CMD := zdb
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/zdb/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += zdb_il.o
${CMD}-objs += zdb.o # Core command

View File

@ -0,0 +1,31 @@
DISTFILES = Makefile.in zdump.c
CMD := zdump
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/zdump/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += zdump.o # Arg processing

32
zfs/zcmd/zfs/Makefile.in Normal file
View File

@ -0,0 +1,32 @@
DISTFILES = Makefile.in zfs_iter.c zfs_main.c zfs_util.h zfs_iter.h
CMD := zfs
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/zpool/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += zfs_main.o # Arg processing
${CMD}-objs += zfs_iter.o # Iterator support

View File

@ -0,0 +1,32 @@
DISTFILES = Makefile.in translate.c zinject.c zinject.h
CMD := zinject
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/zinject/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += translate.o # Translation support
${CMD}-objs += zinject.o # Core command

View File

@ -0,0 +1,34 @@
DISTFILES = Makefile.in zpool_main.c zpool_iter.c zpool_util.c zpool_vdev.c zpool_util.h
CMD := zpool
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/zpool/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += zpool_main.o # Arg processing
${CMD}-objs += zpool_iter.o # Iterator support
${CMD}-objs += zpool_util.o # Misc support
${CMD}-objs += zpool_vdev.o # Converts vdevs to nvlists for libzfs

View File

@ -0,0 +1,32 @@
DISTFILES = Makefile.in ztest.c
CMD := ztest
HOSTCFLAGS += @HOSTCFLAGS@
HOSTCFLAGS += -I@CMDDIR@/ztest/
HOSTCFLAGS += -I@LIBDIR@/libsolcompat/include
HOSTCFLAGS += -I@LIBDIR@/libport/include
HOSTCFLAGS += -I@LIBDIR@/libavl/include
HOSTCFLAGS += -I@LIBDIR@/libnvpair/include
HOSTCFLAGS += -I@LIBDIR@/libumem/include
HOSTCFLAGS += -I@LIBDIR@/libuutil/include
HOSTCFLAGS += -I@LIBDIR@/libzcommon/include
HOSTCFLAGS += -I@LIBDIR@/libzfs/include
HOSTLDFLAGS += -lavl -L@LIBDIR@/libavl
HOSTLDFLAGS += -lnvpair -L@LIBDIR@/libnvpair
HOSTLDFLAGS += -lumem -L@LIBDIR@/libumem
HOSTLDFLAGS += -luutil -L@LIBDIR@/libuutil
HOSTLDFLAGS += -lzport -L@LIBDIR@/libport
HOSTLDFLAGS += -lsolcompat -L@LIBDIR@/libsolcompat
HOSTLDFLAGS += -lzcommon -L@LIBDIR@/libzcommon
HOSTLDFLAGS += -lzfs -L@LIBDIR@/libzfs
# Additional shared library paths for executing binaries in-tree
export LD_RUN_PATH = @LIBDIR@/libavl:@LIBDIR@/libnvpair:@LIBDIR@/libumem:@LIBDIR@/libuutil:@LIBDIR@/libport:@LIBDIR@/libsolcompat:@LIBDIR@/libzcommon:@LIBDIR@/libzfs
hostprogs-y := ${CMD}
always := $(hostprogs-y)
${CMD}-objs += ztest.o # Core command