[PATCH] inotify
[linux-2.6.git] / fs / attr.c
index c3c76fe..b1796fb 100644 (file)
--- a/fs/attr.c
+++ b/fs/attr.c
@@ -10,7 +10,7 @@
 #include <linux/mm.h>
 #include <linux/string.h>
 #include <linux/smp_lock.h>
-#include <linux/dnotify.h>
+#include <linux/fsnotify.h>
 #include <linux/fcntl.h>
 #include <linux/quotaops.h>
 #include <linux/security.h>
@@ -107,31 +107,8 @@ int inode_setattr(struct inode * inode, struct iattr * attr)
 out:
        return error;
 }
-
 EXPORT_SYMBOL(inode_setattr);
 
-int setattr_mask(unsigned int ia_valid)
-{
-       unsigned long dn_mask = 0;
-
-       if (ia_valid & ATTR_UID)
-               dn_mask |= DN_ATTRIB;
-       if (ia_valid & ATTR_GID)
-               dn_mask |= DN_ATTRIB;
-       if (ia_valid & ATTR_SIZE)
-               dn_mask |= DN_MODIFY;
-       /* both times implies a utime(s) call */
-       if ((ia_valid & (ATTR_ATIME|ATTR_MTIME)) == (ATTR_ATIME|ATTR_MTIME))
-               dn_mask |= DN_ATTRIB;
-       else if (ia_valid & ATTR_ATIME)
-               dn_mask |= DN_ACCESS;
-       else if (ia_valid & ATTR_MTIME)
-               dn_mask |= DN_MODIFY;
-       if (ia_valid & ATTR_MODE)
-               dn_mask |= DN_ATTRIB;
-       return dn_mask;
-}
-
 int notify_change(struct dentry * dentry, struct iattr * attr)
 {
        struct inode *inode = dentry->d_inode;
@@ -197,11 +174,9 @@ int notify_change(struct dentry * dentry, struct iattr * attr)
        if (ia_valid & ATTR_SIZE)
                up_write(&dentry->d_inode->i_alloc_sem);
 
-       if (!error) {
-               unsigned long dn_mask = setattr_mask(ia_valid);
-               if (dn_mask)
-                       dnotify_parent(dentry, dn_mask);
-       }
+       if (!error)
+               fsnotify_change(dentry, ia_valid);
+
        return error;
 }