480 lines
21 KiB
Plaintext
480 lines
21 KiB
Plaintext
-------------------------------------------------------------------
|
|
Wed Oct 6 08:54:51 UTC 2021 - Christian Vögl <christian.voegl@suse.com>
|
|
|
|
- Update to PMDK 1.11.1
|
|
* Bugfixes:
|
|
* doc: remove exprimental moniker from libpmem2(7)
|
|
* common: fix missing sfence in non-temporal memcpy
|
|
* common: fix a mismatch between prototype and body
|
|
* common: fix mismatched function args
|
|
* obj: rename vars clashing with those of a containing block
|
|
* pmem2: don't force smaller alignment for fsdax mappings
|
|
* pool: don't trample upon users of localtime()
|
|
* rpmem: Fix RPMEM_RAW_BUFF_SIZE and LANE_ALIGN_SIZE for powerpc64le
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Sep 21 20:21:42 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
|
|
|
|
- Trim old specfile constructs like defattr.
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Sep 15 08:36:35 UTC 2021 - Christian Vögl <christian.voegl@suse.com>
|
|
|
|
- Renamed libpmem2-1-devel to libpmem2-devel
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Sep 8 14:42:34 UTC 2021 - Christian Vögl <christian.voegl@suse.com>
|
|
|
|
- Update to PMDK 1.11.0
|
|
* Version 1.11.0
|
|
- Adds new APIs for libpmem2, most notably there are new functions
|
|
to shrink and extend an existing reservation and a new iterator API
|
|
for mappings contained within an existing reservation. There's also
|
|
a new function to retrieve a numa node for a source.
|
|
- Makes the pmemobj_open() and pmemobj_close() functions from libpmemobj
|
|
thread-safe. It's now easier to correctly manage persistent memory
|
|
pools in a parallel environment.
|
|
- Introduces a new API in libpmemobj to globally change the method of
|
|
assigning arenas to threads. The default is to rely on a OS per-thread
|
|
key to store arena information. This release introduces an option
|
|
to avoid the use of thread-local keys by simply using one global
|
|
arena for all threads in a pool.
|
|
- pmem2: don't force smaller alignment for fsdax mappings
|
|
- rpmem: various fixes for powerpc64le
|
|
- doc: fix documentation of pmem_is_pmem()
|
|
- common: fix various minor problems found by static analysis
|
|
- pmem2: arm64: fix possible data loss on ARMv8.2+ (improper flushing)
|
|
This release introduces no changes to the on-media layout and is
|
|
fully compatible with the previous version of PMDK.
|
|
|
|
* Version 1.10
|
|
- This release introduces a new stable PMDK library, libpmem2, which
|
|
is the next major release of libpmem.
|
|
This library has an entirely new, but familiar, API that addresses many
|
|
shortcomings of the previous version, while retaining all of its
|
|
functionality. To learn more, see https://pmem.io/pmdk/libpmem2/ or
|
|
libpmem2(7).
|
|
The old library, libpmem, is still going to be maintained for the
|
|
foreseeable future, but we'd like to encourage any new applications to
|
|
leverage libpmem2.
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Sep 8 10:06:57 UTC 2021 - Christian Vögl <christian.voegl@suse.com>
|
|
|
|
- Update to PMDK 1.9.2
|
|
* Version 1.9.2
|
|
- This release reverts an incorrect change in SDS handling
|
|
"pool: disable SDS check if not supported", and introduces
|
|
a proper fix for the issues that patch attempted to correct.
|
|
* Version 1.9.1
|
|
- common: fix LIBFABRIC flags
|
|
- common: Add runtime SDS check and disable
|
|
- pool: disable SDS check if not supported
|
|
- obj: fix failure atomicity bug in huge allocs
|
|
- obj: add missing drain after ulog processing
|
|
- Drop common-fix-LIBFABRIC-flags.patch (now in upstream)
|
|
- Add a comment to gen-doc.sh
|
|
|
|
-------------------------------------------------------------------
|
|
Fri Jan 22 09:25:21 UTC 2021 - Guillaume GARDET <guillaume.gardet@opensuse.org>
|
|
|
|
- Enable aarch64 build
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Jul 22 07:34:47 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
|
|
|
- Update to PMDK 1.9
|
|
- Switches the default instruction set for memcpy, memmove and memset
|
|
implementations on x86 to AVX512, and introduces numerous performance
|
|
improvements for those operations on AVX and SSE2 fallback paths.
|
|
- Optimizes transactional allocations in libpmemobj by avoiding one
|
|
extraneous cache miss and reducing the amount of work required to perform
|
|
a reservation.
|
|
- Introduces a new API in libpmemobj, pmemobj_tx_set_failure_behavior,
|
|
that enables the application to control the behavior of aborting
|
|
transactions.
|
|
- Stabilizes support for ppc64.
|
|
- pmem: mem[cpy|set] optimization when eADR is available
|
|
- obj: detect msync failures in non-pmem variants of mem[cpy|move|set]
|
|
- Add patches to fix compilation against libfabric:
|
|
- examples-rpmem-add-missing-lfabric-flag.patch to fix examples linkage errors
|
|
- common-fix-LIBFABRIC-flags.patch to fix daemons/tools linkage errors
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Feb 13 08:49:37 UTC 2020 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
|
|
|
- Update to PMDK 1.8
|
|
- Introduces new API in libpmemobj for user-assisted defragmentation
|
|
(see pmemobj_defrag man page for details).
|
|
- Introduces experimental support for PPC64LE architecture.
|
|
- Introduces new flag in libpmemobj for opting-out of transaction aborts on failure
|
|
(POBJ_TX_NO_ABORT), along with new variants of existing APIs that didn't accept
|
|
flags (pmemobj_tx_xfree, pmemobj_tx_xpublish,
|
|
- pmemobj_tx_xlock, pmemobj_tx_xlog_append_buffer, pmemobj_tx_xstrdup, pmemobj_tx_xwcsdup).
|
|
- Moves out libvmem and libvmmalloc to the new repository (https://github.com/pmem/vmem).
|
|
- obj: introduce new statistics useful for defrag
|
|
- obj: introduce transient/persistent statistics enabling
|
|
- obj: introduce pmemobj_tx_(set/get)_user_data funcs
|
|
- obj: introduce pmemobj_(set/get)_user_data funcs
|
|
- obj: disable workaround for offsetof() since VS 15.5 in public header
|
|
- common: drop support for libndctl < 63 on Linux
|
|
- pool: rename -N --no-exec to -d --dry-run
|
|
- Add gen-doc.sh to pregenerate documentation in pregen-doc.tgz and avoid adding a
|
|
build dependency to pandoc
|
|
|
|
|
|
-------------------------------------------------------------------
|
|
Fri Oct 11 14:19:47 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
|
|
|
- Update to PMDK 1.7 (jsc#SLE-9886)
|
|
- Introduces new APIs in libpmemobj for managing space used by transactions.
|
|
(see pmemobj_tx_log_append_buffer man page for details)
|
|
- Introduces new APIs in librpmem, splitting rpmem_persist into rpmem_flush
|
|
and rpmem_drain, allowing applications to use the flush + drain model
|
|
already known from libpmem. (libpmemobj does not use this feature yet)
|
|
- Optimizes large libpmemobj transactions by significantly reducing
|
|
the amount of memory modified at the commit phase.
|
|
- Optimizes tracking of libpmemobj reservations.
|
|
- Adds new flags for libpmemobj's pmemobj_tx_xadd_range[_direct] API:
|
|
POBJ_XADD_NO_SNAPSHOT and POBJ_XADD_ASSUME_INITIALIZED, allowing
|
|
applications to optimize how memory is tracked by the library.
|
|
- To support some of the above changes the libpmemobj on-media layout had
|
|
to be changed, which means that old pools have to be converted using
|
|
pmdk-convert >= 1.7.
|
|
|
|
-------------------------------------------------------------------
|
|
Wed May 15 05:59:44 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
|
|
|
- Disable Werror to deal with a new GCC 9 warning.
|
|
|
|
-------------------------------------------------------------------
|
|
Mon May 13 08:03:31 UTC 2019 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
|
|
|
|
- Update to PMDK 1.6 (jsc#SLE-5400)
|
|
- See ChangeLog for details
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Apr 24 17:31:35 UTC 2019 - Martin Liška <mliska@suse.cz>
|
|
|
|
- Disable LTO (boo#1133276).
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Nov 6 11:49:43 UTC 2018 - Jan Engelhardt <jengelh@inai.de>
|
|
|
|
- Restore pmdk-tools package
|
|
|
|
-------------------------------------------------------------------
|
|
Mon Oct 29 14:46:07 UTC 2018 - nmoreychaisemartin@suse.com
|
|
|
|
- Update to PMDK 1.5 (FATE#326234)
|
|
* New features:
|
|
* common: unsafe shutdown detection (SDS)
|
|
* common: detection and repair of uncorrectable memory errors
|
|
(bad blocks)
|
|
* pool: new "feature" subcommand for enabling and disabling
|
|
detection of unsafe shutdown and uncorrectable memory errors
|
|
* common: auto flush detection on Windows (on Linux since 1.4)
|
|
* pmreorder: new tool for verification of persistent memory
|
|
algorithms
|
|
* obj: new on media layout
|
|
* pmem/obj: new flexible memcpy|memmove|memset API
|
|
* obj: new flushing APIs: pmemobj_xpersist, pmemobj_xflush
|
|
(PMEMOBJ_F_RELAXED)
|
|
* rpmem: new flag RPMEM_PERSIST_RELAXED for rpmem_persist
|
|
* obj: lazily initialized volatile variables (pmemobj_volatile)
|
|
(EXPERIMENTAL)
|
|
* obj: allocation classes with alignment
|
|
* obj: new action APIs: pmemobj_defer_free, POBJ_XRESERVE_NEW,
|
|
POBJ_XRESERVE_ALLOC
|
|
* blk/log: new "ctl" API
|
|
* Optimizations:
|
|
* obj: major performance improvements for AEP NVDIMMs
|
|
* obj: better space utilization for small allocations
|
|
* common: call msync only on one page for deep drain
|
|
* Other changes:
|
|
* The libpmemcto library has been removed
|
|
* obj: remove actions limit
|
|
* common: new dependency on libndctl
|
|
* pmempool: the "convert" subcommand is now a wrapper around
|
|
pmdk-convert
|
|
* C++ bindings have been split off to a separate project
|
|
(libpmemobj-cpp)
|
|
* Bug fixes:
|
|
* obj: fix type numbers for pmemobj_list_insert_new
|
|
* pmem: fix inconsistency in pmem_is_pmem
|
|
* daxio: fix checking and adjusting length
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Sep 4 15:16:31 UTC 2018 - Jan Engelhardt <jengelh@inai.de>
|
|
|
|
- Update to new upstream release 1.4.2
|
|
* common: support for concatenated Device-DAX devices
|
|
with 2M/1G alignment
|
|
* pmem: add support for "deep flush" operation
|
|
* common: add experimental support for aarch64
|
|
- Split development documentation into its own package so it does
|
|
not always get installed for the build service.
|
|
|
|
-------------------------------------------------------------------
|
|
Wed Jun 06 09:52:03 UTC 2018 - opensuse-packaging@opensuse.org
|
|
|
|
- Update to version 1.4 (FATE#325145):
|
|
- build-fix.patch
|
|
* doc: update ChangeLog for 1.4 release
|
|
* common: SRCVERSION for out of git tree builds
|
|
* doc: mark experimental APIs in man pages
|
|
* doc: rephrase paragraphs mentioning eADR
|
|
* doc: update man page version numbers
|
|
* doc: automatic master docs update
|
|
* doc: update README
|
|
|
|
-------------------------------------------------------------------
|
|
Sat Jan 20 09:11:21 UTC 2018 - jengelh@inai.de
|
|
|
|
- Update descriptions from NVML to PMDK.
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Dec 26 10:59:10 UTC 2017 - jengelh@inai.de
|
|
|
|
- Adjust Obsoletes/Provides to exact version
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Dec 26 10:17:28 UTC 2017 - nmoreychaisemartin@suse.com
|
|
|
|
- Upstream project was renamed to PMDK.
|
|
- Rename nvml and nvml-tools RPMs to pmdk and pmdk-tools
|
|
- Update to version 1.3.1
|
|
- Bug fixes:
|
|
- rpmem: fix issues reported by Coverity
|
|
- rpmem: fix read error handling
|
|
- rpmem: add fip monitor
|
|
- test: add rpmemd termination handling test
|
|
- cpp: fix pop.persist function in obj_cpp_ptr
|
|
- rpmem: return failure for a failed allocation
|
|
- rpmem: fix potential memory leak
|
|
- common: fix available rm options msg
|
|
- pool: fix pmempool_get_max_size
|
|
- obj: fix potential deadlock during realloc
|
|
- obj: initialize TLS data
|
|
- rpmem: fix cleanup if fork() failed
|
|
- obj: fix bogus OOM after exhausting first zone
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Aug 8 11:05:26 UTC 2017 - jengelh@inai.de
|
|
|
|
- Fix RPM groups
|
|
|
|
-------------------------------------------------------------------
|
|
Tue Jul 18 13:58:55 UTC 2017 - nmoreychaisemartin@suse.com
|
|
|
|
- Update to upstream version 1.3 (FATE#322653)
|
|
This release introduces some useful features and optimizations
|
|
in libpmemobj. Most of them are experimental and controlled by
|
|
the new pmemobj_ctl APIs. For details, please check the feature
|
|
requests identified by the issue numbers listed next to the items below.
|
|
|
|
Other important changes are related to performance tuning and
|
|
stabilization of librpmem library, which is used by libpmemobj to get
|
|
remote access to persistent memory and to provide basic data replication
|
|
over RDMA. The librpmem is still considered experimental.
|
|
|
|
New features:
|
|
- common: add support for concatenated DAX Devices
|
|
- common: add Unicode support on Windows
|
|
- common: add long path support on Windows
|
|
- common: add NVML installer for Windows
|
|
- pmem: make pmem_is_pmem() true for Device DAX only
|
|
- obj: add pmemobj_wcsdup()/pmemobj_tx_wcsdup() APIs
|
|
- obj: export non-inlined pmemobj_direct()
|
|
- obj: add PMEMOBJ_NLANES env variable
|
|
- cpp: introduce the allocator
|
|
- cpp: add wstring version of C++ entry points
|
|
- vmem: add vmem_wcsdup() API entry
|
|
- pool: add pmempool_rm() function (#307)
|
|
- pool: add --force flag for create command (#529)
|
|
- benchmark: add a minimal execution time option
|
|
- benchmark: add thread affinity option
|
|
- benchmark: print 99% and 99.9% percentiles
|
|
- doc: separate Linux/Windows version of web-based man pages
|
|
|
|
Optimizations:
|
|
- obj: cache _pobj_cached_pool in pmemobj_direct()
|
|
- obj: optimize thread utilization of buckets
|
|
- obj: stop grabbing a lock when querying pool ptr
|
|
- rpmem: use multiple endpoints
|
|
|
|
Bug fixes:
|
|
- common: fix issues reported by static code analyzers
|
|
- pmem: fix mmap() implementation on Windows
|
|
- pmem: fix mapping addr/length alignment on Windows
|
|
- pmem: fix PMEM_MMAP_HINT implementation on Windows
|
|
- pmem: fix pmem_is_pmem() on invalid memory ranges
|
|
- pmem: fix wrong is_pmem returned by pmem_map_file()
|
|
- pmem: fix mprotect() for private mappings on Windows
|
|
- pmem: modify pmem_is_pmem() behavior for len==0
|
|
- obj: add failsafe to prevent allocs in constructor
|
|
- cpp: fix swap implementation
|
|
- cpp: fix sync primitives' constructors
|
|
- cpp: fix wrong pointer type in the allocator
|
|
- cpp: return persistent_ptr::swap to being public
|
|
- pool: treat invalid answer as 'n'
|
|
- pool: unify flags value for dry run
|
|
- pool: transform for remote replicas
|
|
- rpmem: persistency method detection
|
|
- benchmark: fix time measurement
|
|
- Prevent debug libraries from providing symbols
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Jun 29 19:49:50 UTC 2017 - jengelh@inai.de
|
|
|
|
- Update to new upstream release 1.2.3
|
|
* pmempool: fix mapping type in pool_params_parse
|
|
|
|
-------------------------------------------------------------------
|
|
Fri Mar 31 11:32:37 UTC 2017 - jengelh@inai.de
|
|
|
|
- Manpages do not belong into the shlib package
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Mar 16 08:46:24 UTC 2017 - jengelh@inai.de
|
|
|
|
- Run fdupes
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Mar 16 08:32:02 UTC 2017 - jthumshirn@suse.com
|
|
|
|
- Update to upstream version 1.2.1 (FATE#321727)
|
|
This NVML release changes the behavior of pmem_is_pmem() on Linux.
|
|
The pmem_is_pmem() function will now return true only if the entire
|
|
range is mapped directly from Device DAX (/dev/daxX.Y) without an
|
|
intervening file system, and only if the corresponding file mapping
|
|
was created with pmem_map_file(). See libpmem(3) for details.
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Mar 9 09:01:10 UTC 2017 - jthumshirn@suse.com
|
|
|
|
- Update to upstream version 1.2 (FATE#321727)
|
|
+ build-fix.patch
|
|
- 0001-libpmemblk-cast-translation-entry-to-uint64_t-when-calculating-data-offset.patch
|
|
* Add Device DAX support, providing that "optimized flush" mechanism
|
|
defined in SNIA NVM Programming Model can safely be used, even
|
|
if PMEM-aware file system supporting that model is not available,
|
|
or if the user does not want to use the file system for some reason.
|
|
* Add a package for libpmemobj C++ bindings.
|
|
C++ API is no longer considered experimental.
|
|
Web-based documentation for C++ API is available on http://pmem.io.
|
|
* Add "sync" and "transform" commands to pmempool utility.
|
|
The "sync" command allows to recover missing or corrupted part(s)
|
|
of a pool set from a healthy replica, while the "transform" command
|
|
is a convenient way for modifying the structure of an existing
|
|
pool set, i.e. by adding or removing replicas.
|
|
* Add experimental support for remote access to persistent memory and
|
|
basic remote data replication over RDMA (librpmem). Experimental
|
|
support for remote replicas is also provided by libpmemobj library.
|
|
Note: This is one not packaged for SUSE yet.
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Jul 7 08:37:13 UTC 2016 - jthumshirn@suse.com
|
|
|
|
- Fix 32 Bit overflow in resulting in flying writes (bsc#986657)
|
|
+ 0001-libpmemblk-cast-translation-entry-to-uint64_t-when-calculating-data-offset.patch
|
|
|
|
-------------------------------------------------------------------
|
|
Sun Jun 26 22:58:04 UTC 2016 - krzysztof.czurylo@intel.com
|
|
|
|
- Update to upstream version 1.1 (FATE#319673)
|
|
* A new version of libpmemobj pool layout is introduced.
|
|
* Internal undo log structure has been modified to improve
|
|
performance of pmemobj transactions.
|
|
* Memory pools created with older versions of the libpmemobj
|
|
library must be converted to the new format using "pmempool
|
|
convert" command. See pmempool-convert(1) for details.
|
|
* A new "libpmempool" library is available, providing support for
|
|
off-line pool management and diagnostics. Initially, it
|
|
provides only "check" and "repair" operations for log and blk
|
|
memory pools, and for BTT devices.
|
|
* pmem: deprecate PCOMMIT
|
|
* blk: match BTT Flog initialization with Linux NVDIMM BTT
|
|
* pmem: defer pmem_is_pmem() initialization
|
|
* cpp: clarify polymorphism in persistent_ptr
|
|
* obj: let the "before" flag be any non-zero value
|
|
* obj: fix compare array pptr to nullptr
|
|
* log/blk: set errno if replica section is specified
|
|
- Remove libuuid dependency
|
|
- Update link to source tarball (x.y.tar.gz => nvml-x.y.tar.gz)
|
|
- Add libpmempool subpackage
|
|
- Add new BuildRequires: pkg-config, glibc-devel
|
|
|
|
-------------------------------------------------------------------
|
|
Thu Apr 7 13:38:57 UTC 2016 - jthumshirn@suse.com
|
|
|
|
- Version 1.0
|
|
The API of six libraries (libpmem, libpmemblk, libpmemlog,
|
|
libpmemobj, libvmem, libvmmalloc) is complete and stable.
|
|
The on-media layout of persistent memory pools will be maintained
|
|
from this point, and if changed it will be backward compatible.
|
|
Man pages are all complete.
|
|
This release has been validated to "Production quality".
|
|
|
|
For the purpose of new features planned for next releases of NVML
|
|
there have been some API modifications made:
|
|
- pmem: pmem_map replaced with pmem_map_file
|
|
- log/blk: 'off_t' substituted with 'long long'
|
|
- obj: type numbers extended to 64-bit
|
|
- obj: new entry points and macros added:
|
|
pmemobj_tx_errno, pmemobj_tx_lock, pmemobj_mutex_timedlock,
|
|
TX_ADD_DIRECT, TX_ADD_FIELD_DIRECT, TX_SET_DIRECT
|
|
|
|
Other key changes since version 0.4 include:
|
|
- common: updated/fixed installation scripts
|
|
- common: eliminated dependency on libuuid
|
|
- pmem: CPU features/ISA detection using CPUID
|
|
- obj: improved error handling
|
|
- obj: atomic allocation fails if constructor returns error
|
|
- obj: multiple performance optimizations
|
|
- obj: object store refactoring
|
|
- obj: additional examples and benchmarks
|
|
|
|
This release also introduces a prototype implementation
|
|
of C++ bindings for libpmemobj. Note that C++ API is still
|
|
experimental and should not be used in production environments.
|
|
|
|
-------------------------------------------------------------------
|
|
Fri Jan 22 09:16:47 UTC 2016 - jthumshirn@suse.com
|
|
|
|
- Update to upstream version 0.4
|
|
This NVML version primarily focuses on improving code quality
|
|
and reliability. In addition to a couple of bug fixes,
|
|
the changes include:
|
|
- benchmarks for libpmemobj, libpmemblk and libvmem
|
|
- additional pmemobj tests and examples
|
|
- pool mapping address randomization
|
|
- added pmempool "rm" command
|
|
- eliminated libpmem dependency on libpthread
|
|
- enabled extra warnings
|
|
- minor performance improvements
|
|
Man pages are all complete.
|
|
This release is considered "Beta quality" by the team, having
|
|
been thoroughly validated, including significant performance analysis.
|
|
The pmempool command does not yet support "check" and "repair"
|
|
operations for pmemobj type pools.
|
|
|
|
-------------------------------------------------------------------
|
|
Mon Oct 19 09:51:06 UTC 2015 - jthumshirn@suse.com
|
|
|
|
- Update to upstream version 0.3
|
|
NVML is now feature complete, adding support for:
|
|
- pool sets
|
|
- pmemobj local replication (active/passive)
|
|
- experimental valgrind support
|
|
- pmempool support for all pool types
|
|
Man pages are all complete.
|
|
This release is considered "Alpha quality" by the team, having
|
|
gone through significant validation but only some performance
|
|
analysis at this point.
|
|
|
|
-------------------------------------------------------------------
|
|
Fri Jul 10 13:16:19 UTC 2015 - jthumshirn@suse.com
|
|
|
|
- Initial packaging for SUSE (version 0.2)
|