MD hangs while removing spare

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Here is a bug report where MD hanged while removing a spare disk.

Kernel is 3.0.43 vanilla
I had to hard reset the machine to restore functionality.
I cannot make further tests because the machine is in production, however I hope I have collected enough information before resetting.

Here is what happened:

I had a defective disk giving me a lot of messages like this:

[758175.598298] sd 4:0:8:0: task abort: SUCCESS scmd(ffff8818249a6c00) [758475.599357] sd 4:0:8:0: attempting task abort! scmd(ffff88181b32e200)
        [758475.599365] sd 4:0:8:0: [sdac] CDB: Inquiry: 12 00 00 00 24 00
[758475.599379] scsi target4:0:8: handle(0x0019), sas_address(0x4433221108000000), phy(8)
    .....
[758511.407803] scsi target4:0:8: enclosure_logical_id(0x500062b2000c2f80), slot(8) [758515.407738] scsi target4:0:8: target reset: SUCCESS scmd(ffff88181b32e200) [758525.406852] sd 4:0:8:0: attempting task abort! scmd(ffff88181b32e200) [758525.406858] sd 4:0:8:0: [sdac] CDB: Test Unit Ready: 00 00 00 00 00 00 [758525.406868] scsi target4:0:8: handle(0x0019), sas_address(0x4433221108000000), phy(8) [758525.406872] scsi target4:0:8: enclosure_logical_id(0x500062b2000c2f80), slot(8) [758529.407457] sd 4:0:8:0: task abort: SUCCESS scmd(ffff88181b32e200) [758529.407465] mpt2sas0: attempting host reset! scmd(ffff88181b32e200)
        [758529.407469] sd 4:0:8:0: [sdac] CDB: Inquiry: 12 00 00 00 24 00
        [758529.407532] mpt2sas0: sending diag reset !!
        [758530.550786] mpt2sas0: diag reset: SUCCESS
[758530.783419] mpt2sas0: LSISAS2116: FWVersion(12.00.00.00), ChipRevision(0x02), BiosVersion(07.23.01.00) [758530.783423] mpt2sas0: Protocol=(Initiator,Target), Capabilities=(TLR,EEDP,Snapshot Buffer,Diag Trace Buffer,Task Set Full,NCQ)
        [758530.783489] mpt2sas0: sending port enable !!
        [758546.955835] mpt2sas0: port enable: SUCCESS
        [758546.956038] mpt2sas0: _scsih_search_responding_sas_devices
[758546.957472] scsi target4:0:0: handle(0x0011), sas_addr(0x4433221100000000), enclosure logical id(0x500062b2000c2f80), slot(0) [758546.957554] scsi target4:0:1: handle(0x0012), sas_addr(0x4433221101000000), enclosure logical id(0x500062b2000c2f80), slot(1) [758546.957634] scsi target4:0:2: handle(0x0013), sas_addr(0x4433221102000000), enclosure logical id(0x500062b2000c2f80), slot(2) [758546.957711] scsi target4:0:3: handle(0x0014), sas_addr(0x4433221103000000), enclosure logical id(0x500062b2000c2f80), slot(3) [758546.957788] scsi target4:0:4: handle(0x0015), sas_addr(0x4433221104000000), enclosure logical id(0x500062b2000c2f80), slot(4) [758546.957865] scsi target4:0:5: handle(0x0016), sas_addr(0x4433221105000000), enclosure logical id(0x500062b2000c2f80), slot(5) [758546.957976] scsi target4:0:6: handle(0x0017), sas_addr(0x4433221106000000), enclosure logical id(0x500062b2000c2f80), slot(6) [758546.958061] scsi target4:0:7: handle(0x0018), sas_addr(0x4433221107000000), enclosure logical id(0x500062b2000c2f80), slot(7) [758546.958138] scsi target4:0:9: handle(0x0019), sas_addr(0x4433221109000000), enclosure logical id(0x500062b2000c2f80), slot(9)
        [758546.958141]         handle changed from(0x001a)!!!
[758546.958218] scsi target4:0:10: handle(0x001a), sas_addr(0x443322110a000000), enclosure logical id(0x500062b2000c2f80), slot(10)
        [758546.958222]         handle changed from(0x001b)!!!
[758546.958297] scsi target4:0:11: handle(0x001b), sas_addr(0x443322110b000000), enclosure logical id(0x500062b2000c2f80), slot(11)
        [758546.958300]         handle changed from(0x001c)!!!
