Signed-off-by: Wolfram Sang <w.s...@pengutronix.de>
Cc: Artem Bityutskiy <Artem.Bi...@nokia.com>
Cc: Ingo Molnar <mi...@elte.hu>
---
The aforementioned BUG() showed up in one of our customer's RT-projects. While
this could be handled by rearranging his thread-priorities, I wondered if such
a patch would be worthwhile, still. Reading through the material covering
yield() and related replacements, I believe this patch should be appropriate.
Please say if I missed some side-effects.
fs/jffs2/erase.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c
index abac961..e513f19 100644
--- a/fs/jffs2/erase.c
+++ b/fs/jffs2/erase.c
@@ -151,7 +151,7 @@ int jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)
}
/* Be nice */
- yield();
+ cond_resched();
mutex_lock(&c->erase_free_sem);
spin_lock(&c->erase_completion_lock);
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
--
Best Regards,
Artem Bityutskiy (Битюцкий Артём)
Actually, it was introduced by me with commit fd5324909e410a3202c1b01bd507c2dfba58fca5 :
[JFFS2] Fix hanging close for /dev/mtd character device.
When pdflush is erasing lots of sectors, drivers calling
mtd->sync will hang until all blocks are erased. Be nicer.
Signed-off-by: Joakim Tjernlund <Joakim.T...@transmode.se>
Signed-off-by: David Woodhouse <dw...@infradead.org>
@@ -142,7 +142,7 @@ void jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)
}
/* Be nice */
- cond_resched();
+ yield();
spin_lock(&c->erase_completion_lock);
}
At the time cond_resched() was a problem but now I don't know. The erasing
has moved to the GC thread and been somewhat reworked. I don't know if
it still needs yield(). Perhaps David can tell?
Jocke
> ______________________________________________________
> Linux MTD discussion mailing list
> http://lists.infradead.org/mailman/listinfo/linux-mtd/N▀╖╡ФЛr╦⌡yЗХ ьb╡X╛╤г╖vь^√)ч╨{.nг+┴╥╔┼{╠▒ЙГzX╖╤ ⌡║э╗}╘·╡ф═zз&j:+v┴╗╬ ╚▒ЙГzZ+─й+zfё╒╥h ┬╖~├╜├шiЪШЮz╧ ╝w╔╒╦?≥╗Х╜з&╒)ъ╒ f■Ы^jг╚y╖m┘А@A╚a╤з Ъ0╤Лh╝ Е▓i
I think 'yield()' is rather a hack than a real solution.
--
Best Regards,
Artem Bityutskiy (Битюцкий Артём)
--
Yes, the real fix is to move erasing to GC and that has been done now.
There is a good chance yield() can be removed without regression
but I am not sure nor do I have the time to test that.
Jocke
FYI, I've pushed this patch to my l2-mtd-2.6.git tree, thanks.
--
Best Regards,
Artem Bityutskiy (Артём Битюцкий)