Re: [PATCH v2 3/3] generic/470: add syncfs test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> 在 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




[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux