Re: [patch 2/8] update ctime and mtime for mmaped write

Peter Zijlstra
2007-03-06T22:29:47Z

On Tue, 2007-03-06 at 23:18 +0100, Miklos Szeredi wrote:
> > > None what so ever, but I always think of msync as a rare function
> > > (infrequent when compared to (minor) faults overall). But I don't have
> > > numbers backing that up either.
> > >
> > > Also, the radix tree scan you do isn't exactly cheap either.
> > >
> > > So what I was wondering is whether its worth optimizing this at the cost
> > > of another rmap walker. (one with very dubious semantics at that - it
> > > clears the pte dirty bit but doesn't particularly care about that nor
> > > does it respect the PG_dirty / PTE dirty relation)
> >
> > What this functionality requires is that MS_ASYNC is a full barrier wrt.
> > dirtyness. That is, we want to call set_page_dirty_mappig() as soon as
> > we touch a page in a dirtying fashion after MS_{,A}SYNC gets called.
> >
> > Hence we need the full page_mkclean() functionality, otherwise we don't
> > set AS_CMTIME again in time.
>
> AS_CMTIME is only for the case, when the "file modified since the last
> msync" info is lost from the ptes, e.g. because of page reclaim.
>
> So it doesn't matter if AS_CMTIME is not set, is_page_modified() will
> provide the necessary barrier.

The trouble is, we went from a pull to a push model, and now you're
adding pull code again.

We have PG_dirty correct at all times, I think its no less reasonable to
have AS_CMTIME correct in the same fashion.