[758546.958375] scsi target4:0:12: handle(0x001c), sas_addr(0x443322110c000000), enclosure logical id(0x500062b2000c2f80), slot(12)
        [758546.958379]         handle changed from(0x001d)!!!
[758546.958454] scsi target4:0:13: handle(0x001d), sas_addr(0x443322110d000000), enclosure logical id(0x500062b2000c2f80), slot(13)
        [758546.958457]         handle changed from(0x001e)!!!
[758546.958537] scsi target4:0:14: handle(0x001e), sas_addr(0x443322110e000000), enclosure logical id(0x500062b2000c2f80), slot(14)
        [758546.958541]         handle changed from(0x001f)!!!
[758546.958673] scsi target4:0:15: handle(0x001f), sas_addr(0x443322110f000000), enclosure logical id(0x500062b2000c2f80), slot(15)
        [758546.958677]         handle changed from(0x0020)!!!
[758546.959302] scsi target4:0:8: handle(0x0020), sas_addr(0x4433221108000000), enclosure logical id(0x500062b2000c2f80), slot(8)
        [758546.959306]         handle changed from(0x0019)!!!
        [758546.959488] mpt2sas0: _scsih_search_responding_raid_devices
        [758546.959491] mpt2sas0: _scsih_search_responding_expanders
[758546.959496] mpt2sas0: host reset: SUCCESS scmd(ffff88181b32e200)

and smartctl -a on that disk would take a very long time to complete.

That was a spare on array md23 .
md23 is a raid5 array with active internal bitmaps.

I proceeded to remove it.

I admit I have not chosen the cleanest way to remove it: I simply pulled it out. I had an udev script to notify MD of drive removals which detects drives disappearing and invokes "mdadm -If drivename" which is invoked just after the drive is pulled out of the slot and not before (obviously). Well, this script hanged, with all MD with it. The udev script and hence mdadm -If is called twice, once for sdac and once for sdac1 (array is on sdac1). Both are hanged, in different places as you can see below

In dmesg I could see:
[857683.687448] br0: topology change detected, propagating
[858132.445242] sd 4:0:8:0: [sdac] Synchronizing SCSI cache
[858132.445286] sd 4:0:8:0: [sdac] Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
[858132.537116] md/raid:md23: Disk failure on sdac1, disabling device.
[858132.537118] md/raid:md23: Operation continuing on 5 devices.
[858132.581365] md: unbind<sdac1>
[858192.476427] INFO: rcu_sched_state detected stall on CPU 3 (t=15000 jiffies) [858356.198809] INFO: task fsnotify_mark:93 blocked for more than 120 seconds. [858356.206685] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[858356.215653] fsnotify_mark   D ffff880c24da03c0     0    93 2 0x00000000
[858356.215664] ffff880c24da9c50 0000000000000046 00000000000004ae 0000000000000000 [858356.215680] 0000000000012a80 ffff880c24da9fd8 ffff880c24da8010 0000000000012a80 [858356.215694] ffff880c24da9fd8 0000000000012a80 ffff880c273d5bc0 ffff880c24da0000
[858356.215709] Call Trace:
[858356.215722]  [<ffffffff815ec4ff>] schedule+0x3f/0x60
[858356.215730]  [<ffffffff815ec9ad>] schedule_timeout+0x1fd/0x2e0
[858356.215742] [<ffffffff81106c61>] ? __perf_event_task_sched_out+0x31/0x60
[858356.215751]  [<ffffffff815ec33b>] wait_for_common+0xdb/0x180
[858356.215762]  [<ffffffff8105b1d0>] ? try_to_wake_up+0x2b0/0x2b0
[858356.215773]  [<ffffffff810d8de0>] ? synchronize_rcu_bh+0x60/0x60
[858356.215781]  [<ffffffff815ec4bd>] wait_for_completion+0x1d/0x20
[858356.215789]  [<ffffffff810d8e37>] synchronize_sched+0x57/0x60
[858356.215799]  [<ffffffff81081ba0>] ? alloc_pid+0x210/0x210
[858356.215810]  [<ffffffff8108a8c4>] __synchronize_srcu+0x74/0xd0
[858356.215819]  [<ffffffff8108a955>] synchronize_srcu+0x15/0x20
[858356.215829]  [<ffffffff811ab72d>] fsnotify_mark_destroy+0x9d/0x170
[858356.215838]  [<ffffffff81085210>] ? wake_up_bit+0x40/0x40
[858356.215846] [<ffffffff811ab690>] ? fsnotify_set_mark_ignored_mask_locked+0x40/0x40
[858356.215856]  [<ffffffff81084ca6>] kthread+0x96/0xa0
[858356.215866]  [<ffffffff815f7a24>] kernel_thread_helper+0x4/0x10
[858356.215875]  [<ffffffff81084c10>] ? kthread_worker_fn+0x190/0x190
[858356.215884]  [<ffffffff815f7a20>] ? gs_change+0x13/0x13
.......

