Commit Graph

1128 Commits

Author SHA1 Message Date
Carlos Alberto Lopez Perez
7080f6be51 Merge tag 'upstream/0.6.1'
Upstream version 0.6.1
2013-04-10 03:07:06 +02:00
Carlos Alberto Lopez Perez
4334280e37 Remove debuild-ppa.sh
* Remove the helper script for uploading to PPA.
2013-04-09 12:22:49 +02:00
Aron Xu
49cd3a7c99 Merge branch 'clopez' 2013-04-08 16:36:44 +08:00
Aron Xu
7289309f6c Merge tag 'upstream/0.6.1'
Upstream version 0.6.1

Conflicts:
	.gitignore
	README.markdown
	rpm/fedora/spl-dkms.spec.in
	rpm/fedora/spl.spec.in
2013-04-08 14:23:22 +08:00
Aron Xu
d956cfacce Imported Upstream version 0.6.1 2013-04-08 14:22:35 +08:00
Carlos Alberto Lopez Perez
d05a66dad6 Fix and improve the generation of the stripped kernel source tree
* Commit 493972c8 broke the rules used for the generation of the
    stripped kernel source tree because of the requirement of the
    rpm directory to be present for CONFIG_KERNEL
    (which is clearly not required for us).

  * Add a new rule to sed Makefile.am and manually set "SUBDIRS" to
    "module include" for CONFIG_KERNEL and remove it for the other
    configs.

    * This has the benefit that now running ./configure --with-config=user
    && make in the DKMS source tree is a nop while before it gave
    an error.

  * Improve the robustness of the rules by ensuring that they will
    abort if something is not as expected.
2013-04-02 23:10:35 +02:00
Carlos Alberto Lopez Perez
3cd0bf1b52 Reset changelog and update maintainer and vcs fields on debian/control 2013-04-02 02:03:38 +02:00
Carlos Alberto Lopez Perez
b1b5a49c30 Lower DKMS version requirements to Squeeze version.
* Squeeze DKMS version is 2.1.1.2-5
2013-04-02 01:40:05 +02:00
Carlos Alberto Lopez Perez
8050e22266 Fix debian/watch (another time)
* Upstream is not longer using github to distribute tarballs
   * 0.6.1 tarballs were not added (as the time of writing this) to
     https://github.com/zfsonlinux/spl/downloads
 * Update the url to http://zfsonlinux.org/
 * uscan --report-status now says:
   Newest version on remote site is 0.6.1, local version is 0.6.1
   => Package is up to date
2013-04-02 01:36:42 +02:00
Carlos Alberto Lopez Perez
63dc177621 Merge branch 'upstream' 2013-04-02 01:00:20 +02:00
Brian Behlendorf
6385874dbf Tag spl-0.6.1
META file and release log updated.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-25 13:46:47 -07:00
Brian Behlendorf
8636968f9a Provide ${kmodname}-devel-kmod for yum-builddep
In order to ensure that yum-builddep pulls in all the build
requirements a generic ${kmodname}-devel-kmod provides line is
added.  This allows a version of the development headers to be
included without requiring knowledge of the kernel version.

This is important because unlike rpmbuild which does correctly
expand the source rpm spec file, yum-builddep does not.  Without
this generic provides line mock which relies on yum-builddep is
unable to automatically satisfy the dependency.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-25 13:30:22 -07:00
Brian Behlendorf
c14183adca Use 'git describe' for working builds
When building from an arbitrary commit in the git tree it's useful
for the resulting packages to be uniquely identifiable.  Therefore,
the build system has been updated to detect if your compiling in
git tree.

If you are building in a git tree, and there are commits after the
last annotated tag.  Then the <id>-<hash> component of 'git describe'
will be used to overwrite the 'Release:' field in the META file.

