On Thu, 2005-04-21 at 01:13 -0400, Robert Love wrote:

> Live from linux.conf.au, below is inotify against 2.6.12-rc3.

G'day mates!  By popular request!

Cheers,

        Robert Love


Send an event on xattr change.  Just use the existing metadata change event,
IN_ATTRIB, instead of adding a new event.  While here, do not wrap
dnotify_flush(), no need.

Signed-off-by: Robert Love <[EMAIL PROTECTED]>

 fs/open.c                |    2 +-
 fs/xattr.c               |    5 ++++-
 include/linux/fsnotify.h |   18 ++++++++++--------
 3 files changed, 15 insertions(+), 10 deletions(-)

diff -urN linux-2.6.12-rc3-inotify-0.22-2/fs/open.c linux/fs/open.c
--- linux-2.6.12-rc3-inotify-0.22-2/fs/open.c   2005-04-21 01:13:17.000000000 
-0400
+++ linux/fs/open.c     2005-04-21 01:17:27.000000000 -0400
@@ -1000,7 +1000,7 @@
                        retval = err;
        }
 
-       fsnotify_flush(filp, id);
+       dnotify_flush(filp, id);
        locks_remove_posix(filp, id);
        fput(filp);
        return retval;
diff -urN linux-2.6.12-rc3-inotify-0.22-2/fs/xattr.c linux/fs/xattr.c
--- linux-2.6.12-rc3-inotify-0.22-2/fs/xattr.c  2005-04-21 01:13:17.000000000 
-0400
+++ linux/fs/xattr.c    2005-04-21 01:24:24.000000000 -0400
@@ -16,6 +16,7 @@
 #include <linux/security.h>
 #include <linux/syscalls.h>
 #include <linux/module.h>
+#include <linux/fsnotify.h>
 #include <asm/uaccess.h>
 
 /*
@@ -57,8 +58,10 @@
                if (error)
                        goto out;
                error = d->d_inode->i_op->setxattr(d, kname, kvalue, size, 
flags);
-               if (!error)
+               if (!error) {
+                       fsnotify_xattr(d);
                        security_inode_post_setxattr(d, kname, kvalue, size, 
flags);
+               }
 out:
                up(&d->d_inode->i_sem);
        }
diff -urN linux-2.6.12-rc3-inotify-0.22-2/include/linux/fsnotify.h 
linux/include/linux/fsnotify.h
--- linux-2.6.12-rc3-inotify-0.22-2/include/linux/fsnotify.h    2005-04-21 
01:13:20.000000000 -0400
+++ linux/include/linux/fsnotify.h      2005-04-21 01:23:06.000000000 -0400
@@ -131,6 +131,16 @@
 }
 
 /*
+ * fsnotify_xattr - extended attributes were changed
+ */
+static inline void fsnotify_xattr(struct dentry *dentry)
+{
+       inotify_dentry_parent_queue_event(dentry, IN_ATTRIB, 0,
+                                         dentry->d_name.name);
+       inotify_inode_queue_event(dentry->d_inode, IN_ATTRIB, 0, NULL);
+}
+
+/*
  * fsnotify_change - notify_change event.  file was modified and/or metadata
  * was changed.
  */
@@ -177,14 +187,6 @@
        }
 }
 
-/*
- * fsnotify_flush - flush time!
- */
-static inline void fsnotify_flush(struct file *filp, fl_owner_t id)
-{
-       dnotify_flush(filp, id);
-}
-
 #ifdef CONFIG_INOTIFY  /* inotify helpers */
 
 /*


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to