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