The only tricky part is that to ensure the 'make dist' tarball is
built using the correct release.  A dist-hook was added to the top
level make file to rewrite the META file using the correct release.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #195
Issue #111
2013-03-22 15:00:55 -07:00
Richard Yao
feaf1e321d Do not call cond_resched() in spl_slab_reclaim()
Calling cond_resched() after each object is freed and then after each
slab is freed can cause slabs of objects to live for excessive periods
of time following reclaimation. This interferes with the kernel's own
memory management when called from kswapd and can cause direct reclaim
to occur in response to memory pressure that should have been resolved.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
2013-03-21 12:58:44 -07:00
Brian Behlendorf
bef14fbc8c Use requested kernel for dkms builds
The --with-linux and --with-linux-obj options must be specified
as part of the dkms build otherwise the package will be built
against the running kernel.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-20 16:01:29 -07:00
Brian Behlendorf
19e9d8fd61 Remove spl-dkms conflict with spl-kmod
Because the spl-dkms package also provides spl-kmod for the
spl user package yum flags this as a conflict.  To avoid the
problem remove the Conflicts tag from spl-dkms and just rely
on the one in spl-kmod.

  spl-dkms-0.6.0-rc14.fc18.noarch has installed conflicts
    spl-kmod: spl-dkms-0.6.0-rc14.fc18.noarch

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-20 11:33:15 -07:00
Darik Horn
4074820904 Create splat man page
The automake templates have been updated to install this man
page and the existing packaging was updated to include it.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-19 13:47:12 -07:00
Brian Behlendorf
493972c896 Refresh RPM packaging
Refresh the existing RPM packaging to conform to the 'Fedora
Packaging Guidelines'.  This includes adopting the kmods2
packaging standard which is used fod kmods distributed by
rpmfusion for Fedora/RHEL.

  http://fedoraproject.org/wiki/Packaging:Guidelines
  http://rpmfusion.org/Packaging/KernelModules/Kmods2

While the spec files have been entirely rewritten from a
user perspective the only major changes are:

* The Fedora packages now have a build dependency on the
  rpmfusion repositories.  The generic kmod packages also
  have a new dependency on kmodtool-1.22 but it is bundled
  with the source rpm so no additional packages are needed.

* The kernel binary module packages have been renamed from
  spl-modules-* to kmod-spl-* as specificed by kmods2.

* The is now a common kmod-spl-devel-* package in addition
  to the per-kernel devel packages.  The common package
  contains the development headers while the per-kernel
  package contains kernel specific build products.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #222
2013-03-18 15:31:54 -07:00
Carlos Alberto Lopez Perez
74f8c656ca Fix debian/watch
* Only report non-rc versions.
  * uscan --report-status now says:
      Newest version on remote site is 0.5.2
2013-03-16 23:52:23 +01:00
Carlos Alberto Lopez Perez
1e2b2a09ee Delete void spl-dkms.prerm
* There is not need to have empty skeleton {pre,post}{inst,rm} files
  * debhelper will create this at build time automatically when needed

  * debhelper(7)

    Automatic generation of debian install scripts:

       Some debhelper commands will automatically generate parts of debian
       maintainer scripts. If you want these automatically generated things
       included in your existing debian maintainer scripts, then you need to
       add "#DEBHELPER#" to your scripts, in the place the code should be
       added.  "#DEBHELPER#" will be replaced by any auto-generated code when
       you run dh_installdeb.

       If a script does not exist at all and debhelper needs to add something
       to it, then debhelper will create the complete script.
2013-03-16 21:48:27 +01:00
Brian Behlendorf
4a6d8d2c3e Change spl-kmod-devel install path
Install the common spl kernel development headers under
/usr/src/spl-<version>/ rather than in a kernel specific
directory.  The kernel specific build products such as
spl_config.h and Modules.symvers are left installed under
/usr/src/spl-<version>/<kernel>.

This was done to be consistent with where dkms expects
kernel module source to be packaged.  It also allows for
a common spl-kmod-devel package which includes the headers,
and per-kernel spl-kmod-devel-<kernel> packages.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 12:01:05 -07:00
Brian Behlendorf
5c30c47a45 Merge branch 'linux-3.9'
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #221
2013-03-14 10:43:51 -07:00
Richard Yao
4a31e5aa9b Linux 3.9 compat: Switch to hlist_for_each{,_rcu}
torvalds/linux@b67bfe0d42 changed
hlist_for_each_entry{,_rcu} to take 3 arguments instead of 4. We handle
this by switching to hlist_for_each{,_rcu}, which works across all
supported kernels.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:34 -07:00
Richard Yao
8274ed5988 Drop support for 3 argument version of set_fs_pwd
This was a suggestion that Brian Behlendorf made when reviewing an early
pull request for Linux 3.9 support. This commit was made intentionally
easy to revert should we ever have a reason to reintroduce support for
older kernels.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:31 -07:00
Richard Yao
a54718cfe0 Linux 3.9 compat: set_fs_root takes const struct path *
torvalds/linux@dcf787f391 enforces
const-correctness in passing struct path *.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:29 -07:00
Richard Yao
2a305c34c8 Linux 3.9 compat: vfs_getattr takes two arguments
The function prototype of vfs_getattr previoulsy took struct vfsmount *
and struct dentry * as arguments. These would always be defined together
in a struct path *.

