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:
Родитель
7b159fc18d
Коммит
50e437d522
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче