]> git.proxmox.com Git - mirror_spl-debian.git/blame - ChangeLog
Minor spec file cleanup for RHEL6 package dependency.
[mirror_spl-debian.git] / ChangeLog
CommitLineData
de7cc348
BB
12010-05-17 Brian Behlendorf <behlendorf1@llnl.gov>
2
3 * : Tag spl-0.4.9
4
5 * : Build system improvements:
6 - Added support for the 'make -s' silent build option.
7 - Allow spl_config.h to be included by dependant packages.
8
9 * AUTHORS, COPYING, DISCLAIMER, and INSTALL: Updated.
10
11 * *.c, *.h, *.sh, AUTHORS, COPYING, DISCLAIMER, and INSTALL:
12 Added standard header to source files which includes the copyright,
13 license, and author information. Additionally, updated the listed
14 top level files to the latest versions.
15
16 * include/sys/processor.h, include/sys/systm.h, include/sys/types.h:
17 Added 3 missing typedefs processorid_t, pc_t, and index_t.
18
19 * include/sys/console.h: Added support for console_* functions().
20
21 * module/spl/spl-time.c: Updated gethrtime() to use the function
22 do_posix_clock_monotonic_gettime() as described in the comment.
23
24 * module/spl/spl-condvar.c: Added cv_wait_interruptible() function
25 as an extension to the existing condition variable ABI to enable
26 sleeping threads a way to cleanly handle signals in the kernel.
27
28 * module/spl/spl-debug.c: Dump log from current process as required.
29
30 * module/spl/spl-taskq.c: Assume TQ_SLEEP in taskq_dispatch() if
31 the caller does not specify, this is the Solaris default.
32
33 * module/spl/spl-vnode.c: Extend the vn_rdwr() implementation to
34 correctly handle the FAPPEND option.
35
36 * module/spl/spl-generic.c, module/spl/spl-vnode.c: Update
37 vn_set_pwd() to allow a kernal address as filename. This turns
38 out to be critical because spl_setup()->The vn_set_pwd("/") which
39 is called at module load time was failing with -EFAULT.
40
41 * include/sys/rwlock.h: Disable rw_tryupgrade() for kernels built
42 without CONFIG_RWSEM_GENERIC_SPINLOCK defined. The existing
43 implementation is not safe in this case and needs to be replaced
44 with a correct native per-arch implementation.
45
46 * module/spl/spl-kmem.c: Reduce maximum kmem based slab size.
47 Allowing MAX_ORDER-1 sized memory allocations while the system
48 is low on memory has been observed to result in deadlocks. Callers
49 should not be using the slab in this way but we should still handle
50 the case more cleanly.
51
c5c3d402
BB
522010-03-11 Brian Behlendorf <behlendorf1@llnl.gov>
53
54 * : Tag spl-0.4.8
55
56 * : Build system improvements:
57 - Remove Module.markers and Module.symver{s} in clean target.
58 - Improved kernel source detection when none specified.
59 - Fix RPM definitions for the unknown distro/installation.
60
61 * config/spl-build.m4: Linux 2.6.32 compat, SPL_AC_5ARGS_PROC_HANDLER
62 macro added to handle updated proc_handler () API.
63
64 * module/spl/spl-err.c: Fix panic() string, which was being used as a
65 format string, instead of an already-formatted string.
66
67 * /module/spl/spl-taskq.c: Optimize lowest outstanding taskqid
68 calculation in taskq_lowest_id(). The motivation for this change
69 was that I was observing as much as 10% of the total CPU time go
70 to waiting on the tq->tq_lock when the pending list was long.
71
72 * module/spl/spl-kmem.c: Strip __GFP_ZERO from kmalloc it is not
73 available for older kernels.
74
75 * module/spl/spl-proc.c: Add skc_flags and full header to
76 /proc/spl/kmem/slab
77
78 * module/spl/spl-generic.c: Correctly handle division on 32-bit RHEL5
79 systems by returning dividend.
80
81 * include/sys/rwlock.h: When using x86 specific rwsem correctly
82 intepret rwsem->count. Additionally check for changed guard macro
83 in 2.6.28+ for rwsem implementation
84
85 * module/splat/splat-vnode.c, module/splat/splat-kmem.c,
86 module/splat/splat-taskq.c: Several new tests were added to the
87 test suite and various bug fixes.
88
89 * include/asm/atomic_compat.h: Atomic64 compatibility for 32-bit
90 systems without kernel support.
91
92 * .gitignore: Added .gitignore files.
93
958dc9e7
BB
942009-11-20 Brian Behlendorf <behlendorf1@llnl.gov>
95
96 * : Tag spl-0.4.7
97
98 * config/spl-build.m4: Linux 2.6.31 compat, SPL_AC_2ARGS_SET_FS_PWD
99 macro updated to explicitly include linux/fs_struct.h which was
100 dropped from linux/sched.h.
101
102 * include/linux/mm_compat.h: Linux 2.6.31 compat, use the macros
103 min_wmark_pages, low_wmark_pages, and high_wmark_pages which were
104 introduced. For older kernels a compability macro is used.
105
106 * include/sys/kmem.h: Linux 2.6.31 compat, the __GFP_NOFAIL flag
107 should no longer be used and it may disappear from the kernel at any
108 time. To handle this I have simply added *_nofail wrappers in the
109 kmem implementation which perform the retry for non-atomic allocations.
110
111 * module/spl/spl-kmem.c: Linux 2.6.31 compat, kmem cache alignment
112 fixes and cleanup. Always perform allocations for the kmem cache
113 using __get_free_pages() or __vmalloc() to ensure the returned
114 memory is page aligned. Also introduce helper functions which use
115 P2ROUNDUP_TYPE instead of P2ROUNDUP force all types to be explicit.
116
117 * include/sys/mutex.h: Add mutex_enter_nested() as wrapper for
118 mutex_lock_nested() to permit integration with the lock checker.
119
120 * include/sys/mutex.h: Always use the generic mutex_destroy().
121
122 * Makefile.am: Ensure *.order and *.markers build products are
123 removed by distclean rule.
124
f97cd5fd
BB
1252009-11-02 Brian Behlendorf <behlendorf1@llnl.gov>
126
127 * : Tag spl-0.4.6
128
129 * config/spl-build.m4: Cleanup --enable-debug-* configure options.
130 --enable-debug=<default no> generic debug support.
131 --enable-debug-kmem=<default yes> basic kmem and slab accounting.
132 --enable-debug-kmem-tracking=<default no> detailed kmem tracking.
133 --enable-debug-kstat removed option support always enabled.
134 --enable-debug-callb removed option which never did anything.
135
136 * module/spl/spl-atomic.c: Reimplemented atomic functions by
137 layering them on top of the Linux atomic functions. This improves
138 performance by removing the need for a global spinlock.
139
140 * module/spl/spl-debug.c: Rebase cmn_err on vcmn_err. Handle the
141 case where the message contains a leading ! which means only send
142 it to syslog. And suppress warnings for messages which do not end
143 in a '\n'.
144
145 * module/splat/splat-ctl.c: Update to use kobject_set_name() for
146 increased portability.
147
148 * module/spl/spl-generic.c: Set cwd to '/' for the task during
149 module load for SPL dependent modules. Under Solaris this is
150 the expected behavior, on a Linux system your cwd remains set
151 to whatever the tasks cwd was when loading a module.
152
153 * module/spl/spl-mutex.c: Reimplemented mutexs for improved
154 performance and cleaner integration with the Linux kernels built
155 in lock analyzer. As of 2.6.29 based kernels adaptive mutexs
156 are supported, for these newer kernels task_curr() does not need
157 to be exported. Finally, DEBUG_MUTEX support was dropped in
158 favor of more detailed kernel profiling which is now available.
159
160 * module/spl/spl-rwlock.c: Reimplemented rwlocks for improved
161 performance and cleaner integration with the Linux kernels built
162 in lock analyzer. Additionally, the rwlock regression tests were
163 improved to help validate correctness.
164
165 * spl-modules.spec.in: Various spec file tweaks for the supported
166 distros: RHEL5, RHEL6, SLES10, SLES11, Chaos4, Fedora 11.
167
68ada11e
BB
1682009-08-04 Brian Behlendorf <behlendorf1@llnl.gov>
169
170 * : Tag spl-0.4.5
171
172 * FC11 and SLES11 support: This includes all compatibility changes
173 to support 2.6.29 based kernels and the required build system
174 improvements.
175 * module/spl/spl-module.c: Register a basic compat ioctl handler
176 for 32-bit user vs 64-bit kernel compatibility. This is the default
177 build environment for all 64-bit SLES systems.
178 * config/spl-build.m4: Check arch/default path when detecting kernel
179 objects under SLES. We still preferentially use arch/arch if
180 available but if that fails it is acceptable to use default.
181 * module/spl/spl-vnode.: Use HAVE_PATH_IN_NAMEIDATA compat macros
182 for maximum kernel compatibility.
183 * config/spl-build.m4: Remove LINUXINCLUDE from autoconf wrapper.
184 This breaks the 2.6.28+ kernels build system, all kernel build systems
185 at least post 2.6.16 will set this properly so we should not.
186 * include/sys/vmsystm.h, module/spl/spl-kmem.c: Perferentially use the
187 global_page_state() API when your kernel supports the required enums.
188 * include/sys/debug.h: Add ASSERTV macro to simplify removing
189 variables (the V in ASSERTV) which are only used in ASSERT().
190 * include/sys/debug.h: Disable stack overflow checking by default
191 when build with --enable-debug, modern kernels now provide this.
192 * patches/fc11-spl-export-symbols.patch: Recommended missing symbols
193 patch for FC11. This is not required for correct functionality but
194 it is recommended for individuals who are already patching the kernel.
195
196 * Additional Solaris API emulation:
197 * include/sys/taskq.h: Add basic taskq support for the flag
198 TASKQ_THREADS_CPU_PCT which is used to scale the number of threads
199 based on the number of online CPUs.
200 * include/sys/file.hi, module/spl/spl-generic.c: Add support for
201 fake ioctls which originate from the kernel instead of user space.
202 * include/sys/acl.h: Add ACE_ALL_PERMS ACL definition.
203 * include/sys/cred.h, module/splat/splat-cred.c: Add basic credential
204 support and splat regression tests.
205
206 * Bug fixes:
207 * include/sys/isa_defs.h: Add more endianess paranoia.
208 * module/spl/spl-time.c: Integer overflow after ~164 days.
209 * include/sys/debug.h: NULL dereference by tcd_for_each().
210 * module/splat/splat-kmem.c: Allow kmem or vmem based slabs for
211 slab_lock and slab_overcommit tests. This may still be an issue on
212 32-bit systems due to the small virtual address space.
213 * module/spl/spl-module.c: Positive Solaris ioctl return codes are
214 need to be negated for use by libc to ensure errno is set correctly.
215
aaad2f72 2162009-07-02 Brian Behlendorf <behlendorf1@llnl.gov>
762b96f6
BB
217
218 * : Tag spl-0.4.4
219
aaad2f72 220 * : Generic distro friendly build system / packaging improvements
68ada11e 221 for rpm based distros including CHAOS, RHEL, Fedora, and SLES.
aaad2f72
BB
222
223 spl-<version>.src.rpm
224 - Fully rebuildable source rpm for utils.
225 spl-modules-<version>.src.rpm
226 - Fully rebuildable source rpm for kernel modules.
227
228 spl-<version>.<arch>.rpm
229 - Binary rpm for utils. The utils in this package are compatible
230 with all spl-module rpms of the same version.
231
232 spl-modules-<verion>-<kernel>.arch.rpm
233 - Binary rpm containing the kernel modules for a specific kernel build.
234 The package name contains the kernel version and you should have one
235 of these packages installed to match every kernel on your system.
236 spl-modules-devel-<verion>-<kernel>.arch.rpm
237 - Binary rpm containing development header and module symbols needed
238 for building additional kernel modules which are dependent on the
239 spl module.
240
762b96f6
BB
241 * : Added SLES10 support. This includes all compatibility
242 changes to support 2.6.16 based kernels and the required
243 build system improvements.
244
245 * : Build System changes for SLES10:
246 - Exclude -obj when detecting installed kernel source.
247 - Detect -obj directory for out of tree kernel builds.
248 - Allow kernel build system to set CC to ensure -m64 is set properly.
249 This is an issue on 64-bit SLES systems which by default always
250 build 32-bit binaries (unlike RHEL/Fedora which default to 64-bit)
251
252 * : Configure Checks added for SLES10:
253 - div64_64() renamed to div64_u64() as of 2.6.26.
254 - global_page_state() fuction was introduced in 2.6.18 kernels.
255 The earlier 2.6.16 based SLES10 must not try and use it,
256 thankfully get_zone_counts() is still available.
257 - monotonic_clock() is unavailable __gethrtime() must perform the
258 HZ division as an 'unsigned long long' because the SPL only
259 implements __udivdi3(), and not __divdi3() for 'long long'
260 division on 32-bit arches.
261 - mutex_lock_nested() was introduced as part of the mutex
262 validator in 2.6.18, when it is unavailable it is safe to
263 fallback to using a plain mutex_lock().
264 - SLES specific API change to vfs_unlink() and vfs_rename() which
265 added a 'struct vfsmount *' argument. This was for something
266 called the linux-security-module, but it appears that it was
267 never adopted upstream.
268 - spl_device_create() correctly mapped to class_device_create()
269 for 2.6.13 to 2.6.17 based kernels, this is the preferred API.
270 - Prior to 2.6.17 there were no *_pgdat helper functions in
271 mm/mmzone.c. Instead for_each_zone() operated directly on
272 pgdat_list which may or may not have been exported depending on
273 how your kernel was compiled. A configure check was added to
274 determine if you have the helpers or not, and if the needed
275 symbols are exported. If they are not exported then they are
276 dynamically aquired at runtime by kallsyms_lookup_name().
277
278 * : Packaging changes for SLES10
279 - Properly honor --prefix in build system and rpm spec file.
280 - Add '--define require_kdir' to spec file to support building
281 rpms against kernel sources installed in non-default locations.
282 - Add '--define require_kobj' to spec file to support building
283 rpms against kernel object installed in non-default locations.
284 - Stop suppressing errors in autogen.sh script.
285 - Improved logic to detect missing kernel objects when they are
286 not located with the source. This is the common case for SLES
287 as well as in-tree chaos kernel builds and is done to simply
288 support for multiple arches.
289 - Moved spl-devel build products to /usr/src/spl-<version>, a
290 spl symlink is created to reference the last installed version.
291 - Allow checking for exported symbols in both Module.symvers
292 and Module.symvers. My stock SLES kernel ships an objects
293 directory with Module.symvers, yet produces a Module.symvers
294 in the local build directory.
295
296 * : Added powerpc64 support.
297 - Enable builds for powerpc64 ISA type.
298 - Add DIV_ROUND_UP and roundup macros if unavailable.
299 - Cast 64-bit values for %lld format string to (long long) to
300 quiet compile warning.
301
302 * module/splat/splat-ctl.c: Proper ioctl() 32/64-bit binary
303 compatibility. We need to ensure the ioctl data itself is always
304 packed the same for 32/64-bit binaries. Additionally, the correct
305 thing to do is encode this size in bytes as part of the command
306 using _IOC_SIZE().
307
308 * modules/spl/spl-kmem.c: Fixed a long standing bug in the debug
309 tracing. The tcd_for_each() macro expected a NULL to terminate
310 the trace_data[i] array but this was only ever true due to luck.
311 All trace_data[] iterators are now properly capped by TCD_TYPE_MAX.
312
313 * modules/spl/spl-kmem.c: To simplify debugging all symbols aquired
314 dynamically using spl_kallsyms_lookup_name() are initially poisoned
315 with SYMBOL_POISON.
316
f8b2932a
BB
3172009-03-20 Brian Behlendorf <behlendorf1@llnl.gov>
318
319 * : Tag spl-0.4.3
320
321 * configure.ac, *Makefile.am: Build system update. This includes
322 resolving various build issues and adding support for the remaining
323 common build targets. Available targets now include:
324
325 - make all # Build everything
326 - make install # Install everything
327 - make clean # Clean up build products
328 - make distclean # Clean up everything
329 - make dist # Create package tarball
330 - make srpm # Create package source RPM
331 - make rpm # Create package binary RPMs
332 - make tags # Create ctags and etags for everything
333
334 Extra care was taken to ensure that the source RPMs are fully
335 rebuildable against Fedora/RHEL/Chaos kernels. To build binary
336 RPMs from the source RPM for your system simply run:
337
338 rpmbuild --rebuild spl-x.y.z-1.src.rpm
339
340 This will produce two binary RPMs with correct 'requires'
341 dependencies for your kernel. One will contain all zpl modules
342 and support utilities, the other is a devel package for compiling
343 additional kernel modules which are dependent on the spl.
344
345 spl-x.y.z-1_<kernel version>.x86_64.rpm
346 spl-devel-x.y.2-1_<kernel version>.x86_64.rpm
347
348 * : FC10 (linux-2.6.27.19) and i686 compatibility update. The
349 list of support platforms has been extended to include FC10
350 systems and x86 architectures. It should be noted that kernels
351 older the 2.6.27.19 should work but have not have not been tested.
352
353 * configure.ac: Fix build issue preventing spl_config.h from being
354 cleanly included by dependent packages.
355
356 * module/spl/spl-taskq.c: Fix taskq_wait() not waiting bug.
357
358 * module/spl/spl-xdr.c: Add XDR implementation provided by Ricardo
359 Correia from Sun.
360
361 * module/spl/spl-kmem.c: Linux VM integration cleanup.
362
363 * module/spl/spl-kmem.c: Slab cache improvements and fixes.
364
365 * modules/splat/*: Include additional SPLAT regression tests.
366
367 * : Various bug fixes are more clearly detailed in the git
368 commit logs. For a detailed summary of changes post version
369 0.4.2 check the git commit logs.
370
371 git log -35
372
e50ad76d
BB
3732009-02-05 Brian Behlendorf <behlendorf1@llnl.gov>
374
375 * : Tag spl-0.4.2
376
377 * module/spl/spl-kmem.c include/sys/kmem.h: Slab cache improvements:
378 - Implement kmem cache alignment.
379 - Implement slab ageing.
380 - Optimized slab packing algorithm.
381 - Fixed deadlock due to calling call kv_free() under the skc_lock.
382 - Added additional SPLAT test cases
383 - Performance optimizations
384
385 * module/spl/spl-kmem.c include/sys/kmem.h: Linux VM integration.
386 The Solaris global VM symbols minfree, desfree, lotsfree, needfree,
387 swapfs_minfree, swapfs_reserve, availrmem, freemem, and physmem are
388 now available and loosely integrating with the Linux VM. Some
389 tuning will undoubtably be needed and these tunables are available
390 in /proc/sys/kernel/spl/vm/* for this very reason.
391
392 * config/spl-build.m4: New configure checks needed when building
393 against 2.6.27+ kernels. More work is needed here.
394
395 * : Minor cleanup see the 'git log' for full details.
396
064bbffb
BB
3972009-01-21 Brian Behlendorf <behlendorf1@llnl.gov>
398
399 * : Tag spl-0.4.1
400
401 * : Implement ksid_*, ddi_strto*, and system taskq functionality.
402 In addition, several other small Solaris compatibility changes
403 were made, see the 'git log' for full details.
404
895ff83c
BB
4052008-11-26 Brian Behlendorf <behlendorf1@llnl.gov>
406
407 * : Tag spl-0.4.0 (Development now done with Git)
408
409 * : Imported SPL SVN repo in to Git Repo for core development.
410
dd529a30 4112008-11-26 Brian Behlendorf <behlendorf1@llnl.gov>
412
413 * : Tag spl-0.3.5
414
415 * : Include META file support.
416
bf9f3bac 4172008-11-05 Jim Garlick <garlick@llnl.gov>
418
419 * : Add autogen.sh products.
420
f8b2932a 421 * configure.ac : Use AC_CONFIG_AUX_DIR to put autograph products
bf9f3bac 422 in ./auotconf.
423
424 * autogen.sh : Use --copy to avoid symlinks, remove error
425 redirection, run aclocal before libtoolize.
426
6a1c3d41 4272008-11-13 Brian Behlendorf <behlendorf1@llnl.gov>
428
429 * include/sys/sunddi.h, modules/spl/spl-module.c : Removed default
430 udev support from sunddi implementation because it uses GPL-only
431 symbols. This support is optionally available for SPL consumers
432 if they define HAVE_GPL_ONLY_SYMBOLS and license their module as
433 GPL using the MODULE_LICENSE("GPL") macro.
434
5457aee1 4352008-11-05 Brian Behlendorf <behlendorf1@llnl.gov>
436
437 * : Tag spl-0.3.4
438
439 * : Coverity clean.
440
441 * : Patches from Ricardo M. Correia <Ricardo.M.Correia@sun.com>
442 applied with minor revisions:
443
444 spl-00-rm-gpl-symbol-notifier_chain.patch
445 spl-01-rm-gpl-symbol-set_cpus_allowed.patch
446 spl-02-rm-gpl-symbols-device.patch
447 spl-03-rm-gpl-symbol-ktime_get_ts.patch
448 spl-04-fix-taskq-spinlock-lockup.patch
449 spl-05-div64.patch
450 spl-06-atomic64.patch
451 spl-07-kmem-cleanup.patch
452 spl-08-km-sleep-nofail.patch
453 spl-09-fix-kmem-track-oops.patch
454 spl-10-fix-assert-verify-ndebug.patch
455
3ba97a67 4562008-06-30 Brian Behlendorf <behlendorf1@llnl.gov>
457
458 * : Tag spl-0.3.3
459
460 * : modules/sys/kmem-slab.c : Refined SPL slab to include
461 per-cpu caches, removed internal hash, other general
462 performance improvements. Much work remain but it's pretty
463 good for an initial implementation.
464
2fb9b26a 4652008-06-13 Brian Behlendorf <behlendorf1@llnl.gov>
466
467 * : modules/sys/kmem-slab.c : Re-implemented the slab to no
468 longer be based on the linux slab but to be it's own complete
469 implementation. The new slab behaves much more like the
470 Solaris slab than the Linux slab.
471
c58f753d 4722008-06-04 Brian Behlendorf <behlendorf1@llnl.gov>
473
474 * : Tag spl-0.3.2
475
476 * : Extensive improvements to the build system to detect kernel
477 API changes so we can flexibly build with a wider range of kernel
478 versions. The code has now been testing with the 2.6.18-32chaos
479 and 2.6.25.3-18.fc9 kernels, however we should also be compatible
480 with other kernels in the range of 2.6.18-2.6.25.
481
57d86234 4822008-05-25 Brian Behlendorf <behlendorf1@llnl.gov>
483
484 * configure.ac, autoconf/* : Initial pass at resolving
485 API changes introduced by kernels newer than 2.6.18.
486
65a045da 4872008-05-21 Brian Behlendorf <behlendorf1@llnl.gov>
488
489 * : Tag spl-0.3.1
490
491 * : License headers including URCL added for release.
492
b2585b36 4932008-05-21 Brian Behlendorf <behlendorf1@llnl.gov>
494
495 * : Tag spl-0.3.0
496
497 * configure.ac: Improved autotools support.
498
9ab1ac14 4992008-04-26 Brian Behlendorf <behlendorf1@llnl.gov>
500
501 * include/sys/mutex.h : Implemented a close approximation
502 of adaptive mutexes. These changes however required me to
503 export a new symbol from the kernel proper 'task_curr()'
504 which means we are now dependant on a patched kernel.
505
3561541c 5062008-04-24 Brian Behlendorf <behlendorf1@llnl.gov>
507
508 * : Tag spl-0.2.1
509
510 * modules/spl/spl-proc.c : Add /proc/sys/spl/version.
511
1bac409f 5122008-04-24 Herb Wartens <wartens2@llnl.gov>
513
514 * include/sys/kmem.h : Make sure that when calling __vmem_alloc
515 that we do not have __GFP_ZERO set. Once the memory is allocated
516 then zero out the memory if __GFP_ZERO is passed to
517 __vmem_alloc.
518
55152ebb 5192008-04-16 Herb Wartens <wartens2@llnl.gov>
520
521 * modules/spl/spl-kmem.c : Make sure to disable interrupts
522 when necessary to avoid deadlocks. We were seeing the deadlock
523 when calling kmem_cache_generic_constructor() and then an interrupt
524 forced us to end up calling kmem_cache_generic_destructor()
525 which caused our deadlock.
526
f1ca4da6 5272008-02-26 Brian Behlendorf <behlendorf1@llnl.gov>
528
529 : Initial commit of the solaris porting layer (spl). Included
530 in addition to the source is an initial autoconf / configure
531 style build system.