torvalds/linux@3dadecce20 modified
vfs_getattr to take struct path * is taken as an argument instead.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:26 -07:00
Richard Yao
bc90df6688 Linux 3.9 compat: Do not depend on f_vfsmnt
torvalds/linux@182be68478 removed the
preprocessor definition for f_vfsmnt. The ability to access the
mountpoint via ->f_path.mnt has been stable for a long time, so we
switch to that.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:23 -07:00
Richard Yao
10087fe1fa Linux 3.9 compat: Include linux/sched/rt.h
Linux 3.9 reorganized sched.h, splitting it into numerous files.
torvalds/linux@8bd75c77b7 moved MAX_PRIO
and MAX_RT_PRIO to linux/sched/rt.h.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-14 10:43:19 -07:00
Brian Behlendorf
ea5c4389fb Merge branch 'build-system' 2013-03-06 15:49:57 -08:00
Ned Bass
3d6af2dd6d Refresh links to web site
Update links to refer to the official ZFS on Linux website instead of
@behlendorf's personal fork on github.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-04 19:09:34 -08:00
Brian Behlendorf
5f0a4b0847 Remove ARCH packaging
The kernel modules are now available in the Arch User Repository
(AUR) via zfs.  Since their packaging is maintained and superior
to ours it is being removed from the tree.

  https://wiki.archlinux.org/index.php/ZFS

Now that various distributions are picking up the packages we
should eventually be able to remove most of this infrastructure.
Packaging belongs with the distributions not upstream.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-04 19:09:34 -08:00
Carlos Alberto Lopez Perez
6a95cbd3a9 Improve wording for package descriptions
* This matchs the description of the ITP
2013-03-02 23:36:30 +01:00
Carlos Alberto Lopez Perez
b4ff452406 Remove 0001-Revert-Remove-etc-hostid-missing-warning.patch patch
* The previous commit (cfeaec5) ensured that /etc/hostid will exist
   on the system after the package is installed.

 * Therefore remove this patch that warns about the non existence of
   such file.
2013-03-02 22:50:43 +01:00
Carlos Alberto Lopez Perez
cfeaec5433 Fix the way we handle /etc/hostid
* /etc/hostid should not be a configuration file.
    This is by policy:
    E.2 Fully-featured maintainer script configuration handling
    http://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html

    This kind of site-specific configuration files should not be added
    to the package files.
    You don't want this file to be removed when you purge the package.

  * Handle the creation on /etc/hostid on zfs-dkms.postinst

    * Check if /etc/hostid exists and is at least 4 bytes size.

      * If it isn't, then write the value returned by "hostid" on /etc/hostid
        taking care of endianness

    * Note that on zfs-dkms.postinst #DEBHELPER# is after this check for
      /etc/hostid. Therefore the stabilization of /etc/hostid will be
      done before the spl mode is built by DKMS.
2013-03-02 22:49:05 +01:00
Brian Behlendorf
d1142fbffe Remove custom install-data-local for headers
Rather than use a custom install target it is cleaner to define
a 'kerneldir' and set 'kernel_HEADERS' appropriately.  This
allows us to leverage the standing configure install support.

Additionally, I took this opertunity add the missing make files
to the include subdirectories.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-01 16:55:06 -08:00
Brian Behlendorf
0298f3d67f Add KMODDIR to install target
Provide a mechanism to control the directory name the modules
are installed in.  The kernel privdes INSTALL_MOD_DIR for
this but it was hardcoded to be 'addon/spl'.

Add a KMODDIR variable which can be passed to 'make install'
to override the default directory name.  While we're here
change the default from 'addon/spl' to 'extra' which is the
kernel.org default.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-01 16:55:06 -08:00
Brian Behlendorf
fea77534f0 Fix spl_config.h install permissions
The default permissions used by install are 755.  Since this
file isn't executable 644 is more appropriate.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-01 16:55:06 -08:00
Brian Behlendorf
8adf71e9b0 Remove INSTALL
The generic INSTALL instructions can be safely dropped.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-03-01 16:55:00 -08:00
Carlos Alberto Lopez Perez
16b165ccad Explicity select what is copied inside the DKMS source tree
* We use the variable DKMSFILES to explicity select wich files
   or directories are copied inside the DKMS source tree.

 * Once copied. We rewrite configure.ac with awk to remove the
   userland/misc components and only keep the kernel stuff that
   is needed by DKMS.

   * The awk lines deletes from inside AC_CONFIG_FILES([]) of configure.ac
     everything except:
	(Makefile$|include/|module/|*.release$|dkms.conf$)

   * Then we run ./autogen.sh to generate the configure scripts
     inside the DKMS source tree

 * This allows us to ship a clean DKMS source tree with *only* the kernel
   components and free from the userland/misc ones (ex: splat)

    * Prevents manual build on the DKMS source tree.
