[lkml]   [2008]   [Jan]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH][RFC][BUG] updating the ctime and mtime time stamps in msync()
    2008/1/10, Jakob Oestergaard <>:
    > On Thu, Jan 10, 2008 at 03:03:03AM +0300, Anton Salikhmetov wrote:
    > ...
    > > > I guess a third possible time (if we want to minimize the number of
    > > > updates) would be when natural syncing of the file data to disk, by
    > > > other things in the VM, would be about to clear the I_DIRTY_PAGES
    > > > flag on the inode. That way we do not need to remember any special
    > > > "we already flushed all dirty data, but we have not updated the mtime
    > > > and ctime yet" state.
    > > >
    > > > Does this sound reasonable?
    > >
    > > No, it doesn't. The msync() system call called with the MS_ASYNC flag
    > > should (the POSIX standard requires that) update the st_ctime and
    > > st_mtime stamps in the same manner as for the MS_SYNC flag. However,
    > > the current implementation of msync() doesn't call the do_fsync()
    > > function for the MS_ASYNC case. The msync() function may be called
    > > with the MS_ASYNC flag before "natural syncing".
    > If the update was done as Rik suggested, with the addition that msync()
    > triggered an explicit sync of the inode data, then everything would be ok,
    > right?

    Indeed, if msync() is called with MS_SYNC an explicit sync is
    triggered, and Rik's suggestion would work. However, the POSIX
    standard requires a call to msync() with MS_ASYNC to update the
    st_ctime and st_mtime stamps too. No explicit sync of the inode data
    is triggered in the current implementation of msync(). Hence Rik's
    suggestion would fail to satisfy POSIX in the latter case.

    > --
    > / jakob

     \ /
      Last update: 2008-01-10 11:57    [W:0.029 / U:9.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site