Re: [patch] inotify for 2.6.12-rc3.

From: Robert Love
Date: Thu Apr 21 2005 - 00:31:58 EST


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 <rml@xxxxxxxxxx>

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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/