diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/lockd/clntproc.c | 33 | ||||
| -rw-r--r-- | fs/nfs/nfs3proc.c | 4 | ||||
| -rw-r--r-- | fs/nfs/proc.c | 4 |
3 files changed, 16 insertions, 25 deletions
diff --git a/fs/lockd/clntproc.c b/fs/lockd/clntproc.c index a10343bed160..b1a4dba443bc 100644 --- a/fs/lockd/clntproc.c +++ b/fs/lockd/clntproc.c | |||
| @@ -145,34 +145,21 @@ static void nlmclnt_release_lockargs(struct nlm_rqst *req) | |||
| 145 | BUG_ON(req->a_args.lock.fl.fl_ops != NULL); | 145 | BUG_ON(req->a_args.lock.fl.fl_ops != NULL); |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | /* | 148 | /** |
| 149 | * This is the main entry point for the NLM client. | 149 | * nlmclnt_proc - Perform a single client-side lock request |
| 150 | * @host: address of a valid nlm_host context representing the NLM server | ||
| 151 | * @cmd: fcntl-style file lock operation to perform | ||
| 152 | * @fl: address of arguments for the lock operation | ||
| 153 | * | ||
| 150 | */ | 154 | */ |
| 151 | int | 155 | int nlmclnt_proc(struct nlm_host *host, int cmd, struct file_lock *fl) |
| 152 | nlmclnt_proc(struct inode *inode, int cmd, struct file_lock *fl) | ||
| 153 | { | 156 | { |
| 154 | struct rpc_clnt *client = NFS_CLIENT(inode); | ||
| 155 | struct sockaddr_in addr; | ||
| 156 | struct nfs_server *nfssrv = NFS_SERVER(inode); | ||
| 157 | struct nlm_host *host; | ||
| 158 | struct nlm_rqst *call; | 157 | struct nlm_rqst *call; |
| 159 | sigset_t oldset; | 158 | sigset_t oldset; |
| 160 | unsigned long flags; | 159 | unsigned long flags; |
| 161 | int status, vers; | 160 | int status; |
| 162 | |||
| 163 | vers = (NFS_PROTO(inode)->version == 3) ? 4 : 1; | ||
| 164 | if (NFS_PROTO(inode)->version > 3) { | ||
| 165 | printk(KERN_NOTICE "NFSv4 file locking not implemented!\n"); | ||
| 166 | return -ENOLCK; | ||
| 167 | } | ||
| 168 | |||
| 169 | rpc_peeraddr(client, (struct sockaddr *) &addr, sizeof(addr)); | ||
| 170 | host = nlmclnt_lookup_host(&addr, client->cl_xprt->prot, vers, | ||
| 171 | nfssrv->nfs_client->cl_hostname, | ||
| 172 | strlen(nfssrv->nfs_client->cl_hostname)); | ||
| 173 | if (host == NULL) | ||
| 174 | return -ENOLCK; | ||
| 175 | 161 | ||
| 162 | nlm_get_host(host); | ||
| 176 | call = nlm_alloc_call(host); | 163 | call = nlm_alloc_call(host); |
| 177 | if (call == NULL) | 164 | if (call == NULL) |
| 178 | return -ENOMEM; | 165 | return -ENOMEM; |
| @@ -219,7 +206,7 @@ nlmclnt_proc(struct inode *inode, int cmd, struct file_lock *fl) | |||
| 219 | dprintk("lockd: clnt proc returns %d\n", status); | 206 | dprintk("lockd: clnt proc returns %d\n", status); |
| 220 | return status; | 207 | return status; |
| 221 | } | 208 | } |
| 222 | EXPORT_SYMBOL(nlmclnt_proc); | 209 | EXPORT_SYMBOL_GPL(nlmclnt_proc); |
| 223 | 210 | ||
| 224 | /* | 211 | /* |
| 225 | * Allocate an NLM RPC call struct | 212 | * Allocate an NLM RPC call struct |
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c index e68580ebaa47..b353c1a05bfd 100644 --- a/fs/nfs/nfs3proc.c +++ b/fs/nfs/nfs3proc.c | |||
| @@ -767,7 +767,9 @@ static void nfs3_proc_commit_setup(struct nfs_write_data *data, struct rpc_messa | |||
| 767 | static int | 767 | static int |
| 768 | nfs3_proc_lock(struct file *filp, int cmd, struct file_lock *fl) | 768 | nfs3_proc_lock(struct file *filp, int cmd, struct file_lock *fl) |
| 769 | { | 769 | { |
| 770 | return nlmclnt_proc(filp->f_path.dentry->d_inode, cmd, fl); | 770 | struct inode *inode = filp->f_path.dentry->d_inode; |
| 771 | |||
| 772 | return nlmclnt_proc(NFS_SERVER(inode)->nlm_host, cmd, fl); | ||
| 771 | } | 773 | } |
| 772 | 774 | ||
| 773 | const struct nfs_rpc_ops nfs_v3_clientops = { | 775 | const struct nfs_rpc_ops nfs_v3_clientops = { |
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index c9f46a24e75c..5ccf7faee19c 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c | |||
| @@ -593,7 +593,9 @@ nfs_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg) | |||
| 593 | static int | 593 | static int |
| 594 | nfs_proc_lock(struct file *filp, int cmd, struct file_lock *fl) | 594 | nfs_proc_lock(struct file *filp, int cmd, struct file_lock *fl) |
| 595 | { | 595 | { |
| 596 | return nlmclnt_proc(filp->f_path.dentry->d_inode, cmd, fl); | 596 | struct inode *inode = filp->f_path.dentry->d_inode; |
| 597 | |||
| 598 | return nlmclnt_proc(NFS_SERVER(inode)->nlm_host, cmd, fl); | ||
| 597 | } | 599 | } |
| 598 | 600 | ||
| 599 | 601 | ||
