* mdadm segfaults on --grow
@ 2012-02-19 3:35 eeeee
2012-02-19 4:00 ` NeilBrown
0 siblings, 1 reply; 2+ messages in thread
From: eeeee @ 2012-02-19 3:35 UTC (permalink / raw)
To: linux-raid
i'm doing
mdadm --grow /dev/md127 -l raid5 -n 6
and it segfaults!
mdadm-3.2.3
here is "bt full" from map_num which returns NULL to Grow.c:1298 and
causes a segfault from line 1300
#0 map_num (map=0x6822d0, num=18) at maps.c:136
No locals.
#1 0x00000000004235ba in analyse_change (info=0x7fffffffd750,
re=0x7fffffffd5a0) at Grow.c:1298
layout = "\373zF\000\000\000\000\000\220\325\377\377\377\177",
'\000' <repeats 18 times>"\230, \330\377\377\377\177\000"
ls = 0x7fffffffd898 "md127"
l = 32767
new_disks = -10088
delta_parity = -1
#2 0x0000000000424daa in reshape_array (container=0x0, fd=7,
devname=0x7fffffffe456 "/dev/md127", st=0x698270, info=0x7fffffffd750,
force=0, devlist=0x0, backup_file=0x0, quiet=0, forked=0,
restart=0, freeze_reshape=0) at Grow.c:1919
reshape = {level = 6, parity = 32767, before = {layout = 18,
data_disks = 5}, after = {layout = 118, data_disks = 0},
backup_blocks = 34364313138, stripes = 127, new_size = 4619003}
spares_needed = 0
msg = 0x698270 "\340'h"
orig_level = 65534
disks = 0
odisks = 25008
array = {major_version = 0, minor_version = 90, patch_version
= 3, ctime = 1284750066, level = 6, size = 1953514496,
nr_disks = 10, raid_disks = 7, md_minor = 127,
not_persistent = 0, utime = 1329619913, state = 1, active_disks = 7,
working_disks = 10, failed_disks = 0, spare_disks = 3,
layout = 18, chunk_size = 524288}
c = 0x0
dv = 0x50000fffe
added_disks = 0
fdlist = 0x0
offsets = 0x0
d = 0
nrdisks = 0
err = 0
blocks = 735819680
cache = 1329620322
array_size = 140737351862080
done = 0
sra = 0x0
#3 0x0000000000424b7d in Grow_reshape (devname=0x7fffffffe456
"/dev/md127", fd=7, quiet=0, backup_file=0x0, size=1953514496,
level=5, layout_str=0x0, chunksize=0, raid_disks=6, devlist=0x0,
assume_clean=0, force=0) at Grow.c:1854
array = {major_version = 0, minor_version = 90, patch_version
= 3, ctime = 1284750066, level = 6, size = 1953514496,
nr_disks = 10, raid_disks = 7, md_minor = 127,
not_persistent = 0, utime = 1329619913, state = 1, active_disks = 7,
working_disks = 10, failed_disks = 0, spare_disks = 3,
layout = 18, chunk_size = 524288}
rv = 0
st = 0x698270
subarray = 0x0
frozen = 1
changed = 0
container = 0x0
container_buf = '\000' <repeats 16 times>, "Xb\244",
<incomplete sequence \367>
cfd = -1
dv = 0x0
added_disks = 0
info = {array = {major_version = 0, minor_version = 90,
patch_version = 3, ctime = 1284750066, level = 6, size = 1953514496,
nr_disks = 10, raid_disks = 7, md_minor = 127,
not_persistent = 0, utime = 1329619913, state = 1, active_disks = 7,
working_disks = 10, failed_disks = 0, spare_disks = 3,
layout = 18, chunk_size = 524288}, disk = {number = 0, major = 0,
minor = 0, raid_disk = 0, state = 0}, events = 0, uuid =
{0, 0, 0, 0}, name = '\000' <repeats 32 times>, data_offset = 0,
component_size = 3907028992, custom_array_size = 0,
reshape_active = 0, reshape_progress = 0, recovery_blocked = 0, {
resync_start = 0, recovery_start = 0}, bitmap_offset = 0,
safe_mode_delay = 0, new_level = 5, delta_disks = -1,
new_layout = 18, new_chunk = 524288, errors = 0, cache_size
= 0, mismatch_cnt = 0,
text_version = "0.90", '\000' <repeats 45 times>,
container_member = 0, container_enough = 0,
sys_name = "md127", '\000' <repeats 14 times>, devs = 0x0,
next = 0x0, recovery_fd = 0, state_fd = 0, prev_state = 0,
curr_state = 0, next_state = 0}
sra = 0x698030
#4 0x0000000000407d78 in main (argc=7, argv=0x7fffffffe1a8) at mdadm.c:1688
mode = 7
opt = -1
option_index = -1
c = 0x7fffffffe46e ""
rv = 0
i = 0
chunk = 0
size = -1
array_size = -1
level = 5
layout = 65534
layout_str = 0x0
raiddisks = 6
sparedisks = 0
ident = {devname = 0xffffefbd50d60000 <Address
0xffffefbd50d60000 out of bounds>, uuid_set = 0, uuid = {0, 0, 0,
-136424438},
name =
"\000\177\000\000\000\000\000\000\000\000\000\000\240\336\377\377\377\177\000\000\220\336\377\377\377\177\000\000Uu\307\001",
super_minor = 65534, devices = 0x0, level = 5, raid_disks = 6,
spare_disks = -136421905, st = 0x0, autof = 0,
spare_group = 0x0, bitmap_file = 0x0, bitmap_fd = -1,
container = 0x0, member = 0x0, next = 0x7fffffffdf10, {
assembled = -134227560}}
configfile = 0x0
cp = 0x7ffff7ffd998 ""
update = 0x0
scan = 0
devmode = 0
runstop = 0
readonly = 0
write_behind = 0
bitmap_fd = -1
bitmap_file = 0x0
backup_file = 0x0
invalid_backup = 0
bitmap_chunk = 65534
SparcAdjust = 0
devlist = 0x698010
devlistend = 0x698020
dv = 0x698010
devs_found = 1
verbose = 0
quiet = 0
brief = 0
force = 0
test = 0
export = 0
assume_clean = 0
symlinks = 0x0
grow_continue = 0
autof = 0
homehost = 0x7fffffffdcd0 "localhost"
sys_hostname = "localhost", '\000' <repeats 15 times>, "
\335\377\377\377\177\000\000\270\230\244\367\377\177\000\000\254\222\336\367\377\177\000\000\000\001\001\367\377\177\000\000\003\000\000\000\000\000\000\000\360\337\377\377\377\177\000\000Қ\336\367\377\177\000\000\230\331\377\367\377\177\000\000\000\000\000\000\000\000\000\000P\256\377\367\377\177\000\000X\246\377\367\377\177\000\000\364\307\335\367\377\177\000\000\360\231\244\367\377\177\000\000\350\305\335\367\377\177\000\000\000\000\000\000\001\000\000\000o\b\000\000\001\000\000\000\240\337\377\377\377\177\000\000\260\337\377\377\377\177\000\000\000\346\377\367\377\177\000\000\360\336\377\377\377\177\000\000P\256\377\367\377\177\000\000\260\337\377\377\377\177\000\000\207\360\226|\000\000\000\000\230\331\377\367\377\177\000\000R`\336\367\377\177\000\000\000\000\000\000\000\000\000\000P\256\377\367\377\177\000\000\001",
'\000' <repeats 14 times>
require_homehost = 1
mailaddr = 0x0
program = 0x0
increments = 20
delay = 0
daemonise = 0
pidfile = 0x0
oneshot = 0
spare_sharing = 1
ss = 0x0
writemostly = 0
re_add = 0
shortopt = 0x67d660
"-ABCDEFGIQhVXYWZ:vqb:c:i:l:p:m:n:x:u:c:d:z:U:N:sarfRSow1tye:"
dosyslog = 0
rebuild_map = 0
subarray = 0x0
remove_path = 0x0
udev_filename = 0x0
print_help = 0
outf = 0x7ffff7ffab98
mdfd = 7
freeze_reshape = 0
__func__ = "main"
raid configuration:
/dev/md127:
Version : 0.90
Creation Time : Fri Sep 17 23:01:06 2010
Raid Level : raid6
Array Size : 9767572480 (9315.08 GiB 10001.99 GB)
Used Dev Size : 1953514496 (1863.02 GiB 2000.40 GB)
Raid Devices : 7
Total Devices : 10
Preferred Minor : 127
Persistence : Superblock is persistent
Update Time : Sun Feb 19 07:20:08 2012
State : clean
Active Devices : 7
Working Devices : 10
Failed Devices : 0
Spare Devices : 3
Layout : left-symmetric-6
Chunk Size : 512K
UUID : f863e0f0:f61a8534:26f86d66:2608b129
Events : 0.2116614
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 112 1 active sync /dev/sdh
2 8 0 2 active sync /dev/sda
3 8 48 3 active sync /dev/sdd
4 8 96 4 active sync /dev/sdg
5 8 160 5 active sync /dev/sdk
6 8 80 6 active sync /dev/sdf
7 8 64 - spare /dev/sde
8 8 144 - spare /dev/sdj
9 8 32 - spare /dev/sdc
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: mdadm segfaults on --grow
2012-02-19 3:35 mdadm segfaults on --grow eeeee
@ 2012-02-19 4:00 ` NeilBrown
0 siblings, 0 replies; 2+ messages in thread
From: NeilBrown @ 2012-02-19 4:00 UTC (permalink / raw)
To: eeeee; +Cc: linux-raid
[-- Attachment #1: Type: text/plain, Size: 1671 bytes --]
On Sun, 19 Feb 2012 07:35:08 +0400 eeeee <tw@qwe123.info> wrote:
> i'm doing
> mdadm --grow /dev/md127 -l raid5 -n 6
> and it segfaults!
>
> mdadm-3.2.3
Thanks for the report.
Can you please check if this fixes the problem?
NeilBrown
diff --git a/Grow.c b/Grow.c
index 53a7cad..8198ac3 100644
--- a/Grow.c
+++ b/Grow.c
@@ -1275,7 +1275,7 @@ char *analyse_change(struct mdinfo *info, struct reshape *re)
break;
case 5:
- /* We get to RAID5 for RAID5 or RAID6 */
+ /* We get to RAID5 from RAID5 or RAID6 */
if (re->level != 5 && re->level != 6)
return "Cannot convert to RAID5 from this level";
@@ -1297,11 +1297,27 @@ char *analyse_change(struct mdinfo *info, struct reshape *re)
char layout[40];
char *ls = map_num(r5layout, info->new_layout);
int l;
- strcat(strcpy(layout, ls), "-6");
- l = map_name(r6layout, layout);
- if (l == UnSet)
- return "Cannot find RAID6 layout"
- " to convert to";
+ if (ls) {
+ /* Current RAID6 layout has a RAID5
+ * equivalent - good
+ */
+ strcat(strcpy(layout, ls), "-6");
+ l = map_name(r6layout, layout);
+ if (l == UnSet)
+ return "Cannot find RAID6 layout"
+ " to convert to";
+ } else {
+ /* Current RAID6 has no equivalent.
+ * If it is already a '-6' layout we
+ * can leave it unchanged, else we must
+ * fail
+ */
+ ls = map_num(r6layout, info->new_layout);
+ if (!ls ||
+ strcmp(ls+strlen(ls)-2, "-6") != 0)
+ return "Please specify new layout";
+ l = info->new_layout;
+ }
re->after.layout = l;
}
}
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2012-02-19 4:00 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-19 3:35 mdadm segfaults on --grow eeeee
2012-02-19 4:00 ` NeilBrown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).