All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xavier Roche <roche+kml2@exalead.com>
To: linux-kernel@vger.kernel.org
Subject: Timestamp of file modified through mmap are not changed in 2.6
Date: Fri, 08 Apr 2005 17:17:00 +0200	[thread overview]
Message-ID: <4256A06C.8020304@exalead.com> (raw)

Timestamp of file modified through mmap are not changed in 2.6 (even 
after msync()). Observations on 2.4 and 2.6 kernels:
- on 2.4, timestamps are altered a few seconds after the program exits.
- on 2.6, timestamps are never altered.

Is this behaviour a normal behaviour ?

Program example to reproduce the bug (you need to create a "test" file 
in the current directory first):

#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

int main(void) {
   int fd = open("test", O_RDWR);
   struct stat st;
   char* file;
   if (fd == -1) {
     printf("error opening file\n");
     return 1;
   }
   if (fstat(fd, &st) != 0) {
     printf("error fstating file\n");
     return 1;
   }

   if (st.st_size == 0) {
     printf("error empty file\n");
     return 1;
   }

   printf("Modified date before change: %u\n", st.st_mtime);

   file = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

   if (file == NULL) {
     printf("error mmaping file");
     return 1;
   }

   file[0] = file[0] + 1;

   if (msync((void*) file, st.st_size, MS_SYNC) != 0) {
     printf("error syncing file");
     return 1;
   }

   if (munmap(file, st.st_size) != 0) {
     printf("error closing file");
     return 1;
   }

   if (fstat(fd, &st) != 0) {
     printf("error fstating file\n");
     return 1;
   }

   printf("Modified date after change: %u\n", st.st_mtime);

   return 0;
}


             reply	other threads:[~2005-04-08 15:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-08 15:17 Xavier Roche [this message]
2005-04-08 15:46 ` Timestamp of file modified through mmap are not changed in 2.6 Alexander Nyberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4256A06C.8020304@exalead.com \
    --to=roche+kml2@exalead.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.