About JFFS2 garbage collector.
Hi all,
I am fascinated about the JFFS3 garbage collect mechanism but before moving to the JFFS3 garbage collection policy i wanted to analyse the jffs2 garbage collection.
Is there any documentations as such for the JFFS2 garbage collection policy. Plaese let me know if any. Even if there is none, i am not hesistant to look in the code, can some one of you give me some pointers for the same.
i would also like to kno all the instances when the GC thread gets activated for JFFS2.
Seeking your advice, thanks for the same..
Signature · 5 lines
Thanks & Regards Nikhil Shirodkar Project Engineer NISG, CDAC
Quoted 4 lines · Nikhil
Is there any documentations as such for the JFFS2 garbage collection policy. Plaese let me know if any. Even if there is none, i am not hesistant to look in the code, can some one of you give me some pointers for the same.
I don't think there is some documentation. JFFS2 GC policy is fairly trivial. Just ask your questions, I'll try to answer.
Signature · 3 lines
Best Regards, Artem B. Bityutskiy, St.-Petersburg, Russia.
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?
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)
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.
thx,
nik
NISG, CDAC
-----Original Message-----
From: Artem B. Bityutskiy [mailto:[email protected]]
Sent: Friday, March 10, 2006 4:35 PM
To: Nikhil
Cc: [email protected]
Subject: Re: About JFFS2 garbage collector.
Quoted 4 lines · Nikhil
Is there any documentations as such for the JFFS2 garbage collection policy. Plaese let me know if any. Even if there is none, i am not hesistant to look in the code, can some one of you give me some pointers for the same.
I don't think there is some documentation. JFFS2 GC policy is fairly trivial. Just ask your questions, I'll try to answer.
--
Best Regards,
Artem B. Bityutskiy,
St.-Petersburg, Russia.
Quoted 4 lines · NIkhil Shirodkar
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.
Quoted 5 lines
Is it essential to call
jffs2_garbage_collect_pass()repeatedly to get a free jeb, or if once thejffs2_garbage_collect_pass()is called, it ensures of making one jeb free. (barring the case when ic-->state ofINO_STATE_READINGis 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.
Quoted 4 lines
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.
Signature · 3 lines
Best Regards, Artem B. Bityutskiy, St.-Petersburg, Russia.
Quoted 2 lines · Artem B. Bityutskiy
1. is just an optimization and is run when you do not perform any I/O.
Err, its better to say "even when you do not perform any I/O".
Signature · 3 lines
Best Regards, Artem B. Bityutskiy, St.-Petersburg, Russia.