[PATCH] JFFS2: Prevent CPU starvation during garbage collection.
Brian Norris
computersforpeace at gmail.com
Fri Aug 7 10:21:27 PDT 2015
+ David
I'm not maintaining JFFS2, but if it's exceedingly obvious (this patch
might qualify), I might take patches.
On Wed, Aug 05, 2015 at 04:40:30PM +1200, Mark Tomlinson wrote:
> The JFFS2 garbage collection checks every file on the system for correct
> checksums and cleaning up anything that it needs to. It sleeps for 50ms
> between each file, but within each file it remains busy.
>
> As far as I can tell, there is no reason to not reschedule while checking a
> file, by putting a cond_resched() inside jfffs2_build_inode_fragtree(). In
> fact, jffs2_get_inode_nodes() will call cond_resched(), which is done
> immediately before jffs2_build_inode_fragtree().
>
> With this extra cond_resched() between reading file blocks, there is a
> dramatic improvement in latency for any processes which are running during
> this initial garbage collection phase.
>
> Signed-off-by: Mark Tomlinson <mark.tomlinson at alliedtelesis.co.nz>
> ---
> fs/jffs2/readinode.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c
> index 28e0aab..78c526a 100644
> --- a/fs/jffs2/readinode.c
> +++ b/fs/jffs2/readinode.c
> @@ -536,6 +536,7 @@ static int jffs2_build_inode_fragtree(struct jffs2_sb_info *c,
> jffs2_free_tmp_dnode_info(this);
> }
> this = vers_next;
> + cond_resched();
> }
> }
> return 0;
Obligatory question: did you test this?
Brian
More information about the linux-mtd
mailing list