static int nfsctl_delclient(struct nfsctl_client *data);
static int nfsctl_export(struct nfsctl_export *data);
static int nfsctl_unexport(struct nfsctl_export *data);
-static int nfsctl_getfh(struct nfsctl_fhparm *, __u8 *);
static int nfsctl_getfd(struct nfsctl_fdparm *, __u8 *);
static int nfsctl_getfs(struct nfsctl_fsparm *, struct knfsd_fh *);
#ifdef notyet
return err;
}
-static inline int
-nfsctl_getfh(struct nfsctl_fhparm *data, __u8 *res)
-{
- struct sockaddr_in *sin;
- struct svc_client *clp;
- int err = 0;
- struct knfsd_fh fh;
-
- if (data->gf_addr.sa_family != AF_INET)
- return -EPROTONOSUPPORT;
- if (data->gf_version < 2 || data->gf_version > NFSSVC_MAXVERS)
- return -EINVAL;
- sin = (struct sockaddr_in *)&data->gf_addr;
-
- exp_readlock();
- if (!(clp = exp_getclient(sin)))
- err = -EPERM;
- else
- err = exp_rootfh(clp, to_kdev_t(data->gf_dev), data->gf_ino, NULL, &fh, NFS_FHSIZE);
- exp_unlock();
-
- if (err == 0) {
- if (fh.fh_size > NFS_FHSIZE)
- err = -EINVAL;
- else {
- memset(res,0, NFS_FHSIZE);
- memcpy(res, &fh.fh_base, fh.fh_size);
- }
- }
-
- return err;
-}
-
#ifdef CONFIG_NFSD
#define handle_sys_nfsservctl sys_nfsservctl
#endif
err = nfsctl_ugidupdate(&arg->ca_umap);
break;
#endif
- case NFSCTL_GETFH:
- err = nfsctl_getfh(&arg->ca_getfh, res->cr_getfh);
- break;
case NFSCTL_GETFD:
err = nfsctl_getfd(&arg->ca_getfd, res->cr_getfh);
break;