I have kept record of where the most important processes of the system hanged:

mdadm -If sdac1
15644 (mdadm) D 15639 926 926 0 -1 4202752 380 0 5 0 0 2 0 0 20 0 1 0 85814051 13864960 288 18446744073709551615 4194304 4735876 140736053491552 140736053487896 140710797018000 0 0 0 0 18446744071579733559 0 0 17 18 0 0 4 0 0
            [<ffffffff810d8e37>] synchronize_sched+0x57/0x60
            [<ffffffff814a3d3d>] unbind_rdev_from_array+0xad/0x140
            [<ffffffff814aa3d6>] kick_rdev_from_array+0x16/0x30
            [<ffffffff814ab792>] state_store+0xa2/0x1b0
            [<ffffffff814a3325>] rdev_attr_store+0xb5/0xd0
            [<ffffffff811e213f>] sysfs_write_file+0xef/0x170
            [<ffffffff8116ff98>] vfs_write+0xc8/0x190
            [<ffffffff81170151>] sys_write+0x51/0x90
            [<ffffffff815f6902>] system_call_fastpath+0x16/0x1b
            [<ffffffffffffffff>] 0xffffffffffffffff


mdadm -If sdac
15736 (mdadm) S 15731 926 926 0 -1 4202496 305 0 0 0 0 0 0 0 20 0 1 0 85820253 13660160 226 18446744073709551615 4194304 4735876 140734908711920 140734908709416 139865605182256 0 0 0 0 18446744071583714500 0 0 17 18 0 0 0 0 0
            [<ffffffff814a4cc4>] md_seq_show+0x104/0x5b0
            [<ffffffff81191e31>] seq_read+0x291/0x420
            [<ffffffff811cdcd1>] proc_reg_read+0x81/0xc0
            [<ffffffff81170255>] vfs_read+0xc5/0x190
            [<ffffffff81170421>] sys_read+0x51/0x90
            [<ffffffff815f6902>] system_call_fastpath+0x16/0x1b
            [<ffffffffffffffff>] 0xffffffffffffffff


/sbin/mdadm--monitor--pid-file/var/run/mdadm/monitor.pid--daemonise--scan--syslog
5349 (mdadm) S 1 5349 5349 0 -1 4202816 1108 0 0 0 71 60 0 0 20 0 1 0 4331 13930496 229 18446744073709551615 4194304 4735876 140735159219488 140735159212296 140547278258103 0 0 0 0 18446744071583745807 0 0 17 20 0 0 0 0 0
            [<ffffffff814ac70f>] md_ioctl+0x8f/0x800
            [<ffffffff812e31c8>] __blkdev_driver_ioctl+0x28/0x30
            [<ffffffff812e36de>] blkdev_ioctl+0x22e/0x750
            [<ffffffff811a415c>] block_ioctl+0x3c/0x40
            [<ffffffff81181939>] do_vfs_ioctl+0x99/0x350
            [<ffffffff81181c91>] sys_ioctl+0xa1/0xb0
            [<ffffffff815f6902>] system_call_fastpath+0x16/0x1b
            [<ffffffffffffffff>] 0xffffffffffffffff

md (kernel thread)
86 (md) S 2 0 0 0 -1 2216722496 0 0 0 0 0 0 0 0 0 -20 1 0 301 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071579363557 0 0 17 15 0 0 0 0 0
            [<ffffffff8107e8e5>] rescuer_thread+0x2a5/0x2d0
            [<ffffffff81084ca6>] kthread+0x96/0xa0
            [<ffffffff815f7a24>] kernel_thread_helper+0x4/0x10
            [<ffffffffffffffff>] 0xffffffffffffffff


