Messages in this thread Patch in this message | | | Date | Mon, 21 Apr 2008 16:31:35 +0000 (GMT) | From | Michael Trimarchi <> | Subject | [PATCH] Force remount read-only of jffs2 when the garbage collector dies |
| |
Inviato da Yahoo! Mail. La casella di posta intelligente. http://it.docs.yahoo.com/mail/overview/index.html[PATCH] Force remount read-only of jffs2 when the garbage collector dies
Signed-off-by: Michael Trimarchi <michael@evidence.eu.com>
--- fs/jffs2/background.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 8adebd3..669b35e 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c @@ -70,6 +70,7 @@ void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c) static int jffs2_garbage_collect_thread(void *_c) { struct jffs2_sb_info *c = _c; + struct super_block *sb; daemonize("jffs2_gcd_mtd%d", c->mtd->index); allow_signal(SIGKILL); @@ -145,5 +146,25 @@ static int jffs2_garbage_collect_thread(void *_c) spin_lock(&c->erase_completion_lock); c->gc_task = NULL; spin_unlock(&c->erase_completion_lock); + + sb = c->os_priv; + BUG_ON(sb == NULL); + + /* The garbage collect is died. Try to remount the fs + * read-only + */ + down_read(&sb->s_umount); + if (sb->s_root && sb->s_mtd && !(sb->s_flags & MS_RDONLY)) { + /* + * ->remount_fs needs lock_kernel(). + * + * What lock protects sb->s_flags?? + */ + lock_kernel(); + do_remount_sb(sb, MS_RDONLY, NULL, 1); + unlock_kernel(); + } + drop_super(sb); + complete_and_exit(&c->gc_thread_exit, 0); } -- 1.5.3.6
| |