hi,
i've a little problem here with raid1 inside domU. My setup is, two block
devices (gnbd) attached to domU (sda1, sdb1) and build raid1 inside domU.
All works fine (mdadm --remove, block-detach, resize, block-attach, mdadm
-add) except the part where i want to grow my raid to the new size (mdadm
--grow .. --size=max). Sometimes (when not much fs load is done in domU) it
works and i "only" get the kernel message "VFS: busy inodes on changed
media.". But all works fine.
But if i have fs load in domU and i make the grow i get "EXT3-fs error (device
md0): ext3_readdir: directory #589900 contains a hole at offset 0" and my fs
is switching to ro mode and nothing works until reboot.
So i decided to switch on DEBUG for my md to see what's happening. So i
recompiled a domU kernel with the only change:
# diff linux-2.6.12-xenU/drivers/md/md.c~ linux-2.6.12-xenU/drivers/md/md.c
55c55
< #define DEBUG 0
---
> #define DEBUG 1
With this kernel my domU works fine with a lot of debugging info on my domU
console until i try to mdadm --set-faulty inside domU (which works without
DEBUG like a charm):
test:~# mdadm --set-faulty /dev/md0 /dev/sda1
Segmentation fault
test:~#
Then i see on my domU console:
general protection fault: 0000 [#1]
SMP
Modules linked in:
CPU: 1
EIP: 0061:[<c024c49f>] Not tainted VLI
EFLAGS: 00010246 (2.6.12.6-xenU)
EIP is at md_error+0x2f/0x120
eax: ffffffe2 ebx: c1304a80 ecx: 00000000 edx: ffffffed
esi: c12d6b80 edi: c1304a80 ebp: c6291ea4 esp: c6291e74
ds: 007b es: 007b ss: 0069
Process mdadm (pid: 1278, threadinfo=c6290000 task=c7ad2020)
Stack: c3cea000 c12d9ab4 c1186300 c7ad2020 f578c040 c111b300 00000001 00000001
00000000 c1304a80 c03ba4ec 00000801 ffffffe2 c024baac c1304a80 c12d6b80
c1304a80 c024bd64 c1304a80 00800001 bfdc30cc c6291ee8 00000060 c6291f64
Call Trace:
[<c024baac>] set_disk_faulty+0x3c/0x50
[<c024bd64>] md_ioctl+0x2a4/0x5a0
[<c016d7c8>] cp_new_stat64+0xf8/0x110
[<c024bac0>] md_ioctl+0x0/0x5a0
[<c0232a3c>] blkdev_ioctl+0x8c/0x440
[<c01764c0>] do_ioctl+0x70/0xa0
[<c01766c5>] vfs_ioctl+0x65/0x1f0
[<c0176895>] sys_ioctl+0x45/0x70
[<c010a6dd>] syscall_call+0x7/0xb
Code: ec 30 89 7d fc 8b 7d 08 89 75 f8 8b 75 0c 85 ff 89 5d f4 0f 84 c6 00 00
00 85 f6 0f 84 7b 00 00 00 8b 4e 2c 85 c9 75 74 8b 45 00 <8b> 10 8b 02 8b 4a
04 8b 58 04 8b 45 00 8b 40 04 89 44 24 14 8b
And my domU can't access any fs anymore but is running.
md is not compiled as module but compiled directly into the kernel so i can
configure my raid per boot command line (extra = "md=0,/dev/sda1,/dev/sdb1").
So my question is, is there any known problem with raid (md) inside a domU?
Why is mdadm working without debugging but prints "Segmentation fault" while
debugging is on?
Are am i doing something wrong?
mdadm growing is working on other machines without xen. The only output on
stock kernel when doing the grow is also "VFS: busy inodes on changed
media.". One different thing is that mdadm --grow on stock kernel results in
a rebuild of the last bits of the raid while making mdadm --grow inside domU
only the size og the raid goes up but no rebuild.
Any help would be appreciated.
I'm using xen-3.0.1 with two dell poweredge 1850 with two 3.2 GHz
Xeons, 8 GB RAM (pae version of xen) and four Intel(R) PRO/1000 as xen hosts.
I build xen with
make XEN_TARGET_X86_PAE=y world
make XEN_TARGET_X86_PAE=y install
only modified the kernel config before for my needs (md inside domU)
linux-2.6-xen-sparse/arch/xen/configs/xenU_defconfig_x86_32
232c232,242
< # CONFIG_MD is not set
---
> CONFIG_MD=y
> CONFIG_BLK_DEV_MD=y
> CONFIG_MD_LINEAR=m
> CONFIG_MD_RAID0=m
> CONFIG_MD_RAID1=y
> CONFIG_MD_RAID10=m
> CONFIG_MD_RAID5=m
> CONFIG_MD_RAID6=m
> CONFIG_MD_MULTIPATH=m
> CONFIG_MD_FAULTY=m
> CONFIG_BLK_DEV_DM=n
and bonding in dom0
linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_x86_32
600c600
< # CONFIG_BONDING is not set
---
> CONFIG_BONDING=m
domU config test.cfg:
cpus = "0-3"
vcpus = "4"
#kernel = "/boot/vmlinuz-2.6.12.6-xenU"
# md debugging on
kernel = "/var/tmp/vmlinuz.test"
memory = 128
name = "test"
vif = [ "mac=XX:XX:XX:XX:XX:XX" ]
dhcp = "off"
ip = "192.168.1.1"
netmask = "255.255.255.0"
gateway = "192.168.1.254"
hostname = "test"
disk = [ "phy:gnbd/test-w1,sda1,w", "phy:gnbd/test-w2,sdb1,w" ]
root = "/dev/md0 ro"
extra = "md=0,/dev/sda1,/dev/sdb1"
--
greetings
eMHa
pgpEJK9X3kJ3k.pgp
Description: PGP signature
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|