[PATCH 0/2] ubifs: respect dirty_writeback_interval

Richard Weinberger richard at nod.at
Fri Sep 16 06:53:13 PDT 2016


Rafał,

On 14.09.2016 12:21, Rafał Miłecki wrote:
> From: Rafał Miłecki <rafal at milecki.pl>
> 
> Hi,
> 
> This patchset allows some ubifs adjustments that we realized we needed
> in LEDE project.
> 
> LEDE can be unstable on power cuts when installed on NAND devices (with
> ubifs). This is caused by the default high value of wbuf timeout used by
> ubifs. Any write that isn't followed by fsync (this may happen with
> buggy user space app or just shell script) may be lost if power cut
> happens in less than 5 seconds.
> 
> One idea for fixing this (without modifying kernel at all) is to mount
> ubifs with -o sync. This could affect NAND performance however, so I'm
> looking for a better solution.
> 
> During IRC discussion MTD guys suggested lowering wbuf timeout and I
> decided to give it a try. The simplest way to do that seems to be making
> ubifs respect dirty_writeback_interval. This parameter can be easily set
> with sysctl and is already used in some older file systems.
> 
> What do you think about this? I gave it a try with a simple
> uci commit foo; sleep 1s; POWER_CUT
> and it works as expected.

I think it is correct to tie the wbuf timeout to dirty_writeback_interval.
Especially since jffs2 does the same.
Please address the comments Boris raised. Then we can get this merged.

On the other hand, IMHO you will abuse this feature.
If your uci tool does not correctly fsync()/fdatasync() it is just broken and
needs fixing. Full stop.
Lowering the wbut timeout reduces the chance to lose unsynced data but it
won't fix the root cause. Users that face random power cuts will still have a
chance to lose data. Boris also pointed that out on IRC.

Thanks,
//richard



More information about the linux-mtd mailing list