About JFFS2 garbage collector.
Artem B. Bityutskiy
dedekind at yandex.ru
Fri Mar 10 09:50:00 EST 2006
NIkhil Shirodkar wrote:
> What I figured out one call jffs2_garbage_collect_pass() which initiates
> garbage collection when there is not enough space to write a file. I figured
> out few more instances when this got called, Let me know if this is the only
> call to trigger garbage collector or are there any more calls?
This is the only.
> Is it essential to call jffs2_garbage_collect_pass() repeatedly to get a
> free jeb, or if once the jffs2_garbage_collect_pass() is called, it ensures
> of making one jeb free. (barring the case when ic-->state of
> INO_STATE_READING is found and the GC returns success without achieving the
> desired)
One jffs2_garbage_collect_pass() is supposed to move one node (or zero
in special cases as you has specified), so you have to loop to get full
eraseblock (jeb) garbage collect-ed.
> I also wanted to find out _all_ other instances when the GC thread runs. Is
> there any way one can force the GC thread to run like the case when, you are
> not performing any I/O operations. This might be helpful to reduce the write
> latency of a nearly full filesystem.
jffs2_garbage_collect_pass() may be called by
1. GC thread
2. a writing process when there is no free space
1. is just an optimization and is run when you do not perform any I/O.
There is a threshold of free space above which GC thread do not run. You
can force it by sending a SIGHUP signal (causes one
jffs2_garbage_collect_pass() invocation.
--
Best Regards,
Artem B. Bityutskiy,
St.-Petersburg, Russia.
More information about the linux-mtd
mailing list