Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
mdadm.5365
0222-super1-make-write_bitmap1-compatible-with-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0222-super1-make-write_bitmap1-compatible-with-previous-m.patch of Package mdadm.5365
From 119b66a47320ea906e43488de719f7173cb7286c Mon Sep 17 00:00:00 2001 From: Guoqing Jiang <gqjiang@suse.com> Date: Wed, 12 Oct 2016 02:24:07 -0400 Subject: [PATCH 311/359] super1: make write_bitmap1 compatible with previous mdadm versions References: bsc#1081910 For older mdadm version, v1.x metadata has different bitmap_offset, we can't ensure all the bitmaps are on a 4K boundary since writing 4K for bitmap could corrupt the superblock, and Anthony reported the bug about it at below link. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=837964 So let's check about the alignment for bitmap_offset before set the boundary to 4096 unconditionally. Thanks for Neil's detailed explanation. Reported-by: Anthony DeRobertis <anthony@derobert.net> Fixes: 95a05b37e8eb ("Create n bitmaps for clustered mode") Cc: Neil Brown <neilb@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Coly Li <colyli@suse.de> --- super1.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/super1.c b/super1.c index 9f62d23..4fef378 100644 --- a/super1.c +++ b/super1.c @@ -2433,7 +2433,15 @@ static int write_bitmap1(struct supertype *st, int fd, enum bitmap_update update memset(buf, 0xff, 4096); memcpy(buf, (char *)bms, sizeof(bitmap_super_t)); - towrite = calc_bitmap_size(bms, 4096); + /* + * use 4096 boundary if bitmap_offset is aligned + * with 8 sectors, then it should compatible with + * older mdadm. + */ + if (__le32_to_cpu(sb->bitmap_offset) & 7) + towrite = calc_bitmap_size(bms, 512); + else + towrite = calc_bitmap_size(bms, 4096); while (towrite > 0) { n = towrite; if (n > 4096) -- 2.16.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