From: Maxim Levitsky <maximlevitsky@gmail.com>
To: linux-kernel <linux-kernel@vger.kernel.org>
Cc: joern <joern@logfs.org>,
linux-mtd <linux-mtd@lists.infradead.org>,
Alex Dubov <oakad@yahoo.com>
Subject: [PATCH 4/9] MTD: make mtdtrans thread freezable.
Date: Fri, 08 Jan 2010 17:08:16 +0200 [thread overview]
Message-ID: <1262963296.12577.18.camel@maxim-laptop> (raw)
In-Reply-To: <1262963092.12577.14.camel@maxim-laptop>
>From e8648ebdc31d65556fccb340e4c16edc43017cf1 Mon Sep 17 00:00:00 2001
From: Maxim Levitsky <maximlevitsky@gmail.com>
Date: Fri, 8 Jan 2010 15:52:18 +0200
Subject: [PATCH 4/9] MTD: make mtdtrans thread freezable.
This makes the mtd blktrans thread enter the freezer in between accesses
to nand device.
This will ensure that we aren't suspending the system in the middle
of page read/write and even worse erase, which is a bad idea.
Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
---
drivers/mtd/mtd_blkdevs.c | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index 04a875f..db996d6 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -20,6 +20,7 @@
#include <linux/init.h>
#include <linux/mutex.h>
#include <linux/kthread.h>
+#include <linux/freezer.h>
#include <asm/uaccess.h>
#include "mtdcore.h"
@@ -79,36 +80,35 @@ static int mtd_blktrans_thread(void *arg)
struct request_queue *rq = dev->rq;
struct request *req = NULL;
- spin_lock_irq(rq->queue_lock);
+ set_freezable();
while (!kthread_should_stop()) {
int res;
+ try_to_freeze();
+
+ spin_lock_irq(rq->queue_lock);
if (!req && !(req = blk_fetch_request(rq))) {
set_current_state(TASK_INTERRUPTIBLE);
spin_unlock_irq(rq->queue_lock);
schedule();
- spin_lock_irq(rq->queue_lock);
continue;
}
-
spin_unlock_irq(rq->queue_lock);
+
mutex_lock(&dev->lock);
res = do_blktrans_request(dev->tr, dev, req);
mutex_unlock(&dev->lock);
spin_lock_irq(rq->queue_lock);
-
if (!__blk_end_request_cur(req, res))
req = NULL;
+ spin_unlock_irq(rq->queue_lock);
}
if (req)
__blk_end_request_all(req, -EIO);
-
- spin_unlock_irq(rq->queue_lock);
-
return 0;
}
--
1.6.3.3
next prev parent reply other threads:[~2010-01-08 15:08 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-08 15:04 RFC: [PATCH V2 0/9 Integration of SmartMedia/xD into mtd subsystem Maxim Levitsky
2010-01-08 15:05 ` [PATCH 1/9] MTD: call remove notifiers before removing the device Maxim Levitsky
2010-01-08 15:06 ` [PATCH 2/9] MTD: create lockless versions of {get,put}_mtd_device Maxim Levitsky
2010-01-08 15:21 ` [PATCH 2/9] MTD: create lockless versions of {get, put}_mtd_device Jörn Engel
2010-01-08 15:27 ` [PATCH 2/9] MTD: create lockless versions of {get,put}_mtd_device Maxim Levitsky
2010-01-08 15:31 ` [PATCH 2/9] MTD: create lockless versions of {get, put}_mtd_device Jörn Engel
2010-01-08 15:07 ` [PATCH 3/9] MTD: blkdevs: make hotplug work Maxim Levitsky
2010-01-08 15:08 ` Maxim Levitsky [this message]
2010-01-08 15:08 ` [PATCH 5/9] MTD: nand subsystem, export nand_do_read_oob and nand_do_write_oob Maxim Levitsky
2010-01-08 15:09 ` [PATCH 6/9] mtd: common module for smartmedia/xD support Maxim Levitsky
2010-01-08 15:10 ` [PATCH 7/9] MTD: add few workarounds to nand system for SmartMedia/xD chips Maxim Levitsky
2010-01-08 15:11 ` [PATCH 8/9] mtd: Add nand driver for ricoh xD/SmartMedia reader Maxim Levitsky
2010-01-08 15:12 ` [PATCH 9/9] mtd: Add new SmartMedia/xD FTL Maxim Levitsky
2010-01-08 15:29 ` Jörn Engel
2010-01-08 15:35 ` Maxim Levitsky
2010-01-08 16:04 ` RFC: [PATCH V2 0/9 Integration of SmartMedia/xD into mtd subsystem Jörn Engel
2010-01-08 17:40 ` Maxim Levitsky
2010-01-09 0:26 ` Jörn Engel
2010-01-11 22:24 ` Maxim Levitsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1262963296.12577.18.camel@maxim-laptop \
--to=maximlevitsky@gmail.com \
--cc=joern@logfs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=oakad@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox