* After reshaping raid1 to raid0 with bitmap, then stop md panic [not found] <324320204.17911195.1407221719669.JavaMail.zimbra@redhat.com> @ 2014-08-05 7:03 ` Xiao Ni 2014-08-06 6:37 ` NeilBrown 0 siblings, 1 reply; 6+ messages in thread From: Xiao Ni @ 2014-08-05 7:03 UTC (permalink / raw) To: linux-raid; +Cc: Jes Sorensen Dear all I faced one problem that the system panic after reshaping raid1 to raid0 with bitmap. The dmesg and calltrace information is like this: You can easily reproduce this by those steps: 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal 2. mdadm --wait /dev/md0 3. mdadm --grow -l0 /dev/md0 4. mdadm -S /dev/md0 [ 1485.254389] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 231810 256 [ 1485.265275] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 232322 256 [ 1485.276154] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 232834 256 [ 1485.287025] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 233346 256 [ 1485.297894] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 233858 256 [ 1485.308768] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 234370 256 [ 1485.319639] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 234882 256 [ 1485.330505] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 235394 256 [ 1485.341383] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 235906 256 [ 1485.352256] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 236418 256 [ 1485.363126] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 236930 256 [ 1485.373995] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 237442 256 [ 1485.384865] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 237954 256 [ 1485.395732] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 238466 256 [ 1485.406651] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 238978 256 [ 1485.417543] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 239490 256 [ 1485.428412] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 240002 256 [ 1485.439283] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 240514 256 [ 1485.450156] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 241026 256 [ 1485.461056] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 241538 256 [ 1485.471959] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 242050 256 [ 1485.482832] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 242562 256 [ 1485.493697] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 243074 256 [ 1485.504561] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 243586 256 [ 1485.515438] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 244098 256 [ 1485.526307] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 244610 256 [ 1485.537180] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 245122 256 [ 1485.548027] md/raid0:md0: make_request bug: can't convert block across chunks or bigger than 64k 245634 64 [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference at 0000000000000038 [ 1485.654724] IP: [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 [ 1485.661134] PGD 924a35067 PUD 922a4d067 PMD 0 [ 1485.665735] Oops: 0002 [#1] SMP [ 1485.668992] Modules linked in: raid1 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx ext4 mbcache jbd2 raid0 loop sg iTCO_wdt iTCO_vendor_support nfsd coretemp kvm_intel kvm igb ptp auth_rpcgss crc32c_intel serio_raw pcspkr pps_core nfs_acl i7core_edac lockd shpchp ioatdma lpc_ich dm_multipath acpi_cpufreq mperf edac_core sunrpc mfd_core ipmi_si ipmi_msghandler i2c_i801 dca xfs libcrc32c sd_mod crc_t10dif crct10dif_common sr_mod cdrom mgag200 syscopyarea ata_generic sysfillrect pata_acpi sysimgblt i2c_algo_bit mptsas drm_kms_helper ahci ttm firewire_ohci scsi_transport_sas libahci pata_jmicron mptscsih drm firewire_core mptbase libata i2c_core crc_itu_t dm_mirror dm_region_hash dm_log dm_mod [ 1485.734595] CPU: 13 PID: 2613 Comm: mdadm Tainted: G I -------------- 3.10.0-142.el7.x86_64 #1 [ 1485.744260] Hardware name: SGI.COM AltixXE500/X8DAH, BIOS 1.0b 12/10/2009 [ 1485.751398] task: ffff8809247038e0 ti: ffff88091b614000 task.ti: ffff88091b614000 [ 1485.758908] RIP: 0010:[<ffffffff8148db2e>] [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 [ 1485.767727] RSP: 0018:ffff88091b615c70 EFLAGS: 00010246 [ 1485.773071] RAX: 0000000000000000 RBX: 0000000000000001 RCX: 0000000000000000 [ 1485.780279] RDX: 0000000000001388 RSI: 0000000000000000 RDI: 0000000000020000 [ 1485.787539] RBP: ffff88091b615cc0 R08: 0000000000000003 R09: 0000000000000000 [ 1485.794754] R10: fffffffffffffb34 R11: 0000000000000000 R12: 0000000000000800 [ 1485.801961] R13: ffff88091f5e7800 R14: 0000000000000008 R15: ffff88048c367e00 [ 1485.809221] FS: 00007f0269b4d740(0000) GS:ffff88093fd40000(0000) knlGS:0000000000000000 [ 1485.817424] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 1485.823239] CR2: 0000000000000038 CR3: 000000091b595000 CR4: 00000000000007e0 [ 1485.830462] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 1485.837669] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 1485.844927] Stack: [ 1485.846937] ffff88091b615fd8 ffff88091b615fd8 ffff88091f5e7b50 0000000000020000 [ 1485.854481] 0000000084b198ea ffff88048c367e00 ffff88091f5e7800 0000000000002710 [ 1485.861949] 0000000000000000 ffff88091f5e7800 ffff88091b615ce8 ffffffff8148ddd4 [ 1485.869451] Call Trace: [ 1485.871914] [<ffffffff8148ddd4>] bitmap_flush+0x34/0x70 [ 1485.877292] [<ffffffff814872d0>] __md_stop_writes+0x40/0x80 [ 1485.882983] [<ffffffff814882b9>] do_md_stop+0x99/0x4b0 [ 1485.888279] [<ffffffff811504f5>] ? filemap_write_and_wait+0x55/0x60 [ 1485.894626] [<ffffffff8148997e>] md_ioctl+0xace/0x1940 [ 1485.899853] [<ffffffff811ce742>] ? path_openat+0xc2/0x4c0 [ 1485.905335] [<ffffffff812af3f4>] blkdev_ioctl+0x224/0x7e0 [ 1485.910818] [<ffffffff811f7861>] block_ioctl+0x41/0x50 [ 1485.916040] [<ffffffff811d1345>] do_vfs_ioctl+0x2e5/0x4c0 [ 1485.921525] [<ffffffff81265ebe>] ? file_has_perm+0xae/0xc0 [ 1485.927093] [<ffffffff811d15c1>] SyS_ioctl+0xa1/0xc0 [ 1485.932145] [<ffffffff815f9519>] system_call_fastpath+0x16/0x1b [ 1485.938144] Code: 20 02 00 00 48 83 c4 28 5b 41 5c 41 5d 41 5e 41 5f 5d c3 66 2e 0f 1f 84 00 00 00 00 00 49 8b 85 48 01 00 00 49 8b 95 80 03 00 00 <48> 89 50 38 eb b7 0f 1f 40 00 49 8b 85 48 01 00 00 48 bf ff ff [ 1485.958086] RIP [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 [ 1485.964445] RSP <ffff88091b615c70> [ 1485.967926] CR2: 0000000000000038 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: After reshaping raid1 to raid0 with bitmap, then stop md panic 2014-08-05 7:03 ` After reshaping raid1 to raid0 with bitmap, then stop md panic Xiao Ni @ 2014-08-06 6:37 ` NeilBrown 2014-08-07 10:03 ` Xiao Ni 0 siblings, 1 reply; 6+ messages in thread From: NeilBrown @ 2014-08-06 6:37 UTC (permalink / raw) To: Xiao Ni; +Cc: linux-raid, Jes Sorensen [-- Attachment #1: Type: text/plain, Size: 1769 bytes --] On Tue, 5 Aug 2014 03:03:06 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > Dear all > > > I faced one problem that the system panic after reshaping raid1 to raid0 with bitmap. > The dmesg and calltrace information is like this: > > You can easily reproduce this by those steps: > 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal > 2. mdadm --wait /dev/md0 > 3. mdadm --grow -l0 /dev/md0 > 4. mdadm -S /dev/md0 ... > > [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference at 0000000000000038 > [ 1485.654724] IP: [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 Yes, RAID0 doesn't support bitmaps, so this cannot possibly work. Following patch should turn the crash into a clean failure. Thanks for the report, NeilBrown From 1bdb20e16166240a4ca3b861c48defefaf218874 Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.de> Date: Wed, 6 Aug 2014 16:34:27 +1000 Subject: [PATCH] md: check for bitmap compatability when changing raid levels. If an array has a bitmap, then it cannot be converted to a level which does not support bitmaps. Reported-by: Xiao Ni <xni@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de> diff --git a/drivers/md/md.c b/drivers/md/md.c index 1379b1a3b9ff..3bd13b276e45 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char *buf, size_t len) mdname(mddev), clevel); return -EINVAL; } + if (mddev->bitmap && !pers->quiesce) { + module_put(pers->owner); + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", + mdname(mddev), clevel); + return -EINVAL; + } rdev_for_each(rdev, mddev) rdev->new_raid_disk = rdev->raid_disk; [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 828 bytes --] ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: After reshaping raid1 to raid0 with bitmap, then stop md panic 2014-08-06 6:37 ` NeilBrown @ 2014-08-07 10:03 ` Xiao Ni 2014-08-07 10:29 ` NeilBrown 0 siblings, 1 reply; 6+ messages in thread From: Xiao Ni @ 2014-08-07 10:03 UTC (permalink / raw) To: NeilBrown; +Cc: linux-raid, Jes Sorensen ----- Original Message ----- > From: "NeilBrown" <neilb@suse.de> > To: "Xiao Ni" <xni@redhat.com> > Cc: linux-raid@vger.kernel.org, "Jes Sorensen" <jes.sorensen@redhat.com> > Sent: Wednesday, August 6, 2014 2:37:02 PM > Subject: Re: After reshaping raid1 to raid0 with bitmap, then stop md panic > > On Tue, 5 Aug 2014 03:03:06 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > Dear all > > > > > > I faced one problem that the system panic after reshaping raid1 to raid0 > > with bitmap. > > The dmesg and calltrace information is like this: > > > > You can easily reproduce this by those steps: > > 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal > > 2. mdadm --wait /dev/md0 > > 3. mdadm --grow -l0 /dev/md0 > > 4. mdadm -S /dev/md0 > ... > > > > [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference at > > 0000000000000038 > > [ 1485.654724] IP: [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 > > Yes, RAID0 doesn't support bitmaps, so this cannot possibly work. > > Following patch should turn the crash into a clean failure. > > Thanks for the report, > NeilBrown > > > From 1bdb20e16166240a4ca3b861c48defefaf218874 Mon Sep 17 00:00:00 2001 > From: NeilBrown <neilb@suse.de> > Date: Wed, 6 Aug 2014 16:34:27 +1000 > Subject: [PATCH] md: check for bitmap compatability when changing raid > levels. > > If an array has a bitmap, then it cannot be converted to > a level which does not support bitmaps. > > Reported-by: Xiao Ni <xni@redhat.com> > Signed-off-by: NeilBrown <neilb@suse.de> > > diff --git a/drivers/md/md.c b/drivers/md/md.c > index 1379b1a3b9ff..3bd13b276e45 100644 > --- a/drivers/md/md.c > +++ b/drivers/md/md.c > @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char *buf, > size_t len) > mdname(mddev), clevel); > return -EINVAL; > } > + if (mddev->bitmap && !pers->quiesce) { > + module_put(pers->owner); > + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", > + mdname(mddev), clevel); > + return -EINVAL; > + } > > rdev_for_each(rdev, mddev) > rdev->new_raid_disk = rdev->raid_disk; > Hi Neil I have tried the patch, but it can reshape to raid0 still, then stop the raid0, the system panics. What does pers->quiesce mean? I'm not familiar with md code. Best Regards Xiao ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: After reshaping raid1 to raid0 with bitmap, then stop md panic 2014-08-07 10:03 ` Xiao Ni @ 2014-08-07 10:29 ` NeilBrown 2014-08-08 5:45 ` NeilBrown 0 siblings, 1 reply; 6+ messages in thread From: NeilBrown @ 2014-08-07 10:29 UTC (permalink / raw) To: Xiao Ni; +Cc: linux-raid, Jes Sorensen [-- Attachment #1: Type: text/plain, Size: 3037 bytes --] On Thu, 7 Aug 2014 06:03:37 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > ----- Original Message ----- > > From: "NeilBrown" <neilb@suse.de> > > To: "Xiao Ni" <xni@redhat.com> > > Cc: linux-raid@vger.kernel.org, "Jes Sorensen" <jes.sorensen@redhat.com> > > Sent: Wednesday, August 6, 2014 2:37:02 PM > > Subject: Re: After reshaping raid1 to raid0 with bitmap, then stop md panic > > > > On Tue, 5 Aug 2014 03:03:06 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > > > Dear all > > > > > > > > > I faced one problem that the system panic after reshaping raid1 to raid0 > > > with bitmap. > > > The dmesg and calltrace information is like this: > > > > > > You can easily reproduce this by those steps: > > > 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal > > > 2. mdadm --wait /dev/md0 > > > 3. mdadm --grow -l0 /dev/md0 > > > 4. mdadm -S /dev/md0 > > ... > > > > > > [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference at > > > 0000000000000038 > > > [ 1485.654724] IP: [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 > > > > Yes, RAID0 doesn't support bitmaps, so this cannot possibly work. > > > > Following patch should turn the crash into a clean failure. > > > > Thanks for the report, > > NeilBrown > > > > > > From 1bdb20e16166240a4ca3b861c48defefaf218874 Mon Sep 17 00:00:00 2001 > > From: NeilBrown <neilb@suse.de> > > Date: Wed, 6 Aug 2014 16:34:27 +1000 > > Subject: [PATCH] md: check for bitmap compatability when changing raid > > levels. > > > > If an array has a bitmap, then it cannot be converted to > > a level which does not support bitmaps. > > > > Reported-by: Xiao Ni <xni@redhat.com> > > Signed-off-by: NeilBrown <neilb@suse.de> > > > > diff --git a/drivers/md/md.c b/drivers/md/md.c > > index 1379b1a3b9ff..3bd13b276e45 100644 > > --- a/drivers/md/md.c > > +++ b/drivers/md/md.c > > @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char *buf, > > size_t len) > > mdname(mddev), clevel); > > return -EINVAL; > > } > > + if (mddev->bitmap && !pers->quiesce) { > > + module_put(pers->owner); > > + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", > > + mdname(mddev), clevel); > > + return -EINVAL; > > + } > > > > rdev_for_each(rdev, mddev) > > rdev->new_raid_disk = rdev->raid_disk; > > > > Hi Neil > > I have tried the patch, but it can reshape to raid0 still, then stop the raid0, the system > panics. > > What does pers->quiesce mean? I'm not familiar with md code. > > Best Regards > Xiao "quiesce" is a function that makes the array "quiescent" - it stops all IO from happening. The set_bitmap_file() function has: if (mddev->pers) { if (!mddev->pers->quiesce) return -EBUSY; So I thought it was safe to assume that if there was a quiesce function then the personality handled bitmaps. Obviously not. I'll have to fix that up... Thanks, NeilBrown [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 828 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: After reshaping raid1 to raid0 with bitmap, then stop md panic 2014-08-07 10:29 ` NeilBrown @ 2014-08-08 5:45 ` NeilBrown 2014-08-08 7:34 ` Xiao Ni 0 siblings, 1 reply; 6+ messages in thread From: NeilBrown @ 2014-08-08 5:45 UTC (permalink / raw) To: Xiao Ni; +Cc: linux-raid, Jes Sorensen [-- Attachment #1: Type: text/plain, Size: 4290 bytes --] On Thu, 7 Aug 2014 20:29:13 +1000 NeilBrown <neilb@suse.de> wrote: > On Thu, 7 Aug 2014 06:03:37 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > > > > > ----- Original Message ----- > > > From: "NeilBrown" <neilb@suse.de> > > > To: "Xiao Ni" <xni@redhat.com> > > > Cc: linux-raid@vger.kernel.org, "Jes Sorensen" <jes.sorensen@redhat.com> > > > Sent: Wednesday, August 6, 2014 2:37:02 PM > > > Subject: Re: After reshaping raid1 to raid0 with bitmap, then stop md panic > > > > > > On Tue, 5 Aug 2014 03:03:06 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > > > > > Dear all > > > > > > > > > > > > I faced one problem that the system panic after reshaping raid1 to raid0 > > > > with bitmap. > > > > The dmesg and calltrace information is like this: > > > > > > > > You can easily reproduce this by those steps: > > > > 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal > > > > 2. mdadm --wait /dev/md0 > > > > 3. mdadm --grow -l0 /dev/md0 > > > > 4. mdadm -S /dev/md0 > > > ... > > > > > > > > [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference at > > > > 0000000000000038 > > > > [ 1485.654724] IP: [<ffffffff8148db2e>] bitmap_daemon_work+0x24e/0x450 > > > > > > Yes, RAID0 doesn't support bitmaps, so this cannot possibly work. > > > > > > Following patch should turn the crash into a clean failure. > > > > > > Thanks for the report, > > > NeilBrown > > > > > > > > > From 1bdb20e16166240a4ca3b861c48defefaf218874 Mon Sep 17 00:00:00 2001 > > > From: NeilBrown <neilb@suse.de> > > > Date: Wed, 6 Aug 2014 16:34:27 +1000 > > > Subject: [PATCH] md: check for bitmap compatability when changing raid > > > levels. > > > > > > If an array has a bitmap, then it cannot be converted to > > > a level which does not support bitmaps. > > > > > > Reported-by: Xiao Ni <xni@redhat.com> > > > Signed-off-by: NeilBrown <neilb@suse.de> > > > > > > diff --git a/drivers/md/md.c b/drivers/md/md.c > > > index 1379b1a3b9ff..3bd13b276e45 100644 > > > --- a/drivers/md/md.c > > > +++ b/drivers/md/md.c > > > @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char *buf, > > > size_t len) > > > mdname(mddev), clevel); > > > return -EINVAL; > > > } > > > + if (mddev->bitmap && !pers->quiesce) { > > > + module_put(pers->owner); > > > + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", > > > + mdname(mddev), clevel); > > > + return -EINVAL; > > > + } > > > > > > rdev_for_each(rdev, mddev) > > > rdev->new_raid_disk = rdev->raid_disk; > > > > > > > Hi Neil > > > > I have tried the patch, but it can reshape to raid0 still, then stop the raid0, the system > > panics. > > > > What does pers->quiesce mean? I'm not familiar with md code. > > > > Best Regards > > Xiao > > > "quiesce" is a function that makes the array "quiescent" - it stops all IO > from happening. > The set_bitmap_file() function has: > > if (mddev->pers) { > if (!mddev->pers->quiesce) > return -EBUSY; > > > So I thought it was safe to assume that if there was a quiesce function then > the personality handled bitmaps. Obviously not. > I'll have to fix that up... Can you confirm that this works please? Thanks. NeilBrown From a8461a61c241a25afedbe493c13d98a6e0cf4246 Mon Sep 17 00:00:00 2001 From: NeilBrown <neilb@suse.de> Date: Wed, 6 Aug 2014 16:34:27 +1000 Subject: [PATCH] md/raid0: check for bitmap compatability when changing raid levels. If an array has a bitmap, then it cannot be converted to raid0. Reported-by: Xiao Ni <xni@redhat.com> Signed-off-by: NeilBrown <neilb@suse.de> diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c index 407a99e46f69..cf91f5910c7c 100644 --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -685,6 +685,12 @@ static void *raid0_takeover(struct mddev *mddev) * raid10 - assuming we have all necessary active disks * raid1 - with (N -1) mirror drives faulty */ + + if (mddev->bitmap) { + printk(KERN_ERR "md/raid0: %s: cannot takeover array with bitmap\n", + mdname(mddev)); + return ERR_PTR(-EBUSY); + } if (mddev->level == 4) return raid0_takeover_raid45(mddev); [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 828 bytes --] ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: After reshaping raid1 to raid0 with bitmap, then stop md panic 2014-08-08 5:45 ` NeilBrown @ 2014-08-08 7:34 ` Xiao Ni 0 siblings, 0 replies; 6+ messages in thread From: Xiao Ni @ 2014-08-08 7:34 UTC (permalink / raw) To: NeilBrown; +Cc: linux-raid, Jes Sorensen ----- Original Message ----- > From: "NeilBrown" <neilb@suse.de> > To: "Xiao Ni" <xni@redhat.com> > Cc: linux-raid@vger.kernel.org, "Jes Sorensen" <jes.sorensen@redhat.com> > Sent: Friday, August 8, 2014 1:45:06 PM > Subject: Re: After reshaping raid1 to raid0 with bitmap, then stop md panic > > On Thu, 7 Aug 2014 20:29:13 +1000 NeilBrown <neilb@suse.de> wrote: > > > On Thu, 7 Aug 2014 06:03:37 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > > > > > > > > > ----- Original Message ----- > > > > From: "NeilBrown" <neilb@suse.de> > > > > To: "Xiao Ni" <xni@redhat.com> > > > > Cc: linux-raid@vger.kernel.org, "Jes Sorensen" > > > > <jes.sorensen@redhat.com> > > > > Sent: Wednesday, August 6, 2014 2:37:02 PM > > > > Subject: Re: After reshaping raid1 to raid0 with bitmap, then stop md > > > > panic > > > > > > > > On Tue, 5 Aug 2014 03:03:06 -0400 (EDT) Xiao Ni <xni@redhat.com> wrote: > > > > > > > > > Dear all > > > > > > > > > > > > > > > I faced one problem that the system panic after reshaping raid1 to > > > > > raid0 > > > > > with bitmap. > > > > > The dmesg and calltrace information is like this: > > > > > > > > > > You can easily reproduce this by those steps: > > > > > 1. mdadm -CR /dev/md0 -l1 -n2 /dev/loop[0-1] --bitmap=internal > > > > > 2. mdadm --wait /dev/md0 > > > > > 3. mdadm --grow -l0 /dev/md0 > > > > > 4. mdadm -S /dev/md0 > > > > ... > > > > > > > > > > [ 1485.646746] BUG: unable to handle kernel NULL pointer dereference > > > > > at > > > > > 0000000000000038 > > > > > [ 1485.654724] IP: [<ffffffff8148db2e>] > > > > > bitmap_daemon_work+0x24e/0x450 > > > > > > > > Yes, RAID0 doesn't support bitmaps, so this cannot possibly work. > > > > > > > > Following patch should turn the crash into a clean failure. > > > > > > > > Thanks for the report, > > > > NeilBrown > > > > > > > > > > > > From 1bdb20e16166240a4ca3b861c48defefaf218874 Mon Sep 17 00:00:00 2001 > > > > From: NeilBrown <neilb@suse.de> > > > > Date: Wed, 6 Aug 2014 16:34:27 +1000 > > > > Subject: [PATCH] md: check for bitmap compatability when changing raid > > > > levels. > > > > > > > > If an array has a bitmap, then it cannot be converted to > > > > a level which does not support bitmaps. > > > > > > > > Reported-by: Xiao Ni <xni@redhat.com> > > > > Signed-off-by: NeilBrown <neilb@suse.de> > > > > > > > > diff --git a/drivers/md/md.c b/drivers/md/md.c > > > > index 1379b1a3b9ff..3bd13b276e45 100644 > > > > --- a/drivers/md/md.c > > > > +++ b/drivers/md/md.c > > > > @@ -3500,6 +3500,12 @@ level_store(struct mddev *mddev, const char > > > > *buf, > > > > size_t len) > > > > mdname(mddev), clevel); > > > > return -EINVAL; > > > > } > > > > + if (mddev->bitmap && !pers->quiesce) { > > > > + module_put(pers->owner); > > > > + printk(KERN_WARNING "md: %s: %s does not support a bitmap\n", > > > > + mdname(mddev), clevel); > > > > + return -EINVAL; > > > > + } > > > > > > > > rdev_for_each(rdev, mddev) > > > > rdev->new_raid_disk = rdev->raid_disk; > > > > > > > > > > Hi Neil > > > > > > I have tried the patch, but it can reshape to raid0 still, then stop > > > the raid0, the system > > > panics. > > > > > > What does pers->quiesce mean? I'm not familiar with md code. > > > > > > Best Regards > > > Xiao > > > > > > "quiesce" is a function that makes the array "quiescent" - it stops all IO > > from happening. > > The set_bitmap_file() function has: > > > > if (mddev->pers) { > > if (!mddev->pers->quiesce) > > return -EBUSY; > > > > > > So I thought it was safe to assume that if there was a quiesce function > > then > > the personality handled bitmaps. Obviously not. > > I'll have to fix that up... > > Can you confirm that this works please? > Thanks. > > NeilBrown > > From a8461a61c241a25afedbe493c13d98a6e0cf4246 Mon Sep 17 00:00:00 2001 > From: NeilBrown <neilb@suse.de> > Date: Wed, 6 Aug 2014 16:34:27 +1000 > Subject: [PATCH] md/raid0: check for bitmap compatability when changing raid > levels. > > If an array has a bitmap, then it cannot be converted to raid0. > > Reported-by: Xiao Ni <xni@redhat.com> > Signed-off-by: NeilBrown <neilb@suse.de> > > diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c > index 407a99e46f69..cf91f5910c7c 100644 > --- a/drivers/md/raid0.c > +++ b/drivers/md/raid0.c > @@ -685,6 +685,12 @@ static void *raid0_takeover(struct mddev *mddev) > * raid10 - assuming we have all necessary active disks > * raid1 - with (N -1) mirror drives faulty > */ > + > + if (mddev->bitmap) { > + printk(KERN_ERR "md/raid0: %s: cannot takeover array with bitmap\n", > + mdname(mddev)); > + return ERR_PTR(-EBUSY); > + } > if (mddev->level == 4) > return raid0_takeover_raid45(mddev); > > > > Hi Neil The problem can be fixed by this patch. Best Regards Xiao ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-08-08 7:34 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <324320204.17911195.1407221719669.JavaMail.zimbra@redhat.com> 2014-08-05 7:03 ` After reshaping raid1 to raid0 with bitmap, then stop md panic Xiao Ni 2014-08-06 6:37 ` NeilBrown 2014-08-07 10:03 ` Xiao Ni 2014-08-07 10:29 ` NeilBrown 2014-08-08 5:45 ` NeilBrown 2014-08-08 7:34 ` Xiao Ni
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).