2013-02-20 23:06:48 +01:00
Carlos Alberto Lopez Perez
cc2a392625 Use dh --with dkms 2013-02-20 21:57:26 +01:00
Carlos Alberto Lopez Perez
489c31a0b2 Use $(MAKE) instead of make:
* This allows the environment variables (MAKEFLAGS) and arguments
   to be correctly inherited by the submakes.
2013-02-20 21:48:53 +01:00
Brian Behlendorf
4bf3909e51 Disable automatic log dumping
Long ago infrastructure was added to the SPL to keep an internal
debug log of the last few seconds of activity.  This was helpful
during the early development, but these days it is no longer
needed.  I haven't had to resort to this debug buffer to resolve
an issue for several years now.

Today better more generic tools like systemtap and ftrace have
evolved to the point where they can be used for this purpose.
Along with the stack trace dumped to the system console, and in
rare cases a crash dump we almost always have the debug we need.

Therefore, I'm disabling the code which automatically dumps
this log to disk during an assertion except for the case where
spl_debug_panic_on_bug is set (disabled by default).

This should be viewed as a first step towards either.

  a) Retiring this infrastructure and complexity entirely, or
  b) Integrating this logging more properly with ftrace.

As part of this change I'm also removing from the packages the
undocumented spl utility which is used to decode the binary logs.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-02-05 16:13:27 -08:00
Richard Yao
a0625691b3 Fix HAVE_MUTEX_OWNER_TASK_STRUCT autotools check on PPC64
The HAVE_MUTEX_OWNER_TASK_STRUCT fails on PPC64 with the following
error:

error: 'current' undeclared (first use in this function)

We include linux/sched.h to ensure that current is available.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-02-05 15:36:03 -08:00
Brian Behlendorf
dd3678fc29 Fix atomic64_* autoconf checks
The SPL_AC_ATOMIC_SPINLOCK, SPL_AC_TYPE_ATOMIC64_CMPXCHG, and
SPL_AC_TYPE_ATOMIC64_XCHG were all directly including the
'asm/atomic.h' header.  As of Linux 3.4 this header was removed
which results in a build failure.

The right thing to do is include 'linux/atomic.h' however we
can't safely do this because it doesn't exist in 2.6.26 kernels.
Therefore, we include 'linux/fs.h' which in turn includes the
correct atomic header regardless of the kernel version.

When these incorrect APIs are used in ZFS the following build
failure results.

  arc.c:791:80: warning: '__ret' may be used uninitialized
  in this function [-Wuninitialized]
  arc.c:791:1875: error: call to '__cmpxchg_wrong_size'
  declared with attribute error: Bad argument size for cmpxchg

Since this is all Linux 2.6.24 compatibility code there's
an argument to be made that it should be removed because
kernels this old are not supported.  However, because we're
so close to a release I'm going to leave it in place for now.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes zfsonlinux/zfs#814
Closes zfsonlinux/zfs#1254
2013-02-05 10:05:46 -08:00
Darik Horn
3d1c222abf PPA 0.6.0.97-0ubuntu1 release. (rc14)
Bump the version number to reset the builders.

Closes: zfsonlinux/zfs#1258
2013-02-03 22:10:56 -06:00
Darik Horn
c49e59e369 PPA 0.6.0.96-0ubuntu1 release. (rc14) 2013-02-02 15:13:08 -06:00
Darik Horn
af7fcfdbfd Merge branch 'upstream' 2013-02-02 15:11:39 -06:00
Brian Behlendorf
869f30f1ae SPL 0.6.0-rc14 2013-02-01 11:24:54 -08:00
Brian Behlendorf
6ef94aa67a Fix tsd_get/set() race with tsd_exit/destroy()
The tsd_exit() and tsd_destroy() functions remove entries from
hash bins without taking the hash bin lock.  They do take the
table lock, but tsd_get() and tsd_set() only take the hash bin
lock to allow for maximum concurency.

The result is that while tsd_get() and tsd_set() are traversing
the hash bin list it can be modified by another thread in which
happens to hash to the same value.  To avoid this add the needed
locking to tsd_exit() and tsd_destroy().

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #174
2013-01-31 13:54:59 -08:00
Brian Behlendorf
de081a2ab4 Check for KALLSYMS
Check at ./configure time that the kernel was built with kallsyms
support.  If the kernel doesn't have CONFIG_KALLSYMS defined the
modules will still compile cleanly but will not be loadable.  So
we really want to catch this early during ./configure.  Note that
we do not require CONFIG_KALLSYMS_ALL but it may be safely defined.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #6
2013-01-29 16:35:23 -08:00