* [PATCH 0/2] mdadm patches for r5cache and mdadm.spec
@ 2017-08-28 22:20 Song Liu
2017-08-28 22:20 ` [PATCH 1/2] mdadm: install two more udev rules in mdadm.spec Song Liu
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Song Liu @ 2017-08-28 22:20 UTC (permalink / raw)
To: linux-raid
Cc: Song Liu, shli, neilb, kernel-team, dan.j.williams, hch, jes.sorensen
These two patches are not related to each other. I just found
them recently.
The first patch is found when building rpm with mdadm.spec.
The send patch fixes an --incremental issue when there is
mismatch in "Events" in an array with r5cache.
Thanks,
Song
Song Liu (2):
mdadm: install two more udev rules in mdadm.spec
mdadm: save previous journal_clean when reload super
Incremental.c | 3 +++
mdadm.spec | 2 ++
2 files changed, 5 insertions(+)
--
2.9.5
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] mdadm: install two more udev rules in mdadm.spec
2017-08-28 22:20 [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Song Liu
@ 2017-08-28 22:20 ` Song Liu
2017-08-28 22:20 ` [PATCH 2/2] mdadm: save previous journal_clean when reload super Song Liu
2017-08-29 17:40 ` [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Jes Sorensen
2 siblings, 0 replies; 5+ messages in thread
From: Song Liu @ 2017-08-28 22:20 UTC (permalink / raw)
To: linux-raid
Cc: Song Liu, shli, neilb, kernel-team, dan.j.williams, hch, jes.sorensen
To avoid rpmbuild error.
Signed-off-by: Song Liu <songliubraving@fb.com>
---
mdadm.spec | 2 ++
1 file changed, 2 insertions(+)
diff --git a/mdadm.spec b/mdadm.spec
index 4e97efb..4e6f870 100644
--- a/mdadm.spec
+++ b/mdadm.spec
@@ -37,8 +37,10 @@ rm -rf $RPM_BUILD_ROOT
%doc TODO ChangeLog mdadm.conf-example COPYING
%{_sbindir}/mdadm
%{_sbindir}/mdmon
+/usr/lib/udev/rules.d/01-md-raid-creating.rules
/usr/lib/udev/rules.d/63-md-raid-arrays.rules
/usr/lib/udev/rules.d/64-md-raid-assembly.rules
+/usr/lib/udev/rules.d/69-md-clustered-confirm-device.rules
%config(noreplace,missingok)/%{_sysconfdir}/mdadm.conf
%{_mandir}/man*/md*
--
2.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] mdadm: save previous journal_clean when reload super
2017-08-28 22:20 [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Song Liu
2017-08-28 22:20 ` [PATCH 1/2] mdadm: install two more udev rules in mdadm.spec Song Liu
@ 2017-08-28 22:20 ` Song Liu
2017-08-29 0:49 ` NeilBrown
2017-08-29 17:40 ` [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Jes Sorensen
2 siblings, 1 reply; 5+ messages in thread
From: Song Liu @ 2017-08-28 22:20 UTC (permalink / raw)
To: linux-raid
Cc: Song Liu, shli, neilb, kernel-team, dan.j.williams, hch, jes.sorensen
In Incremental.c:count_active(), max_events is tracked to show to
which devices are up to date. If a device has events==max_events+1,
getinfo_super() is called to reload the superblock from this
device. getinfo_super1() blindly set journal_clean to 0, which is
wrong. This patch fixes this issue by saving previous
journal_clean before calling getinfo_super().
Signed-off-by: Song Liu <songliubraving@fb.com>
---
Incremental.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Incremental.c b/Incremental.c
index 6cf2174..b17b37f 100644
--- a/Incremental.c
+++ b/Incremental.c
@@ -747,13 +747,16 @@ static int count_active(struct supertype *st, struct mdinfo *sra,
;
else if (info.events == max_events+1) {
int i;
+ int journal_clean;
max_events = info.events;
for (i = 0; i < raid_disks; i++)
if (avail[i])
avail[i]--;
avail[info.disk.raid_disk] = 2;
best[info.disk.raid_disk] = devnum;
+ journal_clean = bestinfo->journal_clean;
st->ss->getinfo_super(st, bestinfo, NULL);
+ bestinfo->journal_clean = journal_clean;
} else { /* info.events much bigger */
memset(avail, 0, raid_disks);
max_events = info.events;
--
2.9.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] mdadm: save previous journal_clean when reload super
2017-08-28 22:20 ` [PATCH 2/2] mdadm: save previous journal_clean when reload super Song Liu
@ 2017-08-29 0:49 ` NeilBrown
0 siblings, 0 replies; 5+ messages in thread
From: NeilBrown @ 2017-08-29 0:49 UTC (permalink / raw)
To: linux-raid; +Cc: Song Liu, shli, kernel-team, dan.j.williams, hch, jes.sorensen
[-- Attachment #1: Type: text/plain, Size: 1730 bytes --]
On Mon, Aug 28 2017, Song Liu wrote:
> In Incremental.c:count_active(), max_events is tracked to show to
> which devices are up to date. If a device has events==max_events+1,
> getinfo_super() is called to reload the superblock from this
> device. getinfo_super1() blindly set journal_clean to 0, which is
> wrong. This patch fixes this issue by saving previous
> journal_clean before calling getinfo_super().
>
> Signed-off-by: Song Liu <songliubraving@fb.com>
> ---
> Incremental.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Incremental.c b/Incremental.c
> index 6cf2174..b17b37f 100644
> --- a/Incremental.c
> +++ b/Incremental.c
> @@ -747,13 +747,16 @@ static int count_active(struct supertype *st, struct mdinfo *sra,
> ;
> else if (info.events == max_events+1) {
> int i;
> + int journal_clean;
> max_events = info.events;
> for (i = 0; i < raid_disks; i++)
> if (avail[i])
> avail[i]--;
> avail[info.disk.raid_disk] = 2;
> best[info.disk.raid_disk] = devnum;
> + journal_clean = bestinfo->journal_clean;
> st->ss->getinfo_super(st, bestinfo, NULL);
> + bestinfo->journal_clean = journal_clean;
> } else { /* info.events much bigger */
> memset(avail, 0, raid_disks);
> max_events = info.events;
This is a hack to work around a symptom. It is not a real fix.
I'm not sure what the real fix is.
Maybe when you find "raid_disk == MD_DISK_ROLE_JOURNAL" you set
"journal_events = info.events", then after the loop, if
"journal_events >= max_events-1", you set "bestinfo->journal_clean = 1",
or something like that.
But you need to make it obvious that the code is correct, and the above
code looks like a hack.
Thanks,
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/2] mdadm patches for r5cache and mdadm.spec
2017-08-28 22:20 [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Song Liu
2017-08-28 22:20 ` [PATCH 1/2] mdadm: install two more udev rules in mdadm.spec Song Liu
2017-08-28 22:20 ` [PATCH 2/2] mdadm: save previous journal_clean when reload super Song Liu
@ 2017-08-29 17:40 ` Jes Sorensen
2 siblings, 0 replies; 5+ messages in thread
From: Jes Sorensen @ 2017-08-29 17:40 UTC (permalink / raw)
To: Song Liu, linux-raid; +Cc: shli, kernel-team, NeilBrown
On 08/28/2017 06:20 PM, Song Liu wrote:
> These two patches are not related to each other. I just found
> them recently.
>
> The first patch is found when building rpm with mdadm.spec.
>
> The send patch fixes an --incremental issue when there is
> mismatch in "Events" in an array with r5cache.
>
> Thanks,
> Song
>
> Song Liu (2):
> mdadm: install two more udev rules in mdadm.spec
> mdadm: save previous journal_clean when reload super
>
> Incremental.c | 3 +++
> mdadm.spec | 2 ++
> 2 files changed, 5 insertions(+)
Hi,
I applied the first one, but leaving the second one out for now, per
Neil's comments.
Cheers,
Jes
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-08-29 17:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-28 22:20 [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Song Liu
2017-08-28 22:20 ` [PATCH 1/2] mdadm: install two more udev rules in mdadm.spec Song Liu
2017-08-28 22:20 ` [PATCH 2/2] mdadm: save previous journal_clean when reload super Song Liu
2017-08-29 0:49 ` NeilBrown
2017-08-29 17:40 ` [PATCH 0/2] mdadm patches for r5cache and mdadm.spec Jes Sorensen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.