Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP2:GA
mdadm.1739
0001-Detail-fix-handling-of-disks-array.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Detail-fix-handling-of-disks-array.patch of Package mdadm.1739
From 8057db46a15daba1c954352fe19cfa7c9c6a6805 Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.de> Date: Tue, 4 Nov 2014 09:35:20 +1100 Subject: [PATCH] Detail: fix handling of 'disks' array. Since the introduction of replacement devices, we reserve to places in the "disks" array for each raid disk. That means we should allocate to twice "max_disk" as the array could have that many raid_disks (though that would limit the number of replacements). A couple of other places need to use "max_disks*2" instead of "max_disks" to co-ordinate with this. References: bsc#954769 Reported-by: Or Sagi <ors@reduxio.com> Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Coly Li <colyli@suse.de> --- Detail.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Detail.c b/Detail.c index c4fcad9..dd72ede 100644 --- a/Detail.c +++ b/Detail.c @@ -295,8 +295,8 @@ int Detail(char *dev, struct context *c) goto out; } - disks = xmalloc(max_disks * sizeof(mdu_disk_info_t)); - for (d = 0; d < max_disks; d++) { + disks = xmalloc(max_disks * 2 * sizeof(mdu_disk_info_t)); + for (d = 0; d < max_disks * 2; d++) { disks[d].state = (1<<MD_DISK_REMOVED); disks[d].major = disks[d].minor = 0; disks[d].number = disks[d].raid_disk = d; @@ -327,7 +327,7 @@ int Detail(char *dev, struct context *c) else if (disk.raid_disk >= 0 && disk.raid_disk < array.raid_disks && disks[disk.raid_disk*2+1].state == (1<<MD_DISK_REMOVED)) disks[disk.raid_disk*2+1] = disk; - else if (next < max_disks) + else if (next < max_disks*2) disks[next++] = disk; } @@ -602,7 +602,7 @@ This is pretty boring } free(info); - for (d= 0; d < max_disks; d++) { + for (d= 0; d < max_disks * 2; d++) { char *dv; mdu_disk_info_t disk = disks[d]; -- 2.6.2
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