All of lore.kernel.org
 help / color / mirror / Atom feed
From: John McCutchan <ttb@tentacle.dhs.org>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Al Viro <viro@ftp.linux.org.uk>, Ray Lee <ray@madrabbit.org>,
	Andrew Morton <akpm@osdl.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	Robert Love <rml@novell.com>, Al Viro <viro@ZenIV.linux.org.uk>
Subject: Re: [patch] stop inotify from sending random DELETE_SELF event under load
Date: Tue, 20 Sep 2005 18:53:34 -0400	[thread overview]
Message-ID: <1127256814.749.5.camel@vertex> (raw)
In-Reply-To: <Pine.LNX.4.58.0509201234560.2553@g5.osdl.org>

On Tue, 2005-09-20 at 12:37 -0700, Linus Torvalds wrote:
> 
> On Tue, 20 Sep 2005, Al Viro wrote:
> > > 
> > > I really think that the patch I sent out yesterday is as good as it gets.  
> > > If you want immediate notification, you should ask for notification about
> > > name changes in a particular directory. IN_DELETE_SELF notification on a
> > > file simple is _not_ going to be immediate.
> > 
> > But then it's too early.  Note that with your patch we still get removal
> > of _any_ link to our inode (even though it's alive and well and we'd never
> > heard about the sodding link in the first place) terminating all events
> > on it.
> 
> Yes. What is in the current 2.6.14-rc2 tree doesn't do that. It considers 
> inodes "global". But it won't work reliably on networked filesystems, I 
> think.
> 
> Anyway, I do believe that IN_DELETE_SELF is stupid, but that you migth 
> re-arm it if you get it. 

Is there some reason we can't just do this from vfs_unlink

inode = dentry->inode;
iget (inode);
d_delete (dentry);
fsnotify_inoderemove (inode);
iput (inode);

This would allow us to have immediate event notification, and avoid a
race with the inode going away, right?

I think the path below will make link handling as good as it can get, by
sending IN_DELETE_SELF every time inode->i_nlink goes down, and when
inode->i_nlink == 0, send the IN_IGNORE event. Also, it stuffs
inode->i_nlink into the cookie giving user space a clue about the status
of the inode.

Index: linux/include/linux/fsnotify.h
===================================================================
--- linux.orig/include/linux/fsnotify.h	2005-08-28 19:41:01.000000000 -0400
+++ linux/include/linux/fsnotify.h	2005-09-20 18:46:15.000000000 -0400
@@ -63,8 +63,9 @@
  */
 static inline void fsnotify_inoderemove(struct inode *inode)
 {
-	inotify_inode_queue_event(inode, IN_DELETE_SELF, 0, NULL);
-	inotify_inode_is_dead(inode);
+	inotify_inode_queue_event(inode, IN_DELETE_SELF, inode->i_nlink, NULL);
+	if (inode->i_nlink == 0)
+		inotify_inode_is_dead(inode);
 }
 
 /*


  reply	other threads:[~2005-09-20 22:53 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-20  0:48 [patch] stop inotify from sending random DELETE_SELF event under load John McCutchan
2005-09-20  1:37 ` Linus Torvalds
2005-09-20  2:00   ` John McCutchan
2005-09-20  2:20     ` Linus Torvalds
2005-09-20  3:46       ` John McCutchan
2005-09-20  4:03         ` Linus Torvalds
2005-09-20  4:24           ` Al Viro
2005-09-20  4:30             ` Linus Torvalds
2005-09-20  4:36             ` John McCutchan
2005-09-20  4:46               ` Al Viro
2005-09-20  4:53                 ` John McCutchan
2005-09-20  4:58                   ` Al Viro
2005-09-20  5:06                     ` John McCutchan
2005-09-20  5:17                       ` Al Viro
2005-09-20 12:34                         ` John McCutchan
2005-09-20 16:38                           ` Al Viro
2005-09-20 17:44                             ` Ray Lee
2005-09-20 18:12                               ` Linus Torvalds
2005-09-20 18:22                                 ` Al Viro
2005-09-20 19:37                                   ` Linus Torvalds
2005-09-20 22:53                                     ` John McCutchan [this message]
2005-09-21  0:33                                       ` Linus Torvalds
2005-09-21  0:52                                         ` John McCutchan
2005-09-21  1:01                                       ` Al Viro
2005-09-21  1:41                                         ` John McCutchan
2005-09-21  2:36                                           ` Al Viro
2005-09-21  8:35                                             ` Christoph Hellwig
2005-09-21  4:15                                               ` [Ocfs2-devel] " Joel Becker
2005-09-21  9:15                                                 ` Joel Becker
2005-09-21  9:17                                                 ` Christoph Hellwig
2005-09-21  9:45                                                   ` [Ocfs2-devel] " Joel Becker
2005-09-21 14:45                                                     ` Joel Becker
2005-09-21 13:08                                                     ` [Ocfs2-devel] " Mark Fasheh
2005-09-21 18:08                                                       ` Mark Fasheh
2005-09-20 18:26                             ` John McCutchan
2005-09-20 19:39                               ` Linus Torvalds
2005-09-20  4:56                 ` Linus Torvalds
2005-09-20  4:52               ` Linus Torvalds
2005-09-20  4:27           ` John McCutchan
2005-09-20  3:33     ` Al Viro
2005-09-20  3:50       ` John McCutchan
2005-09-20  3:31   ` Al Viro
2005-09-20  3:51     ` John McCutchan
2005-09-20  8:33   ` Christoph Hellwig

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=1127256814.749.5.camel@vertex \
    --to=ttb@tentacle.dhs.org \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ray@madrabbit.org \
    --cc=rml@novell.com \
    --cc=torvalds@osdl.org \
    --cc=viro@ZenIV.linux.org.uk \
    --cc=viro@ftp.linux.org.uk \
    /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.