reliably detect writes to a file: mmap, mtime, ...

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

 




Hi all,

I want to reliably detect changes to a file even when 
written to using mmap. Surprisingly, there seems to be
no API which would make this possible. Or at least I 
haven't found a way to do it... 


I looked at:

- mtime. What is missing here is an API which would
force mtime to be updated if there are dirty PTEs
in some mapping (which need to be cleared/transferred 
to struct page at this point). This would allow to 
reliably detect changes to the file. If I understand it 
correctly, there was patch from Andy Lutomirski which
made msync(ASYNC) do exactly this:

http://oss.sgi.com/archives/xfs/2013-08/msg00748.html

But it seems this never got in. The other problem with
this is that mtime has limited granularity.
(but maybe that could be worked around by having some
kind of counter + API which tells how often mtime has
been updated without changing its nominal value)



- I also looked at soft-dirty bits, but this API seems
to have several limitations:  1.) it tracks writes
through a specific mapping 2.) it can only have
a single user at the same time 3.) who has to have 
special privileges 4.) and it seems impossible read
and clear the soft-dirty bits at the same time (so you
might miss writes).


But maybe there are other ways... I am missing
something?


Martin



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]