public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <ak@suse.de>
To: Alex Larsson <alexl@redhat.com>
Cc: linux-kernel@vger.kernel.org
Subject: Finegrained a/c/mtime was Re: Directory notification problem
Date: 03 Oct 2001 09:53:21 +0200	[thread overview]
Message-ID: <oupitdx9n2m.fsf@pigdrop.muc.suse.de> (raw)
In-Reply-To: <Pine.LNX.4.33.0110022206100.29931-100000@devserv.devel.redhat.com.suse.lists.linux.kernel>
In-Reply-To: Alex Larsson's message of "3 Oct 2001 04:28:55 +0200"

Alex Larsson <alexl@redhat.com> writes:

> I discovered a problem with the dnotify API while fixing a FAM bug today.
> 
> The problem occurs when you want to watch a file in a directory, and that 
> file is changed several times in the same second. When I get the directory 
> notify signal on the directory I need to stat the file to see if the 
> change was actually in the file. If the file already changed in the 
> current second the stat() result will be identical to the previous stat() 
> call, since the resolution of mtime and ctime is one second. 
> 
> This leads to missed notifications, leaving clients (such as Nautilus or 
> Konqueror) displaying an state not representing the current state.
> 
> The only userspace solutions I see is to delay all change notifications to 
> the end of the second, so that clients always read the correct state. This 
> is somewhat countrary to the idea of FAM though, as it does not give 
> instant feedback.
> 
> Is there any possibility of extending struct stat with a generation 
> counter? Or is there another solution to this problem?

make has similar problems with parallel builds on bigger multiprocessor
machines. Solaris7 has fixed this problem with adding new stat fields
to state that contains the ms for mtime/atime/ctime. There are even 
already filesystems on linux that support fine grained timestamps 
on linux, e.g. XFS has it as ns on disk. The problem is that VFS doesn't
support it currently, so it sets the ns parts always to zero. To fix 
it for m/c/atime requires new system calls for utime and stat64.
For stat is also requires a changed glibc ABI -- the glibc/2.4 stat64
structure reserved an additional 4 bytes for every timestamp, but these
either need to be used to give more seconds for the year 2038 problem
or be used for the ms fractions. y2038 is somewhat important too.

[In theory the existing additional bytes could be used for both on a
big endian host if you manage to define a numeric 48byte type in gcc
and be satisfied with 16bit ms resolution, but such a hack would
probably cause problems e.g. with other compilers. It would be
possible on Little Endian too, but only for mtime and ctime, as there
is no unused field in front of st_atime.  Overall I think a new stat
call is better. The ugly thing is just that the glibc ABI needs
updating too]

Solving it properly is a 2.5 thing.

-Andi



       reply	other threads:[~2001-10-03  7:53 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <Pine.LNX.4.33.0110022206100.29931-100000@devserv.devel.redhat.com.suse.lists.linux.kernel>
2001-10-03  7:53 ` Andi Kleen [this message]
2001-10-03  8:06   ` Finegrained a/c/mtime was Re: Directory notification problem Ulrich Drepper
2001-10-03 13:35     ` Eric W. Biederman
2001-10-03 14:11       ` Netfilter problem Kirill Ratkin
2001-10-03 21:42         ` Luigi Genoni
2001-10-03 15:24       ` Finegrained a/c/mtime was Re: Directory notification problem Gerhard Mack
2001-10-16 18:56         ` Riley Williams
2001-10-03 15:15     ` Alex Larsson
2001-10-03 21:26       ` Andi Kleen
2001-10-05 12:44         ` Padraig Brady
2001-10-05 12:59           ` Andrew Pimlott
2001-10-05 13:01           ` Andi Kleen
2001-10-05 13:15             ` Padraig Brady
2001-10-05 14:38               ` Andi Kleen
2001-10-05 15:00                 ` Padraig Brady
2001-10-05 19:12                   ` Andi Kleen
2001-10-08  8:39                     ` Padraig Brady
2001-10-08  8:58                       ` Padraig Brady
2001-10-08 10:04                       ` Trond Myklebust
2001-10-05 20:22                 ` Bernd Eckenfels
2001-10-03 17:45   ` Bernd Eckenfels
2001-10-13 15:24     ` Jamie Lokier
2001-10-13 16:12       ` Andi Kleen
2001-10-13 19:38         ` Jamie Lokier

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=oupitdx9n2m.fsf@pigdrop.muc.suse.de \
    --to=ak@suse.de \
    --cc=alexl@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox