Hello community, here is the log from the commit of package lvm2.2466 for openSUSE:13.1:Update checked in at 2014-03-03 10:34:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1:Update/lvm2.2466 (Old) and /work/SRC/openSUSE:13.1:Update/.lvm2.2466.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lvm2.2466" Changes: -------- --- /work/SRC/openSUSE:13.1:Update/lvm2.2466/lvm2.changes 2014-02-03 15:22:24.000000000 +0100 +++ /work/SRC/openSUSE:13.1:Update/.lvm2.2466.new/lvm2.changes 2014-03-03 10:34:19.000000000 +0100 @@ -1,0 +2,14 @@ +Thu Feb 20 16:01:23 UTC 2014 - [email protected] + +- add 0001-lvmetad-Init-lazily-to-avoid-socket-access-on-config.patch + avoid connect to lvmetad.socket too early to prevent deadlock during + "systemctl daemon-reload" (bnc#862076) + +------------------------------------------------------------------- +Thu Feb 6 16:23:37 UTC 2014 - [email protected] + +- add autoactivate-lvmetad-with-generator.patch - if use_lvmetad=1, + automatically activate lvm2-lvmetad.socket to ensure lvmetad is + started when required (bnc#862076) + +------------------------------------------------------------------- New: ---- 0001-lvmetad-Init-lazily-to-avoid-socket-access-on-config.patch autoactivate-lvmetad-with-generator.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lvm2.spec ++++++ --- /var/tmp/diff_new_pack.bbelP9/_old 2014-03-03 10:34:19.000000000 +0100 +++ /var/tmp/diff_new_pack.bbelP9/_new 2014-03-03 10:34:19.000000000 +0100 @@ -76,6 +76,10 @@ Patch72: suppress_locking_failer_message.patch Patch73: remove-fedora-systemd.patch +#bnc#862076 +Patch74: autoactivate-lvmetad-with-generator.patch +Patch75: 0001-lvmetad-Init-lazily-to-avoid-socket-access-on-config.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-build # Not a real replacement but we drop evms Provides: evms = 2.5.5 @@ -114,6 +118,8 @@ %patch71 -p1 %patch72 -p1 %patch73 -p1 +%patch74 -p1 +%patch75 -p1 %build #set path so that thin_check can be found @@ -208,12 +214,12 @@ popd %post -%service_add_post blk-availability.service lvm2-monitor.service lvm2-lvmetad.socket +%service_add_post blk-availability.service lvm2-monitor.service [ -x /sbin/mkinitrd ] && /sbin/mkinitrd /sbin/ldconfig %preun -%service_del_preun blk-availability.service lvm2-monitor.service lvm2-lvmetad.service lvm2-lvmetad.socket +%service_del_preun blk-availability.service lvm2-monitor.service %postun [ -x /sbin/mkinitrd ] && /sbin/mkinitrd ++++++ 0001-lvmetad-Init-lazily-to-avoid-socket-access-on-config.patch ++++++ >From 983f0b46f2de85b8de0e2d7f8afbdf53f132a87a Mon Sep 17 00:00:00 2001 From: Petr Rockai <[email protected]> Date: Mon, 29 Oct 2012 21:39:46 +0100 Subject: [PATCH] lvmetad: Init lazily, to avoid socket access on config overrides. Signed-off-by: Andrey Borzenkov <[email protected]> --- lib/cache/lvmetad.c | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c index 6a374ac..72e07fd 100644 --- a/lib/cache/lvmetad.c +++ b/lib/cache/lvmetad.c @@ -33,7 +33,8 @@ static struct cmd_context *_lvmetad_cmd = NULL; void lvmetad_disconnect(void) { - daemon_close(_lvmetad); + if (_lvmetad_connected) + daemon_close(_lvmetad); _lvmetad_connected = 0; _lvmetad_cmd = NULL; } @@ -41,19 +42,25 @@ void lvmetad_disconnect(void) void lvmetad_init(struct cmd_context *cmd) { if (!_lvmetad_use && !access(LVMETAD_PIDFILE, F_OK)) - log_warn("WARNING: lvmetad is running but disabled. Restart lvmetad before enabling it!"); + log_warn("WARNING: lvmetad is running but disabled." + " Restart lvmetad before enabling it!"); + _lvmetad_cmd = cmd; +} + +static void _lvmetad_connect() +{ if (_lvmetad_use && _lvmetad_socket && !_lvmetad_connected) { assert(_lvmetad_socket); _lvmetad = lvmetad_open(_lvmetad_socket); - if (_lvmetad.socket_fd >= 0 && !_lvmetad.error) { + if (_lvmetad.socket_fd >= 0 && !_lvmetad.error) _lvmetad_connected = 1; - _lvmetad_cmd = cmd; - } } } void lvmetad_warning(void) { + if (!_lvmetad_connected) + _lvmetad_connect(); if (_lvmetad_use && (_lvmetad.socket_fd < 0 || _lvmetad.error)) log_warn("WARNING: Failed to connect to lvmetad: %s. Falling back to internal scanning.", strerror(_lvmetad.error)); @@ -61,7 +68,11 @@ void lvmetad_warning(void) int lvmetad_active(void) { - return _lvmetad_use && _lvmetad_connected; + if (!_lvmetad_use) + return 0; + if (!_lvmetad_connected) + _lvmetad_connect(); + return _lvmetad_connected; } void lvmetad_set_active(int active) @@ -873,6 +884,11 @@ int lvmetad_pvscan_all_devs(struct cmd_context *cmd, activation_handler handler) char *future_token; int was_silent; + if (!lvmetad_active()) { + log_error("Cannot proceed since lvmetad is not active."); + return 0; + } + if (!(iter = dev_iter_create(cmd->lvmetad_filter, 1))) { log_error("dev_iter creation failed"); return 0; -- 1.8.4.5 ++++++ autoactivate-lvmetad-with-generator.patch ++++++ From: Andrey Borzenkov <[email protected]> Subject: [PATCH] activate lvmetad in generator if use_lvmetad=1 This avoids unbootable system if user changes use_lvmetad but forgets to enable lvmetad. Ref: https://bugzilla.novell.com/show_bug.cgi?id=862076 Signed-off-by: Andrey Borzenkov <[email protected]> --- scripts/lvm2_activation_generator_systemd_red_hat.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) Index: LVM2.2.02.98/scripts/lvm2_activation_generator_systemd_red_hat.c =================================================================== --- LVM2.2.02.98.orig/scripts/lvm2_activation_generator_systemd_red_hat.c +++ LVM2.2.02.98/scripts/lvm2_activation_generator_systemd_red_hat.c @@ -153,15 +153,15 @@ int main(int argc, char *argv[]) r = EXIT_FAILURE; goto out; } + dir = argc > 1 ? argv[1] : DEFAULT_UNIT_DIR; + /* If lvmetad used, rely on autoactivation instead of direct activation. */ if (lvm_uses_lvmetad()) { kmsg("LVM: Logical Volume autoactivation enabled.\n"); - goto out; - } - - dir = argc > 1 ? argv[1] : DEFAULT_UNIT_DIR; - - if (!generate_unit(dir, 1) || !generate_unit(dir, 0)) + if (dm_snprintf(unit_path, PATH_MAX, "%s/%s", "/usr/lib/systemd/system", "lvm2-lvmetad.socket") < 0 || + !register_unit_with_target (dir, "lvm2-lvmetad.socket", "sockets.target")) + r = EXIT_FAILURE; + } else if (!generate_unit(dir, 1) || !generate_unit(dir, 0)) r = EXIT_FAILURE; out: kmsg("LVM: Activation generator %s.\n", r ? "failed" : "successfully completed"); -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
