From patchwork Fri Feb 5 23:18:06 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxim Levitsky X-Patchwork-Id: 44690 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 4ECC0B7D11 for ; Sat, 6 Feb 2010 10:20:57 +1100 (EST) Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NdXRg-0004Ad-NN; Fri, 05 Feb 2010 23:18:40 +0000 Received: from mail-bw0-f221.google.com ([209.85.218.221]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1NdXRW-00040u-JF for linux-mtd@lists.infradead.org; Fri, 05 Feb 2010 23:18:37 +0000 Received: by mail-bw0-f221.google.com with SMTP id 21so3708825bwz.4 for ; Fri, 05 Feb 2010 15:18:30 -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=HDDFRcJEw/yGqPmf6ubkIndafK7fWTMGR5ca3k/BBuw=; b=TY0aiY9woKazZ0S78ZWJZ6bAN4BZQ6VAk5c0uLx+itmgPEwzOUhIAIznr4NkLtPdAr vikIwObvv34j+peabnyjpWgcrNJXOPgMwVy2axwzvfbBaIqukTed3oiCQo8QOxHPAeo5 1kjZgUms4PewIs1YvgE7T8UTn8bNlU4AIqo78= 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=eWyxvQM/XYakWsWJYK5q5MrmHlE+aYawpj1oWLOKWdf5ryeYUhDuFNt3+IXeGv4oes 7bznitePjPsvXmWz3IkhiluERRnXBbjq8UbKTt0Okbz7WqUZaI3EwvLct3jydWRW/ghX STR/iQcRpqLdAD26Dt9woo3wUYobyT7P0xsX8= Received: by 10.204.135.153 with SMTP id n25mr2127460bkt.156.1265411910233; Fri, 05 Feb 2010 15:18:30 -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 13sm892197bwz.6.2010.02.05.15.18.28 (version=SSLv3 cipher=RC4-MD5); Fri, 05 Feb 2010 15:18:29 -0800 (PST) From: Maxim Levitsky To: David Woodhouse Subject: [PATCH 3/7] MTD: nand: make suspend work if device is accessed by kernel threads. Date: Sat, 6 Feb 2010 01:18:06 +0200 Message-Id: <1265411890-9156-4-git-send-email-maximlevitsky@gmail.com> X-Mailer: git-send-email 1.6.3.3 In-Reply-To: <1265411890-9156-1-git-send-email-maximlevitsky@gmail.com> References: <1265411890-9156-1-git-send-email-maximlevitsky@gmail.com> X-CRM114-Version: 20090807-BlameThorstenAndJenny ( TRE 0.7.6 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20100205_181830_751269_8E768EE6 X-CRM114-Status: GOOD ( 12.72 ) 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 , Artem Bityutskiy , Vitaly Wool , linux-kernel , "stanley.miao" , linux-mtd 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 64b0f10..2ff9c02 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);