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