cryptsetup 1.0.7 Release Notes (2009-07-22)
===========================================

Changes since 1.0.7-rc1
------------------------
[committer name]

 * Allow removal of last slot in luksRemoveKey
and luksKillSlot. [Milan Broz]

 * Add --disable-selinux option and fix static build if selinux
is required. [Milan Broz]

 * Reject unsupported --offset and --skip options for luksFormat
and update man page. [Milan Broz]


Changes since 1.0.6
--------------------
[committer name]

* Various man page fixes. Also merged some Debian/Ubuntu man page
fixes. (thanks to Martin Pitt) [Milan Broz]

* Set UUID in device-mapper for LUKS devices. [Milan Broz]

* Retain readahead of underlying device. [Milan Broz]

* Display device name when asking for password. (thanks to Till
Maas) [Milan Broz]

* Check device size when loading LUKS header. Remove misleading
error message later.  [Milan Broz]

* Add error hint if dm-crypt mapping failed. (Key size and kernel
version check for XTS and LRW mode for now.) [Milan Broz]

* Use better error messages if device doesn't exist or is already
used by other mapping. [Milan Broz]

* Fix make distcheck. (thanks to Mike Kelly) [Milan Broz]

* Check if all slots are full during luksAddKey. [Clemens Fruhwirth]

* Fix segfault in set_error (thanks to Oliver Metz). [Clemens Fruhwirth]

* Remove precompiled pot files. Fix uninitialized return value
variable in setup.c. [Clemens Fruhwirth]

* Code cleanups. (thanks to Ivan Stankovic) [Clemens Fruhwirth]

* Remove unnecessary files from po directory. They will be
regenerated by autogen.sh. [Clemens Fruhwirth]

* Fix wrong output for remaining key at key deletion. Allow deletion
of key slot while other keys have the same key information. [Clemens
Fruhwirth]

* Add missing AM_PROG_CC_C_O to configure.in [Milan Broz]

* Remove duplicate sentence in man page (thanks to Till Maas).
[Milan Broz]

* Wipe start of device (possible fs signature) before
LUKS-formatting. [Milan Broz]

* Do not process configure.in in hidden directories. [Milan Broz]

* Return more descriptive error in case of IO or header format
error. [Milan Broz]

* Use remapping to error target instead of calling udevsettle
for temporary crypt device. [Milan Broz]

* Check device mapper communication and warn user in case the
communication fails. (thanks to Milan Broz) [Clemens Fruhwirth]

* Fix signal handler to proper close device. (thanks to Milan Broz)
[Clemens Fruhwirth]

* write_lseek_blockwise: declare innerCount outside the if block,
add -Wall to the default CFLAGS, * fix some signedness issues
(thanks to Ivan Stankovic) [Clemens Fruhwirth]

* Error handling improvement. (thanks to Erik Edin) [Clemens Fruhwirth]

* Add non-exclusive override to interface definition. [Clemens
Fruhwirth]

* Refactor key slot selection into keyslot_from_option. Either
autoselect next free keyslot or honor user choice (after checking).
[Clemens Fruhwirth]
