--- --- 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, _