Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79664
b: refs/heads/master
c: 1093a60
h: refs/heads/master
v: v3
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Jan 30, 2008
1 parent a7bc4d6 commit 453c807
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9289e7f91add1c09c3ec8571a2080f7507730b8d
refs/heads/master: 1093a60ef34bb12010fe7ea4b780bee1c57cfbbe
33 changes: 10 additions & 23 deletions trunk/fs/lockd/clntproc.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,34 +145,21 @@ static void nlmclnt_release_lockargs(struct nlm_rqst *req)
BUG_ON(req->a_args.lock.fl.fl_ops != NULL);
}

/*
* This is the main entry point for the NLM client.
/**
* nlmclnt_proc - Perform a single client-side lock request
* @host: address of a valid nlm_host context representing the NLM server
* @cmd: fcntl-style file lock operation to perform
* @fl: address of arguments for the lock operation
*
*/
int
nlmclnt_proc(struct inode *inode, int cmd, struct file_lock *fl)
int nlmclnt_proc(struct nlm_host *host, int cmd, struct file_lock *fl)
{
struct rpc_clnt *client = NFS_CLIENT(inode);
struct sockaddr_in addr;
struct nfs_server *nfssrv = NFS_SERVER(inode);
struct nlm_host *host;
struct nlm_rqst *call;
sigset_t oldset;
unsigned long flags;
int status, vers;

vers = (NFS_PROTO(inode)->version == 3) ? 4 : 1;
if (NFS_PROTO(inode)->version > 3) {
printk(KERN_NOTICE "NFSv4 file locking not implemented!\n");
return -ENOLCK;
}

rpc_peeraddr(client, (struct sockaddr *) &addr, sizeof(addr));
host = nlmclnt_lookup_host(&addr, client->cl_xprt->prot, vers,
nfssrv->nfs_client->cl_hostname,
strlen(nfssrv->nfs_client->cl_hostname));
if (host == NULL)
return -ENOLCK;
int status;

nlm_get_host(host);
call = nlm_alloc_call(host);
if (call == NULL)
return -ENOMEM;
Expand Down Expand Up @@ -219,7 +206,7 @@ nlmclnt_proc(struct inode *inode, int cmd, struct file_lock *fl)
dprintk("lockd: clnt proc returns %d\n", status);
return status;
}
EXPORT_SYMBOL(nlmclnt_proc);
EXPORT_SYMBOL_GPL(nlmclnt_proc);

/*
* Allocate an NLM RPC call struct
Expand Down
4 changes: 3 additions & 1 deletion trunk/fs/nfs/nfs3proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -767,7 +767,9 @@ static void nfs3_proc_commit_setup(struct nfs_write_data *data, struct rpc_messa
static int
nfs3_proc_lock(struct file *filp, int cmd, struct file_lock *fl)
{
return nlmclnt_proc(filp->f_path.dentry->d_inode, cmd, fl);
struct inode *inode = filp->f_path.dentry->d_inode;

return nlmclnt_proc(NFS_SERVER(inode)->nlm_host, cmd, fl);
}

const struct nfs_rpc_ops nfs_v3_clientops = {
Expand Down
4 changes: 3 additions & 1 deletion trunk/fs/nfs/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,9 @@ nfs_proc_commit_setup(struct nfs_write_data *data, struct rpc_message *msg)
static int
nfs_proc_lock(struct file *filp, int cmd, struct file_lock *fl)
{
return nlmclnt_proc(filp->f_path.dentry->d_inode, cmd, fl);
struct inode *inode = filp->f_path.dentry->d_inode;

return nlmclnt_proc(NFS_SERVER(inode)->nlm_host, cmd, fl);
}


Expand Down
3 changes: 2 additions & 1 deletion trunk/include/linux/lockd/bind.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ extern struct nlm_host *nlmclnt_init(const char *server_name,
u32 nfs_version);
extern void nlmclnt_done(struct nlm_host *host);

extern int nlmclnt_proc(struct inode *, int, struct file_lock *);
extern int nlmclnt_proc(struct nlm_host *host, int cmd,
struct file_lock *fl);
extern int lockd_up(int proto);
extern void lockd_down(void);

Expand Down

0 comments on commit 453c807

Please sign in to comment.