SUNRPC: Convert rpc_pipefs to use the generic filesystem notification hooks
Trond Myklebust [Fri, 8 Jun 2007 02:44:34 +0000 (22:44 -0400)]
This will allow rpc.gssd to use inotify instead of dnotify in order to
locate new rpc upcall pipes.

This also requires the exporting of __audit_inode_child(), which is used by
fsnotify_create() and fsnotify_mkdir(). Ccing David Woodhouse.

Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

kernel/auditsc.c
net/sunrpc/rpc_pipe.c

index 04f3ffb..0ae703c 100644 (file)
@@ -1525,6 +1525,7 @@ add_names:
                        context->names[idx].ino = (unsigned long)-1;
        }
 }
+EXPORT_SYMBOL_GPL(__audit_inode_child);
 
 /**
  * auditsc_get_stamp - get local copies of audit_context values
index 669e12a..ae83ac8 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/pagemap.h>
 #include <linux/mount.h>
 #include <linux/namei.h>
-#include <linux/dnotify.h>
+#include <linux/fsnotify.h>
 #include <linux/kernel.h>
 
 #include <asm/ioctls.h>
@@ -585,6 +585,7 @@ rpc_populate(struct dentry *parent,
                if (S_ISDIR(mode))
                        inc_nlink(dir);
                d_add(dentry, inode);
+               fsnotify_create(dir, dentry);
        }
        mutex_unlock(&dir->i_mutex);
        return 0;
@@ -606,7 +607,7 @@ __rpc_mkdir(struct inode *dir, struct dentry *dentry)
        inode->i_ino = iunique(dir->i_sb, 100);
        d_instantiate(dentry, inode);
        inc_nlink(dir);
-       inode_dir_notify(dir, DN_CREATE);
+       fsnotify_mkdir(dir, dentry);
        return 0;
 out_err:
        printk(KERN_WARNING "%s: %s failed to allocate inode for dentry %s\n",
@@ -748,7 +749,7 @@ rpc_mkpipe(struct dentry *parent, const char *name, void *private, struct rpc_pi
        rpci->flags = flags;
        rpci->ops = ops;
        rpci->nkern_readwriters = 1;
-       inode_dir_notify(dir, DN_CREATE);
+       fsnotify_create(dir, dentry);
        dget(dentry);
 out:
        mutex_unlock(&dir->i_mutex);