md23_raid5 (kernel thread) (the hanged array)
2195 (md23_raid5) S 2 0 0 0 -1 2149613632 0 0 0 0 0 331114 0 0 20 0 1 0 1637 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483391 256 18446744071583719808 0 0 17 9 0 0 8061 0 0
            [<ffffffff814a6180>] md_thread+0xf0/0x150
            [<ffffffff81084ca6>] kthread+0x96/0xa0
            [<ffffffff815f7a24>] kernel_thread_helper+0x4/0x10
            [<ffffffffffffffff>] 0xffffffffffffffff

md22_raid5 (kerrnel thread, another array, for comparison)
2188 (md22_raid5) S 2 0 0 0 -1 2149613632 0 0 0 0 0 345593 0 0 20 0 1 0 1635 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483391 256 18446744071583719808 0 0 17 0 0 0 21179 0 0
            [<ffffffff814a6180>] md_thread+0xf0/0x150
            [<ffffffff81084ca6>] kthread+0x96/0xa0
            [<ffffffff815f7a24>] kernel_thread_helper+0x4/0x10
            [<ffffffffffffffff>] 0xffffffffffffffff


Even cat or less /proc/mdstat hang!

less /proc/mdstat
15647 (less) S 15201 15647 15187 34819 15647 4202496 340 1491 0 0 0 0 0 0 20 0 1 0 85815132 11137024 228 18446744073709551615 4194304 4324420 140735276042320 140735276041400 139882379309872 0 0 4 134742018 18446744071583714500 0 0 17 2 0 0 0 0 0
            [<ffffffff814a4cc4>] md_seq_show+0x104/0x5b0
            [<ffffffff81191e31>] seq_read+0x291/0x420
            [<ffffffff811cdcd1>] proc_reg_read+0x81/0xc0
            [<ffffffff81170255>] vfs_read+0xc5/0x190
            [<ffffffff81170421>] sys_read+0x51/0x90
            [<ffffffff815f6902>] system_call_fastpath+0x16/0x1b
            [<ffffffffffffffff>] 0xffffffffffffffff


cat /proc/mdstat
15696 (cat) S 15678 15696 15678 34830 15696 4202496 201 0 0 0 0 0 0 0 20 0 1 0 85818279 4415488 89 18446744073709551615 4194304 4235996 140734384763456 140734384762776 139684953469744 0 0 0 0 18446744071583714500 0 0 17 18 0 0 0 0 0
            [<ffffffff814a4cc4>] md_seq_show+0x104/0x5b0
            [<ffffffff81191e31>] seq_read+0x291/0x420
            [<ffffffff811cdcd1>] proc_reg_read+0x81/0xc0
            [<ffffffff81170255>] vfs_read+0xc5/0x190
            [<ffffffff81170421>] sys_read+0x51/0x90
            [<ffffffff815f6902>] system_call_fastpath+0x16/0x1b
            [<ffffffffffffffff>] 0xffffffffffffffff


cat /sys/block/md23/md/dev-sdac1/state
        cat: state: Device or resource busy
cat /sys/block/md23/md/dev-sdh1/state
        HANGS!

note: sdac1 is the drive being removed, while sdh1 is a good drive in the same array

Unfortunately I do not have stack traces for the last two cat processes above. Other arrays except md23 respond properly when reading files from /sys/block/md*/md/*


After a while I could see a bunch of these in dmesg:
[860714.133908] INFO: rcu_sched_state detected stall on CPU 3 (t=645421 jiffies) [860894.252091] INFO: rcu_sched_state detected stall on CPU 3 (t=690451 jiffies) [861074.370274] INFO: rcu_sched_state detected stall on CPU 3 (t=735481 jiffies) [861254.488788] INFO: rcu_sched_state detected stall on CPU 3 (t=780511 jiffies)
        ....


And as said, since most interaction with MD hanged (especially those involving md23, and even cat /proc/mdstat), I had to hard-reset the machine to restore functionality.

I hope this is enough information to track down the bug.

I am also interested in advice on how to remove drives from MD.
What I did was considered safe?
I assumed that MD does not need the drive to be removed to be present in the system in order to perform the removal. I.e. I assumed "mdadm -If <drivename>" was able to work correctly even when <drivename> was not available anymore.
Is this assumption wrong?


Thank you
Joystick
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux