Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:FrontRunner
lvm2.31864
bug-1175110_dmeventd-avoid-bail-out-preventing-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bug-1175110_dmeventd-avoid-bail-out-preventing-repair-in-raid-pl.patch of Package lvm2.31864
From 8d3e01ff4f94a8d36b16520a5e402dbc7539dd2c Mon Sep 17 00:00:00 2001 From: Heinz Mauelshagen <heinzm@redhat.com> Date: Fri, 20 Sep 2019 17:35:35 +0200 Subject: [PATCH] dmeventd: avoid bail out preventing repair in raid plugin but keep message Followup patch mentioned in previous commit 0585754593d7c010d83274c3a25dd6c3e8c8b4a8. Problem: even though dead raid component devices are detected, the raid plugin is bailing out thus preventing a repair attempt. Rational: in case of component device errors, the MD resynchronization thread runs in parallel with the thrown event being processed by the raid plugin. The plugin retrieves the raid device status but that still reflects insync regions as 0 (when it should already be total regions) because the MD thread didn't update it yet. Solution: Remove the insync regions check but keep the informal message "waiting for resynchronization" and let lvconvert carry out its pre-repair checks and optionally carry out a repair attempt. Related: https://bugzilla.redhat.com/show_bug.cgi?id=1751887 Related: https://bugzilla.redhat.com/show_bug.cgi?id=1560739 Related: https://bugzilla.redhat.com/show_bug.cgi?id=1468590 Related: https://bugzilla.redhat.com/show_bug.cgi?id=1654860 Related: https://bugzilla.redhat.com/show_bug.cgi?id=1729303 Related: https://bugzilla.redhat.com/show_bug.cgi?id=1741016 --- daemons/dmeventd/plugins/raid/dmeventd_raid.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/daemons/dmeventd/plugins/raid/dmeventd_raid.c b/daemons/dmeventd/plugins/raid/dmeventd_raid.c index 52cf43d..fda1320 100644 --- a/daemons/dmeventd/plugins/raid/dmeventd_raid.c +++ b/daemons/dmeventd/plugins/raid/dmeventd_raid.c @@ -76,14 +76,17 @@ static int _process_raid_event(struct dso_state *state, char *params, const char } if (dead) { - if (status->insync_regions < status->total_regions) { - if (!state->warned) { - state->warned = 1; - log_warn("WARNING: waiting for resynchronization to finish " - "before initiating repair on RAID device %s.", device); - } - - goto out; /* Not yet done syncing with accessible devices */ + /* + * Use the first event to run a repair ignoring any additonal ones. + * + * We presume lvconvert to do pre-repair + * checks to avoid bloat in this plugin. + */ + if (!state->warned && status->insync_regions < status->total_regions) { + state->warned = 1; + log_warn("WARNING: waiting for resynchronization to finish " + "before initiating repair on RAID device %s.", device); + /* Fall through to allow lvconvert to run. */ } if (state->failed) -- 1.8.3.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor