lkml.org 
[lkml]   [2010]   [Jul]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] time/fs - file's time race with vgettimeofday
    On Fri, Jul 02, 2010 at 06:14:22PM +0200, Oleg Nesterov wrote:
    > In no way I can review this patch, but I am curious and have the questions.
    > Also, I think it makes sense to cc the fs/ developers, I've added Al.

    thanks

    >
    > On 07/02, Jiri Olsa wrote:
    > >
    > > there's a race among calling gettimeofday(2) and a file's time
    > > updates. Following test program expose the race.
    > >
    > > run it in the while loop
    > > while [ 1 ]; do ./test1 || break; done
    > >
    > > --- SNIP ---
    > > #include <stdio.h>
    > > #include <stdlib.h>
    > > #include <fcntl.h>
    > >
    > > int main (void)
    > > {
    > > struct stat st;
    > > struct timeval tv;
    > >
    > > unlink("./file");
    > >
    > > gettimeofday(&tv, NULL);
    > >
    > > if (-1 == creat("./file", O_RDWR)) {
    > > perror("creat");
    > > return -1;
    > > }
    > >
    > > if (stat("./file", &st) != 0) {
    > > perror("stat");
    > > return -1;
    > > }
    > >
    > > printf("USER gtod: %ld\n", (long)tv.tv_sec);
    > > printf("USER file: %ld.%09u\n",
    > > (long) st.st_mtime,
    > > (unsigned) st.st_mtim.tv_nsec);
    > >
    > > return tv.tv_sec <= st.st_mtime ? 0 : -1;
    > > }
    >
    > Interesting. To the point, I actually compiled this code and yes,
    > it triggers the problem on ext3 ;)
    >
    > > The following patch will prevent the race by adding the
    > > CURRENT_TIME_SEC_REAL macro, which will return seconds from
    > > the getnstimeofday call, ensuring it's computed on current tick.
    > > It fixes the 'creat' case for ext4.
    >
    > What about other filesystems? Perhaps it makes sense to change
    > CURRENT_TIME_SEC instead of adding CURRENT_TIME_SEC_REAL?
    >
    > Once again, I am asking. It is not that I suggest to change your patch.

    well, the patch is more or less to prove the problem exists and
    it could be fixed :) also I'm not sure that all the places using
    CURRENT_TIME_SEC suffer the same issue..

    I'm currenty looking to the code and trying to come up with better
    solution.. any ideas are welcome :)


    jirka


    \
     
     \ /
      Last update: 2010-07-03 02:01    [W:0.022 / U:61.472 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site