From patchwork Wed Apr 24 04:46:15 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: chenditang X-Patchwork-Id: 2482281 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 5791EDF25A for ; Wed, 24 Apr 2013 04:44:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751116Ab3DXEoQ (ORCPT ); Wed, 24 Apr 2013 00:44:16 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:49987 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1750895Ab3DXEoQ (ORCPT ); Wed, 24 Apr 2013 00:44:16 -0400 X-IronPort-AV: E=Sophos;i="4.87,539,1363104000"; d="scan'208";a="7127369" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 24 Apr 2013 12:41:24 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id r3O4i4Nh031200; Wed, 24 Apr 2013 12:44:07 +0800 Received: from [10.167.233.244] ([10.167.233.244]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2013042412423173-783203 ; Wed, 24 Apr 2013 12:42:31 +0800 Message-ID: <51776397.2050504@cn.fujitsu.com> Date: Wed, 24 Apr 2013 12:46:15 +0800 From: chenditang Organization: FNST User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 MIME-Version: 1.0 To: Benny Halevy CC: "linux-nfs@vger.kernel.org" Subject: [PATCH] pnfsd-file: cause oops when stop the nfs server References: <51517A15.3010805@cn.fujitsu.com> In-Reply-To: <51517A15.3010805@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/04/24 12:42:31, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/04/24 12:42:34, Serialize complete at 2013/04/24 12:42:34 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org mount nfs dir in the client, and then restart the NFS service in MDS, that will cause oops for client_mutex_owner is NULL in the destroy_client() function. kernel BUG at fs/nfsd/nfs4state.c:1130! invalid opcode: 0000 [#1] SMP Modules linked in: nfsd(OF) lockd exportfs nfs_acl auth_rpcgss autofs4 dlm sctp libcrc32c configfs sunrpc be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i libcxgbi cxgb3 mdio ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr ipv6 iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi dm_mirror dm_region_hash dm_log dm_mod ppdev parport_pc parport microcode pcspkr i2c_piix4 i2c_core e1000 sg ext4(F) mbcache(F) jbd2(F) sr_mod(F) cdrom(F) sd_mod(F) crc_t10dif(F) pata_acpi(F) ata_generic(F) ata_piix(F) ahci(F) libahci(F) [last unloaded: speedstep_lib] CPU 0 Pid: 2893, comm: nfsd Tainted: GF O 3.8.0-rc4_fl+ #2 innotek GmbH VirtualBox/VirtualBox RIP: 0010:[] [] destroy_client+0x2ff/0x330 [nfsd] RSP: 0018:ffff8800256b9d38 EFLAGS: 00010203 RAX: 0000000000000010 RBX: ffff880025630000 RCX: 0000000000001440 RDX: 00000000000025fc RSI: 0000000000000082 RDI: 0000000000000246 RBP: ffff8800256b9d88 R08: ffffffff81cdfba0 R09: 0000000000007768 R10: 00000000000001b1 R11: 00000000000001b1 R12: ffff880037988400 R13: ffff88003d58ea80 R14: ffffffff81ab2080 R15: 0000000000000000 FS: 0000000000000000(0000) GS:ffff88003fc00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 00000000006d39d8 CR3: 00000000255be000 CR4: 00000000000006f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process nfsd (pid: 2893, threadinfo ffff8800256b8000, task ffff88003d58ea80) Stack: ffff8800256b9d78 ffff88003d51bdc0 ffff8800256b9d58 ffff880037988400 ffffffff81ab2080 ffff880037988400 0000000000000020 ffffffffa04709b0 ffffffff81ab2080 0000000000000000 ffff8800256b9dc8 ffffffffa045a555 Call Trace: [] nfs4_state_destroy_net+0x55/0x120 [nfsd] [] nfs4_state_shutdown_net+0xf8/0x140 [nfsd] [] ? nfsd_pool_stats_release+0x50/0x50 [nfsd] [] nfsd_shutdown_net+0x35/0x60 [nfsd] [] nfsd_last_thread+0x4d/0x80 [nfsd] [] svc_shutdown_net+0x35/0x40 [sunrpc] [] nfsd_destroy+0x55/0x80 [nfsd] [] nfsd+0x104/0x130 [nfsd] [] ? nfsd_pool_stats_release+0x50/0x50 [nfsd] [] kthread+0xce/0xe0 [] ? kthread_freezable_should_stop+0x70/0x70 [] ret_from_fork+0x7c/0xb0 [] ? kthread_freezable_should_stop+0x70/0x70 Code: 38 d1 e0 48 89 df e8 81 38 d1 e0 e9 2f ff ff ff 0f 1f 40 00 48 c7 c7 72 8a 46 a0 31 c0 e8 86 6b 0f e1 e9 70 fd ff ff 0f 0b eb fe <0f> 0b eb fe 0f 0b 66 66 2e 0f 1f 84 00 00 00 00 00 eb f3 0f 0b RIP [] destroy_client+0x2ff/0x330 [nfsd] RSP ---[ end trace c2d9f251eabc7c2d ]--- Signed-off-by: chendt.fnst Reviewed-by: fanchaoting --- fs/nfsd/nfs4state.c | 3 +++ 1 file changed, 3 insertions(+) cl_idhash); @@ -4952,6 +4954,7 @@ nfs4_state_destroy_net(struct net *net) destroy_client(clp); } + nfs4_unlock_state(); kfree(nn->sessionid_hashtbl); kfree(nn->lockowner_ino_hashtbl); kfree(nn->ownerstr_hashtbl); diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 13bc266..40b2348 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4936,6 +4936,8 @@ nfs4_state_destroy_net(struct net *net) struct nfsd_net *nn = net_generic(net, nfsd_net_id); struct rb_node *node, *tmp; + nfs4_lock_state(); + for (i = 0; i < CLIENT_HASH_SIZE; i++) { while (!list_empty(&nn->conf_id_hashtbl[i])) { clp = list_entry(nn->conf_id_hashtbl[i].next, struct nfs4_client,