diff --git a/VERSION b/VERSION index 33a6cefde..1464a3042 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.02.76(2)-cvs (2010-10-25) +2.02.76(2)-cvs (2010-11-08) diff --git a/VERSION_DM b/VERSION_DM index d5f921b12..08acb60ce 100644 --- a/VERSION_DM +++ b/VERSION_DM @@ -1 +1 @@ -1.02.57-cvs (2010-10-25) +1.02.57-cvs (2010-11-08) diff --git a/WHATS_NEW b/WHATS_NEW index 6dca0483b..f18f13593 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,16 +1,16 @@ -Version 2.02.76 - +Version 2.02.76 - 8th November 2010 =================================== Clarify error messages when activation fails due to activation filter use. - Add initial script VolumeGroup.ocf for pacemaker support. - Fix regex optimiser not to ignore RHS of OR nodes in _find_leftmost_common. + Add pacemaker script VolumeGroup.ocf with configure --enable-ocf. + Import make.tmpl into include/ Makefile. Fix handling of online filesystem resize (using new fsadm return code). Add DIAGNOSTICS section to fsadm man page. Modify fsadm to return different status code for check of mounted filesystem. Update VG metadata only once in vgchange when making multiple changes. Allow independent vgchange arguments to be used together. Automatically unmount invalidated snapshots in dmeventd. + Suppress some superfluous messages from clang static analysis. Fix a deadlock caused by double close in clvmd. - Add dmeventd -R to restart dmeventd without losing monitoring state. (2.02.75) Fix NULL pointer dereference on too-large MDA error path in _vg_read_raw_area. Use static for internal _align_chunk() and _new_chunk() from pool-fast.c. Fix vgchange to process -a, --refresh, --monitor and --poll like lvchange. diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM index fbe691bdf..1089a2ebe 100644 --- a/WHATS_NEW_DM +++ b/WHATS_NEW_DM @@ -1,5 +1,7 @@ -Version 1.02.57 +Version 1.02.57 - 8th November 2010 =================================== + Fix regex optimiser not to ignore RHS of OR nodes in _find_leftmost_common. + Add dmeventd -R to restart dmeventd without losing monitoring state. (1.02.56) Fix memory leak of field_id in _output_field function. Allocate buffer for reporting functions dynamically to support long outputs. diff --git a/daemons/clvmd/clvmd.c b/daemons/clvmd/clvmd.c index 706f15bcc..1a9d40e28 100644 --- a/daemons/clvmd/clvmd.c +++ b/daemons/clvmd/clvmd.c @@ -184,8 +184,12 @@ static void child_init_signal(int status) write(child_pipe[1], &status, sizeof(status)); close(child_pipe[1]); } - if (status) - exit(status); +} + +static __attribute__((noreturn)) void child_init_signal_and_exit(int status) +{ + child_init_signal(status); + exit(status); } static void safe_close(int *fd) @@ -420,8 +424,10 @@ int main(int argc, char *argv[]) potential clients will block rather than error if we are running but the cluster is not ready yet */ local_sock = open_local_sock(); - if (local_sock < 0) - child_init_signal(DFAIL_LOCAL_SOCK); + if (local_sock < 0) { + child_init_signal_and_exit(DFAIL_LOCAL_SOCK); + /* NOTREACHED */ + } /* Set up signal handlers, USR1 is for cluster change notifications (in cman) USR2 causes child threads to exit. @@ -498,10 +504,8 @@ int main(int argc, char *argv[]) if (!clops) { DEBUGLOG("Can't initialise cluster interface\n"); log_error("Can't initialise cluster interface\n"); - child_init_signal(DFAIL_CLUSTER_IF); -#ifdef __clang__ - __builtin_unreachable(); -#endif + child_init_signal_and_exit(DFAIL_CLUSTER_IF); + /* NOTREACHED */ } DEBUGLOG("Cluster ready, doing some more initialisation\n"); @@ -517,10 +521,8 @@ int main(int argc, char *argv[]) /* Add the local socket to the list */ newfd = malloc(sizeof(struct local_client)); if (!newfd) { - child_init_signal(DFAIL_MALLOC); -#ifdef __clang__ - __builtin_unreachable(); -#endif + child_init_signal_and_exit(DFAIL_MALLOC); + /* NOTREACHED */ } newfd->fd = local_sock;