> > 在 2017年12月11日,下午8:44,Amir Goldstein <amir73il@xxxxxxxxx> 写道: > > On Mon, Dec 11, 2017 at 2:33 PM, Chengguang Xu <cgxu519@xxxxxxxxxx> wrote: >>> >>> 在 2017年12月11日,下午6:46,Amir Goldstein <amir73il@xxxxxxxxx> 写道: >>> >>> On Mon, Dec 11, 2017 at 12:03 PM, Chengguang Xu <cgxu519@xxxxxxxxxx> wrote: >>>>> >>>>> 在 2017年12月7日,下午4:17,Amir Goldstein <amir73il@xxxxxxxxx> 写道: >>> [...] >>>> >>>> I did more detail tests for three different data modes of ext4 and found >>>> the overlayfs syncfs bug is reproducible on data=ordered and data=writeback, >>>> but on data=journal mode, data is flushed and correct. >>> >>> That is expected, because overlayfs does call upper's sync_fs() method and >>> for journal=data that will flush all dirty pages as well. >>> >>>> I only wrote only a few words >>>> to a single file and the bug is always reproducible on my test environment. >>>> >>>> For writeback interferences, AFAIK, from dirty ratio and period. >>>> If we drop all dirty caches & sync before the test, I think we can >>>> avoid interference from it. >>>> >>> >>> Why? does either drop_caches or sync() reset the flusher thread >>> periodic flush dirty pages? >> >> Sorry,We have to finish test in 30 seconds after we write test file, >> otherwise may be affected by background flusher. >> >> >>> >>>> So if we don’t have anything else to interference test result, >>>> I just want to modify to write a small single file as test target. >>>> >>>> Am I missing anything? >>> >>> I think the chance of flusher thread interfering the test and >>> flushing the dirty page you wrote before _scratch_shutdown exists, >>> but is small enough so we can neglect it and keep the test as simple >>> as possible. >> >> As I know, in normal case flusher thread check dirty inode expiring every 5 seconds(default) and flush dirty >> inode when expires 30 seconds(default). If we can finish test in 30s after running test, it would be OK. >> What do you think? >> > > 5 seconds is ext4 default journal commit interval. this is when dirty > metadata will be flushed. > 30 is generic flusher thread interval. > What if test started 29 seconds after last flush? Maybe we have misunderstanding about the flushing intervals. I’m saying the intervals which are under /proc/sys/vm to control writeback behaviors, it seems not related to any specific filesystem like ext4 or others. dirty_expire_interval default:3000(millisecond) dirty_writeback_interval default:500(millisecond) Anyway, let me modify test case base on our discussion. > > I am saying that the chances of interference from flusher thread are quite > if the test is very quick. > > If you create files and sync at the start of the test, overlayfs > syncfs will call > ext4 sync_fs and that will have nothing to do, because no metadata is dirty, > so test will be quick and we can neglect that change of interference. > > *If* you wish to reduce that chance for interference loop the test twice, but > I don't think that's a must. > > Amir. -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html