Commit Graph

1386 Commits

Author SHA1 Message Date
Brian Behlendorf
ceb3872825 Fix KMC_OFFSLAB type caches
Because spl_slab_size() was always returning -ENOSPC for caches of
type KMC_OFFSLAB the cache could never be created.  Additionally
the slab size is rounded up to a page which is what kv_alloc()
expects.  The kv_alloc() code will minimally allocate a page,
in the KMC_OFFSLAB case this could be reduced.

The basic regression tests kmem:slab_small, kmem:slab_large,
and kmem:slab_align regression were updated to test KMC_OFFSLAB.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ying Zhu <casualfisher@gmail.com>
Closes #266
2013-07-30 15:39:23 -07:00
Brian Behlendorf
b9b3715346 Return -1 for generic kmem cache shrinker
It has been observed that it's possible to get in a state where
shrink_slabs() will spin repeated invoking the generic kmem cache
shrinker.  It fails to detect it's not making forward progress
reclaiming from the cache and doesn't give up.  To ensure this
never occurs we unconditionally return -1 after reclaiming what
we can.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <ryao@gentoo.org>
Closes zfsonlinux/zfs#1276
Closes zfsonlinux/zfs#1598
Closes zfsonlinux/zfs#1432
2013-07-30 15:33:24 -07:00
Aron Xu
9d447e8726 Add upstream patch to fix delay() 2013-07-29 17:33:37 +08:00
Aron Xu
819565fc23 Update changelog 2013-07-29 16:06:10 +08:00
Aron Xu
88bead7cc9 Add linux 3.10 compatibility patch from upstream. (Closes: #717565) 2013-07-29 16:02:53 +08:00
James H
c47efbc7fd Modify gethrestime to use current_kernel_time()
This allows us to get nanosecond resolution. It also means
we use the same time source as utimensat(now) etc.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #255
2013-07-15 09:17:19 -07:00
Aron Xu
1036314515 Add license info for scripts/kmodtool 2013-07-15 01:46:57 +08:00
Aron Xu
e8007a1d07 Add README.Source for binary module package generation 2013-07-14 04:14:14 +08:00
Aron Xu
9436c4b578 Allow setting KVERS 2013-07-14 02:38:05 +08:00
Aron Xu
8779fc7aa6 Use correct debian revison for pkg version 2013-07-13 04:39:39 +08:00
Aron Xu
afe81338fd Add essential maintainer scripts 2013-07-13 03:48:21 +08:00
Aron Xu
a1291bf008 Recommend spl-moudles first 2013-07-13 03:35:36 +08:00
Aron Xu
1b3abdac4a Add kernel package dependency 2013-07-13 03:35:06 +08:00
Aron Xu
51caf98506 Remove redundant destdir parameter 2013-07-13 03:26:50 +08:00
Aron Xu
833595243c Remove redundant ARCH 2013-07-13 03:26:50 +08:00
Aron Xu
01d50ac880 Add KVERS 2013-07-13 03:14:40 +08:00
Aron Xu
c168c73c0a Restore control file on clean 2013-07-13 02:50:07 +08:00
Aron Xu
c3ea64f7f6 Replace dh_clean -k with dh_prep 2013-07-13 02:25:29 +08:00
Turbo Fredriksson
2f30af71fb Retrieve the arch from 'dpkg', don't hardcode it to 'amd64'.
+ Also install modules to '/lib/modules/<VERSION>-<ARCH>/'.
2013-07-13 02:20:38 +08:00
Turbo Fredriksson
05d9813864 * linux-headers-_KVERS_ is a virtual package. Instead, depend on
linux-headers-_KVERS_-common AND linux-headers-_KVERS_-amd64.
* find kernel source in $KSRC and kernel objects in $KOBJ.
2013-07-13 02:20:38 +08:00
Aron Xu
3d3fd67f31 * Build udebs and optionally modules package(s) - both .deb and .udeb.
* The spl-modules-udeb must depend on zlib-modules-udeb for zlib_deflate module.
* Files for the 'normal' module to install in the correct place.

Conflicts:
	debian/changelog
2013-07-13 02:20:29 +08:00
Brian Behlendorf
f7f344f1b0 Improve build instructions
Make it clear that when building directly from the Git tree
the configure script must be manually generated by running the
autogen.sh script.  This requires that the GNU autotools packages
be installed for your distribution.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes zfsonlinux/zfs#1448
2013-07-11 16:12:18 -07:00
Brian Behlendorf
ab4e74cc38 Fix bogus kmem leak warning
Commit 5c7a036 correctly relocated the creation of a taskq
and the registraction of the kmem_cache_shrinker after the
initialization of the kmem tracking code.  However, the
cleanup of these structures was not done before the leak
checks in spl_kmem_fini().  This resulted in an incorrect
'kmem leaked' warning even though there was no actual leak.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes zfsonlinux/zfs#1569
2013-07-10 15:08:22 -07:00
Brian Behlendorf
b1424adda5 Fix --enable-debug-kmem-tracking option
This code has gotten something stale and no longer builds cleanly
against modern kernels.  The two issues addressed here are as
follows:

* The hlist_*_rcu interfaces in the kernel have been relatively
  unstable.  Since this isn't performance critical code just use
  the long standing hlist_* variants.

* In older kernels the hash_ptr() function takes a 'void *' but
  in newer kernels it expects a 'const void *'.  To silence the
  compiler warnings about this explicitly cast it to a 'void *'.
  The memset function is a similar case but it always expects
  a 'void *'.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #256
2013-07-09 09:23:54 -07:00
Brian Behlendorf
5bc941f3cd Merge branch 'linux-3.10'
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #257
2013-07-08 15:27:32 -07:00
Richard Yao
f2a745c41d Linux 3.10 compat: Do not rely on struct proc_dir_entry definition
Linux kernel commit torvalds/linux#59d8053f moved the definition of
struct proc_dir_entry from include/linux/proc_fs.h to the private
header fs/proc/internal.h. The SPL relied on that to map Solaris'
kstat to entries in /proc/spl/kstat.

Since the proc_dir_entry structure is now private the only safe
thing to do is wrap the opaque proc handle with our own structure.
This actually ends up simplify the code and is good because it
moves us away from depending on implementation details of /proc.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #257
2013-07-08 15:25:18 -07:00
Yuxuan Shui
79a7ab2581 Linux 3.10 compat: add missing include of linux/slab.h
Linux kernel commit torvalds/linux@0d01ff2 changes some
includes we were depending on through linux/proc_fs.h.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #257
2013-07-08 15:21:28 -07:00
Yuxuan Shui
1ddf9722dc Linux 3.10 compat: replace PDE()->data with PDE_DATA()
Linux kernel commit torvalds/linux@d9dda78b renamed PDE() to
PDE_DATA().  To handle this detect the prefered interface
and define a PDE_DATA() wrapper for consistency.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #257
2013-07-08 15:14:21 -07:00
Yuxuan Shui
c02ab72fb9 Linux 3.10 compat: struct vmalloc_info moved
Linux kernel commmit torvalds/linux@db3808c1 moved the
vmalloc_info structure from a private to a public header.
Now that it's available for kernel modules use it.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #257
2013-07-08 15:09:20 -07:00
Aron Xu
a2d06baac8 Release to experimental 2013-07-04 15:59:18 +08:00
Aron Xu
3e9e3c0311 Add lintian overrides 2013-07-04 15:42:44 +08:00
Aron Xu
771c5fcdb9 Correct Closes entry 2013-07-01 22:06:17 +08:00
Aron Xu
b70ebad3aa Correct bracket 2013-07-01 22:05:48 +08:00
Aron Xu
aad7edc3da Be more detailed for GPL-2+ 2013-06-29 01:44:43 +08:00
Aron Xu
1944bb37ed Correct upstream URL. 2013-06-29 01:35:50 +08:00
Nathaniel Clark
485b471eb2 Add --buildroot option to kmod build
This allows rpmbuild to define buildroot to point to where kernel
data is located.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #242
2013-06-21 15:46:16 -07:00
Matthew Thode
991857cac5 Copy spl.release.in to kernel dir
Required when compiling ZFS in the kernel.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #253
2013-06-21 15:40:04 -07:00
Brian Behlendorf
ab0fdfef52 Fix ASSERT0 and VERIFY0 macro typo
Ensure the value is cast to a 'long long' for printing purposes.  The
expectation is that ASSERT0/VERIFY0 are mostly used for validating
return values and thus may commonly be negative.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #246
2013-06-21 15:38:46 -07:00
Brian Behlendorf
1c6d149feb Add ASSERT0 and VERIFY0 macros
The Illumos code introduced the ASSERT0 and VERIFY0 macros which
are to be used instead of ASSERT3S(x, ==, 0) and VERIFY3S(x, ==, 0).

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Signed-off-by: Madhav Suresh <madhav.suresh@delphix.com>
Closes #246
2013-06-18 11:41:55 -07:00
Tim Chase
5c7a0369e2 Fix --enable-debug-kmem-tracking option
Re-order initialization in spl_kmem_init to allow for kmem tracing
to work.  The spl_kmem_init function calls taskq_create prior to
initializing the tracking (calling spl_kmem_init_tracking).  Since
taskq_create uses kmem_alloc, NULL dereferences occur because the
global kmem_list hasn't had its next & prev pointers initialized yet.

This commit moves the calls to spl_kmem_init_tracking earlier in the
spl_kmem_init function in order that the subsequent kmem_alloc calls
(by taskq_create) work properly.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #243
2013-06-18 11:40:33 -07:00
Aron Xu
7f4ae0c7eb Use /usr/bin/printf directly
We need printf from coreutils to make sure it supports byte format,
however there are shells that have which a builtin command, returning
something not as expected. There is no problem to use the path directly
since coreutils is the Priority:required so we can assume its presence.
2013-05-31 03:41:45 +08:00
Aron Xu
61716cbcb7 Various small improvements to d/control d/compat
* Std-ver: 3.9.4
 * Add Uploaders field.
 * Increase compatible level of dh to 9, to take the advantage of
   hardening, etc.
 * Enhance the Recommends version of spl.
 * Improve long descriptions.
2013-05-31 03:13:22 +08:00
Brian Behlendorf
99c452bbba Fix taskq_wait_id()
The existing taskq_wait_id() function can incorrectly block
indefinitely.  Reimplement it more simply using wait_event()
in a similar fashion to taskq_wait_all().

This flaw was uncovered in the context of moving vn_rdwr() to
a taskq.  Previously taskq_wait_id() had no consumers outside
the SPLAT task framework which is why the issue went unnoticed.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-05-03 14:32:29 -07:00
Brian Behlendorf
ab59be7bc7 Fix delay()
Somewhat amazingly it went unnoticed that the delay() function
doesn't actually cause the task to block.  Since the task state
is never changed from TASK_RUNNING before schedule_timeout() the
scheduler allows to task to continue running without any delay.
Using schedule_timeout_interruptible() resolves the issue by
correctly setting TASK_UNINTERRUPTIBLE.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-05-01 16:35:47 -07:00
Brian Behlendorf
f6437b60c2 Add msec/usec/nsec to tick convertors
Add wrappers for the Solaris MSEC_TO_TICK, USEC_TO_TICK, and
NSEC_TO_TICK conversion functions.  They are mapped directly to
their Linux counterparts with the exception of NSEC_TO_TICK
can cannot use usecs_to_jiffies() because it is not exported
by the kernel.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2013-05-01 12:07:56 -07:00
Carlos Alberto Lopez Perez
5af840bfb1 Forget about .pc files 2013-05-01 17:01:25 +02:00
Turbo Fredriksson
8bbda8df3e Ignore *.{deb,rpm,tar.gz} files in the top directory.
These are build products and should be ignored.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Turbo Fredriksson <turbo@bayour.com>
Issue zfsonlinux/zfs#1402
2013-04-24 16:18:14 -07:00
Turbo Fredriksson
16253cff43 Add --bump=0 to alien
Preserve the release field when creating Debian packages.  The
--keep-version option was not used because it results in a failure
when the git '<commit>_<hash>' syntax is used for the release.
The '_' is a valid character for RPM packages but not for DEBs.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Turbo Fredriksson <turbo@bayour.com>
Issue zfsonlinux/zfs#1402
Issue zfsonlinux/zfs#928
2013-04-24 16:18:11 -07:00
Turbo Fredriksson
2c21370746 Support .nogitrelease file
When building a custom release in a git tree provide the ability
to prevent the release field from being overwritten by the
`git describe` output.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfsonlinux/zfs#1402
2013-04-24 16:18:03 -07:00
Etienne Dechamps
c1b20ce320 Fix various generic kmod RPM spec issues.
There are a number of issues with the generic kmod RPM spec in its
current state:
 - The "%{__id_u}" macro seems to not be available on some systems (e.g.
   Debian squeeze). It appears it has been deprecated. Use "${__id} -u"
   instead.
 - The way the "--with-linux=" configure option is generated in the
   non-RHEL/Fedora case is completely wrong with various newline and
   escaping issues (also, $kernel_version is not available in the
   generator context).

The second issue made the generator shell snippet (almost) silently
fail, which under specific circumstances can result in broken builds
against the wrong kernel sources.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #231
2013-04-24 16:17:57 -07:00