From patchwork Sat Jan 30 15:02:43 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 44068 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 72CD8B7CE6 for ; Sun, 31 Jan 2010 02:16:38 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NbF1K-0006xA-2t; Sat, 30 Jan 2010 15:13:58 +0000 Received: from mail-fx0-f222.google.com ([209.85.220.222]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NbEr4-0006cm-Io for linux-mtd@lists.infradead.org; Sat, 30 Jan 2010 15:03:28 +0000 Received: by mail-fx0-f222.google.com with SMTP id 22so1373903fxm.2 for ; Sat, 30 Jan 2010 07:03:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:cc:subject:date :message-id:x-mailer:in-reply-to:references; bh=ylSmxk9LUSw6EjNRf07HYr0W+enFhgP+74vK2IVHuMU=; b=GJvFwkXdGXLrLSTnb07uXhBBcOkHHEmVPc2B3LleZeFPj0swmAtVOoBTOz2FVgETWV 5JWIWbSNHgzEK/aatOO7now2lp8YAO5isofZ5pFM1nwRzZ80SEy1GkpF2Ulhn4Xz5Lxq aBYBm0GTDLUmMCHS05fG751bY2MNdEgMGr0tg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=hquT4LihIAfudvYVnXJyXxnFdOn+ZED4+LQrvW2Kh5Y9EdLdKQdF4PhR4dXHQL+1/f Sogh1In8y9PTqGk+sVeaNJ78Cg+ibd8kugREaB5S7Dklz35aaMT9JCG194JqPqXr4d2W t2v5X+WFpKxp3ujMxcB0GY13rzJj61eawYVPk= Received: by 10.87.51.9 with SMTP id d9mr3904432fgk.35.1264863802208; Sat, 30 Jan 2010 07:03:22 -0800 (PST) Received: from localhost.localdomain (IGLD-84-229-248-49.inter.net.il [84.229.248.49]) by mx.google.com with ESMTPS id l19sm4125281fgb.0.2010.01.30.07.03.20 (version=SSLv3 cipher=RC4-MD5); Sat, 30 Jan 2010 07:03:21 -0800 (PST) From: Maxim Levitsky To: David Woodhouse Subject: [PATCH 12/17] MTD: nand: make suspend work if device is accessed by kernel threads. Date: Sat, 30 Jan 2010 17:02:43 +0200 Message-Id: <1264863768-27606-13-git-send-email-maximlevitsky@gmail.com> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1264863768-27606-1-git-send-email-maximlevitsky@gmail.com> References: <1264863768-27606-1-git-send-email-maximlevitsky@gmail.com> X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100130_100322_724489_322DEC7B X-CRM114-Status: GOOD ( 13.18 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.2.5 on bombadil.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- _SUMMARY_ Cc: Maxim Levitsky , Alex Dubov , Artem Bityutskiy , joern , linux-kernel , linux-mtd , Thomas Gleixner X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-mtd-bounces@lists.infradead.org Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Since all userspace threads are frozen at the time the nand_suspend is called, they aren't inside any nand function. We don't call try_to_freeze in nand ether. Thus the only user that can be insize the nand functions is an non freezeable kernel thread. Thus we can safely wait for it to finish. Signed-off-by: Maxim Levitsky --- drivers/mtd/nand/nand_base.c | 3 --- 1 files changed, 0 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 29e986e..961c98f 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c @@ -744,9 +744,6 @@ nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state) chip->state = FL_PM_SUSPENDED; spin_unlock(lock); return 0; - } else { - spin_unlock(lock); - return -EAGAIN; } } set_current_state(TASK_UNINTERRUPTIBLE);