to provide reliable support for filesystem freezing, filesystems need to havecomplete control over when metadata is changed. In particular,file_update_time() calls from page fault code make it impossible forfilesystems to prevent inodes from being dirtied while the filesystem isfrozen.

To fix the issue, this patch set changes page fault code to callfile_update_time() only when ->page_mkwrite() callback is not provided. If thecallback is provided, it is the responsibility of the filesystem to performupdate of i_mtime / i_ctime if needed. We also push file_update_time() callto all existing ->page_mkwrite() implementations if the time update does notobviously happen by other means. If you know your filesystem does not needupdate of modification times in ->page_mkwrite() handler, please speak up andI'll drop the patch for your filesystem.

As a side note, an alternative would be to remove call of file_update_time()from page fault code altogether and require all filesystems needing it to dothat in their ->page_mkwrite() implementation. That is certainly possiblealthough maybe slightly inefficient and would require auditting 100+vm_operations_structs *shake*.

If I get acks on these patches, Andrew, would you be willing to take thesepatches?