
---


---

 linux-2.6.18-rc5-andros/fs/nfs/nfs4proc.c |   34 ++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff -puN fs/nfs/nfs4proc.c~nfs-secinfo-proc fs/nfs/nfs4proc.c
--- linux-2.6.18-rc5/fs/nfs/nfs4proc.c~nfs-secinfo-proc	2006-10-11 17:36:54.000000000 -0400
+++ linux-2.6.18-rc5-andros/fs/nfs/nfs4proc.c	2006-10-11 17:36:54.000000000 -0400
@@ -3694,6 +3694,40 @@ int nfs4_proc_fs_locations(struct inode 
 	return status;
 }
 
+static int
+_nfs4_proc_secinfo(struct nfs_server *server, struct nfs_fh *dir_fh, struct qstr *name, struct nfs4_secinfo_res *res)
+{
+	int status;
+	struct nfs4_secinfo_arg args = {
+		.dir_fh = dir_fh,
+		.name = name,
+	};
+	struct rpc_message msg = {
+		.rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_SECINFO],
+		.rpc_argp = &args,
+		.rpc_resp = res,
+	};
+
+	dprintk("NFS call  secinfo %s\n", name->name);
+	status = rpc_call_sync(server->client, &msg, 0);
+	dprintk("NFS reply secinfo: %d\n", status);
+	return status;
+}
+
+static int
+nfs4_proc_secinfo(struct nfs_server *server, struct nfs_fh *dir_fh, struct qstr *name, struct nfs4_secinfo_res *res)
+{
+	struct nfs4_exception exception = { };
+	int err;
+
+	do {
+		err = nfs4_handle_exception(server,
+			     _nfs4_proc_secinfo(server, dir_fh, name, res),
+			     &exception);
+	} while (exception.retry);
+	return err;
+}
+
 struct nfs4_state_recovery_ops nfs4_reboot_recovery_ops = {
 	.recover_open	= nfs4_open_reclaim,
 	.recover_lock	= nfs4_lock_reclaim,
_
