Why do bonding device unload operations sometimes hang on IBM System p?

Solution Verified - Updated

Environment

Red Hat Enterprise Linux 5.2 on IBM Series p

Issue

Failing to detach all ehea ethernet devices from the bonding device before unloading the bonding module can cause the unload operation to hang.

Resolution

All ehea ethernet devices should be detached from the bonding device before unloading, as follows:

     # ifenslave -d bond0 eth0
     # rmmod bonding
Comments

This only applies to Red Hat Enterprise Linux 5.2 on IBM Series p when using ehea adapters in a bonding configuration.

The following error messages might be displayed when bonding is set up or removed:

     - ehea: Error in ehea_broadcast_reg_helper: reg_dereg_bcmc failed
     - Debug: sleeping function called from invalid context at mm/slab.c:2063
     in_atomic():1[expected: 0], irqs_disabled():0
     Call Trace:
     [c0000000a4712f70] [c00000000005d7c8] .__might_sleep+0xcc/0xec 
     (unreliable)
     [c0000000a4713010] [c0000000000a1c28] .__kmalloc+0x70/0x104
     [c0000000a47130a0] [c0000000000a1ecc] .kzalloc+0x1c/0x50
     [c0000000a4713130] [d0000000000c30e4] .ehea_get_stats+0x50/0x194 [ehea]
     [c0000000a47131d0] [d0000000002eddf0] .bond_get_stats+0xb0/0x298 
     [bonding]
     [c0000000a4713380] [c00000000028ee24] .rtnetlink_fill_ifinfo+0x460/0x5a0
     [c0000000a47134c0] [c00000000028efe4] .rtnetlink_dump_ifinfo+0x80/0xdc
     [c0000000a4713560] [c0000000002a3488] .netlink_dump+0x118/0x2f8
     [c0000000a4713640] [c0000000002a3830] .netlink_dump_start+0x1c8/0x1fc
     [c0000000a47136f0] [c00000000028f74c] .rtnetlink_rcv+0x1c4/0x54c!

     [c0000000a47137d0] [c0000000002a3180] .netlink_data_ready+0x4c/0xb0
     [c0000000a4713850] [c0000000002a20f4] .netlink_sendskb+0xfc/0x158
     [c0000000a47138f0] [c0000000002a2e3c] .netlink_sendmsg+0x348/0x394
     [c0000000a4713a00] [c0000000002754b8] .sock_sendmsg+0x108/0x14c
     [c0000000a4713c00] [c000000000277798] .sys_sendto+0xdc/0x118
     [c0000000a4713d90] [c00000000029887c] .compat_sys_socketcall+0x160/0x210
     [c0000000a4713e30] [c000000000011280] syscall_exit+0x0/0x18

These error messages do not impact the functionality of the bonding interface. Once set up, bonding works as expected.

Tags

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.