From patchwork Wed Nov 12 11:01:48 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: chenjie6@huawei.com X-Patchwork-Id: 409831 X-Patchwork-Delegate: dwmw2@infradead.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id C4994140179 for ; Wed, 12 Nov 2014 14:04:17 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1XoOCf-0004TY-B7; Wed, 12 Nov 2014 03:02:41 +0000 Received: from szxga01-in.huawei.com ([119.145.14.64]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1XoOCd-0004RY-9W; Wed, 12 Nov 2014 03:02:40 +0000 Received: from 172.24.2.119 (EHLO szxeml419-hub.china.huawei.com) ([172.24.2.119]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id CEH58176; Wed, 12 Nov 2014 11:01:33 +0800 (CST) Received: from linux-git.site (10.67.54.28) by szxeml419-hub.china.huawei.com (10.82.67.158) with Microsoft SMTP Server id 14.3.158.1; Wed, 12 Nov 2014 11:01:24 +0800 From: To: Subject: [PATCH] jffs2: fix soft lockup when read flash error Date: Wed, 12 Nov 2014 19:01:48 +0800 Message-ID: <1415790108-17340-1-git-send-email-chenjie6@huawei.com> X-Mailer: git-send-email 1.8.0 MIME-Version: 1.0 X-Originating-IP: [10.67.54.28] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20141111_190239_757543_5DD7891C X-CRM114-Status: UNSURE ( 8.09 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -1.3 (-) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-1.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [119.145.14.64 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [119.145.14.64 listed in wl.mailspike.net] 0.0 DATE_IN_FUTURE_06_12 Date: is 6 to 12 hours after Received: date -0.5 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders Cc: kexing@huawei.com, linux-kernel@vger.kernel.org, gaozhihui@huawei.com, zengweilin@huawei.com, lizefan@huawei.com, stable@vger.kernel.org, dwmw2@infradead.org, chenjie X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: chenjie we find soft lockup when read flash error ------------------CPU#1----------------------------------- BUG: soft lockup - CPU#1 stuck for 60009ms! [link.test:17707] INFO: rcu_sched detected stalls on CPUs/tasks: { 1} (detected by 0, t=247997 jiffies, g=127234, c=127233, q=373616) Task dump for CPU 1: link.test R running 0 17707 17611 0x00000003 locked: e844ea78 &inode->i_mutex 1 [] do_unlinkat+0x74/0x170 e873f9f8 &inode->i_mutex 1 [] vfs_unlink+0x38/0xf4 e8bc4444 &c->alloc_sem 1 [] jffs2_reserve_space+0x2c/0x3b4 [jffs2] e8bc4568 &c->erase_free_sem 1 [] jffs2_erase_pending_blocks+0x20/0x860 [jffs2] c0479d30 console_sem 1 [] console_trylock+0xc/0x50 [] (__schedule+0x478/0x644) from [<00000000>] ( (null)) Modules linked in: rtos_kbox_panic(O) flash(O) eth(O) mdio(O) gpio(O) watchdog(O) nfsv4 nfsv3 nfs lockd nfs_acl sunrpc xt_tcpudp ipt_REJECT iptable_filter ip_tables x_tables jffs2 cfi_cmdset_0002 cfi_probe cfi_util gen_probe cmdlinepart chipreg mtdblock mtd_blkdevs mtd uio [last unloaded: kernel_mem_manage] CPU: 1 PID: 17707 Comm: link.test Tainted: G O 3.10.53 #1 task: e80b6e80 ti: c8e9e000 task.ti: c8e9e000 PC is at jffs2_erase_pending_blocks+0x808/0x860 [jffs2] LR is at jffs2_erase_pending_blocks+0x2c/0x860 [jffs2] pc : [] lr : [] psr: 60000113 sp : c8e9fdc8 ip : e80b6eb0 fp : e8bc44f8 r10: 00000000 r9 : c8e9fecc r8 : 00000034 r7 : e8bc4520 r6 : e8bc4568 r5 : e8bc44f8 r4 : e8bc4400 r3 : 00000120 r2 : 00006a20 r1 : 00000000 r0 : e8bc4520 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user Control: 18c53c7d Table: 9b79004a DAC: 00000015 CPU: 1 PID: 17707 Comm: link.test Tainted: G O 3.10.53 #1 [] (unwind_backtrace+0x0/0x120) from [] (show_stack+0x10/0x14) [] (show_stack+0x10/0x14) from [] (watchdog_timer_fn+0x16c/0x208) [] (watchdog_timer_fn+0x16c/0x208) from [] (__run_hrtimer+0xd4/0x1c4) [] (__run_hrtimer+0xd4/0x1c4) from [] (hrtimer_interrupt+0x128/0x2b0) [] (hrtimer_interrupt+0x128/0x2b0) from [] (twd_handler+0x38/0x44) [] (twd_handler+0x38/0x44) from [] (handle_percpu_devid_irq+0x9c/0x124) [] (handle_percpu_devid_irq+0x9c/0x124) from [] (generic_handle_irq+0x20/0x30) [] (generic_handle_irq+0x20/0x30) from [] (handle_IRQ+0xa0/0xf4) [] (handle_IRQ+0xa0/0xf4) from [] (gic_handle_irq+0x3c/0x60) [] (gic_handle_irq+0x3c/0x60) from [] (__irq_svc+0x44/0x58) Exception stack(0xc8e9fd80 to 0xc8e9fdc8) fd80: e8bc4520 00000000 00006a20 00000120 e8bc4400 e8bc44f8 e8bc4568 e8bc4520 fda0: 00000034 c8e9fecc 00000000 e8bc44f8 e80b6eb0 c8e9fdc8 bf058d78 bf059554 fdc0: 60000113 ffffffff [] (__irq_svc+0x44/0x58) from [] (jffs2_erase_pending_blocks+0x808/0x860 [jffs2]) [] (jffs2_erase_pending_blocks+0x808/0x860 [jffs2]) from [] (jffs2_do_reserve_space+0x31c/0x47c [jffs2]) [] (jffs2_do_reserve_space+0x31c/0x47c [jffs2]) from [] (jffs2_reserve_space+0x330/0x3b4 [jffs2]) [] (jffs2_reserve_space+0x330/0x3b4 [jffs2]) from [] (jffs2_do_unlink+0x48/0x228 [jffs2]) [] (jffs2_do_unlink+0x48/0x228 [jffs2]) from [] (jffs2_unlink+0x3c/0x80 [jffs2]) [] (jffs2_unlink+0x3c/0x80 [jffs2]) from [] (vfs_unlink+0x5c/0xf4) [] (vfs_unlink+0x5c/0xf4) from [] (do_unlinkat+0xc4/0x170) [] (do_unlinkat+0xc4/0x170) from [] (ret_fast_syscall+0x0/0x58) jffs2_find_nextblock --->jffs2_erase_pending_blocks --->jffs2_mark_erased_block but jffs2_block_check_erase failed or jffs2_write_nand_cleanmarker failed The jffs2_find_nextblock return -EAGAIN ,so soft lockup had occurred Cc: Signed-off-by: chenjie --- fs/jffs2/nodemgmt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/jffs2/nodemgmt.c b/fs/jffs2/nodemgmt.c index b6bd4af..f689bb1 100644 --- a/fs/jffs2/nodemgmt.c +++ b/fs/jffs2/nodemgmt.c @@ -322,6 +322,7 @@ static int jffs2_find_nextblock(struct jffs2_sb_info *c) spin_unlock(&c->erase_completion_lock); /* Don't wait for it; just erase one right now */ + cond_resched(); jffs2_erase_pending_blocks(c, 1); spin_lock(&c->erase_completion_lock);