SUNRPC: Convert rpc_pipefs to use the generic filesystem notification hooks

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>
This commit is contained in:
Trond Myklebust 2007-06-07 22:44:34 -04:00
Родитель 7b159fc18d
Коммит 50e437d522
2 изменённых файлов: 5 добавлений и 3 удалений

Просмотреть файл

@ -1525,6 +1525,7 @@ add_names:
context->names[idx].ino = (unsigned long)-1; context->names[idx].ino = (unsigned long)-1;
} }
} }
EXPORT_SYMBOL_GPL(__audit_inode_child);
/** /**
* auditsc_get_stamp - get local copies of audit_context values * auditsc_get_stamp - get local copies of audit_context values

Просмотреть файл

@ -14,7 +14,7 @@
#include <linux/pagemap.h> #include <linux/pagemap.h>
#include <linux/mount.h> #include <linux/mount.h>
#include <linux/namei.h> #include <linux/namei.h>
#include <linux/dnotify.h> #include <linux/fsnotify.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/ioctls.h> #include <asm/ioctls.h>
@ -585,6 +585,7 @@ rpc_populate(struct dentry *parent,
if (S_ISDIR(mode)) if (S_ISDIR(mode))
inc_nlink(dir); inc_nlink(dir);
d_add(dentry, inode); d_add(dentry, inode);
fsnotify_create(dir, dentry);
} }
mutex_unlock(&dir->i_mutex); mutex_unlock(&dir->i_mutex);
return 0; return 0;
@ -606,7 +607,7 @@ __rpc_mkdir(struct inode *dir, struct dentry *dentry)
inode->i_ino = iunique(dir->i_sb, 100); inode->i_ino = iunique(dir->i_sb, 100);
d_instantiate(dentry, inode); d_instantiate(dentry, inode);
inc_nlink(dir); inc_nlink(dir);
inode_dir_notify(dir, DN_CREATE); fsnotify_mkdir(dir, dentry);
return 0; return 0;
out_err: out_err:
printk(KERN_WARNING "%s: %s failed to allocate inode for dentry %s\n", 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->flags = flags;
rpci->ops = ops; rpci->ops = ops;
rpci->nkern_readwriters = 1; rpci->nkern_readwriters = 1;
inode_dir_notify(dir, DN_CREATE); fsnotify_create(dir, dentry);
dget(dentry); dget(dentry);
out: out:
mutex_unlock(&dir->i_mutex); mutex_unlock(&dir->i_mutex);