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