소스 검색

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>
Trond Myklebust 18 년 전
부모
커밋
50e437d522
2개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      kernel/auditsc.c
  2. 4 3
      net/sunrpc/rpc_pipe.c

+ 1 - 0
kernel/auditsc.c

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

+ 4 - 3
net/sunrpc/rpc_pipe.c

@@ -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);