ACK: [Trusty][SRU][PATCH 0/2] Fixes for LP#1488035
Gavin Guo
gavin.guo at canonical.com
Tue Aug 25 16:57:49 UTC 2015
Hi Brad,
On Wed, Aug 26, 2015 at 12:01 AM, Brad Figg <brad.figg at canonical.com> wrote:
> On Mon, Aug 24, 2015 at 10:04:50PM +0800, Gavin Guo wrote:
>> BugLink: http://bugs.launchpad.net/bugs/1488035
>>
>> [Impact]
>>
>> The node which mounts a ceph rbd volume causes a panic when all OSD daemons
>> on the all ceph nodes are restarted.
>>
>> [642981.871592] ------------[ cut here ]------------
>> [642981.912255] kernel BUG at
>> /build/buildd/linux-3.13.0/net/ceph/osd_client.c:892!
>> [642981.994517] invalid opcode: 0000 [#1] SMP
>> [642982.037227] Modules linked in: xt_multiport iptable_mangle xt_nat
>> xt_tcpudp veth xfs rbd libceph libcrc32c xt_addrtype xt_conntrack
>> ipt_MASQUERADE iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4
>> iptable_filter ip_tables x_tables nf_nat nf_conntrack bridge aufs
>> ipmi_devintf joydev gpio_ich x86_pkg_temp_thermal intel_powerclamp coretemp
>> kvm_intel kvm crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel
>> aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd hid_generic mei_me
>> ioatdma mei lpc_ich wmi ipmi_si 8021q garp stp mrp llc bonding
>> acpi_power_meter mac_hid lp parport ixgbe usbhid dca tg3 ahci libahci hid
>> ptp megaraid_sas mdio pps_core
>> [642982.528519] CPU: 0 PID: 1062099 Comm: kworker/0:6 Not tainted
>> 3.13.0-45-generic #74-Ubuntu
>> [642982.648057] Hardware name: NEC Express5800/R120f-1M
>> [N8100-2203Y]/MS-S0901, BIOS 5.0.4016 12/17/2014
>> [642982.775433] Workqueue: ceph-msgr con_work [libceph]
>> [642982.841300] task: ffff881028444800 ti: ffff880d92374000 task.ti:
>> ffff880d92374000
>> [642982.973255] RIP: 0010:[<ffffffffa025f5be>] [<ffffffffa025f5be>]
>> osd_reset+0x22e/0x2c0 [libceph]
>> [642983.114484] RSP: 0018:ffff880d92375d80 EFLAGS: 00010283
>> [642983.188540] RAX: ffff8800197f2ca8 RBX: ffff882028194750 RCX:
>> ffff880036bcdc48
>> [642983.334096] RDX: ffff8800197f2ca8 RSI: ffff8800197f2c10 RDI:
>> 0000000000000286
>> [642983.485552] RBP: ffff880d92375dd8 R08: 0000000000000000 R09:
>> 0000000000000000
>> [642983.643277] R10: ffffffff8160afcf R11: ffffea00710cae00 R12:
>> ffff8800197f2c58
>> [642983.805364] R13: ffff882028194810 R14: ffff880036bcdbf8 R15:
>> ffff880036bcdc18
>> [642983.968728] FS: 0000000000000000(0000) GS:ffff88103fa00000(0000)
>> knlGS:0000000000000000
>> [642984.135368] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [642984.220577] CR2: 00007f60d4cb7868 CR3: 0000000001c0e000 CR4:
>> 00000000001407f0
>> [642984.383051] Stack:
>> [642984.459809] ffff8820281947a8 ffff882028194760 ffff8800197f2800
>> ffff8800197f2ca8
>> [642984.618038] ffff880d92375da0 ffff880d92375da0 ffff8800197f2c10
>> ffff8800197f2830
>>
>> [Fix]
>>
>> A linked list to manage OSDs in the kernel was corrupted when restarting
>> all OSD daemons on all ceph nodes at the almost same time.
>>
>> The issues must be fixed by the following.
>>
>> libceph: must use new tid when watch is resent
>> http://tracker.ceph.com/issues/8806
>>
>> This includes two patched and they has been already released.
>>
>> http://comments.gmane.org/gmane.comp.file-systems.ceph.devel/20878
>> [PATCH 1/2] libceph: abstract out ceph_osd_request enqueue logic
>> [PATCH 2/2] libceph: resend lingering requests with a new tid
>>
>> 3.18 kernel adopts the fixes.
>>
>> libceph: abstract out ceph_osd_request enqueue logic
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f671b581f1dac61354186b7373af5f97fe420584
>> libceph: resend lingering requests with a new tid
>> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2cc6128ab2afff7864dbdc33a73e2deaa935d9e0
>>
>> [Test Case]
>>
>> After setting up the ceph environment, repeatedly issued the following
>> command from a node to all ceph nodes.
>>
>> rsh -i key -l ubuntu sn_hostname sudo service ceph-all restart
>>
>> And verify if there is panics.
A test kernel with this fix was verified to fix this problem.
>>
>> Ilya Dryomov (2):
>> libceph: abstract out ceph_osd_request enqueue logic
>> libceph: resend lingering requests with a new tid
>>
>> net/ceph/osd_client.c | 97 +++++++++++++++++++++++++++++++++++++--------------
>> 1 file changed, 71 insertions(+), 26 deletions(-)
>>
>> --
>> 2.0.0
>>
>>
>> --
>> kernel-team mailing list
>> kernel-team at lists.ubuntu.com
>> https://lists.ubuntu.com/mailman/listinfo/kernel-team
>
> Looks like an accurate backport of the upstream commits and positive
> testing.
>
> --
> Brad Figg brad.figg at canonical.com http://www.canonical.com
More information about the kernel-team
mailing list