Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 79662
b: refs/heads/master
c: 52c4044
h: refs/heads/master
v: v3
  • Loading branch information
Chuck Lever authored and Trond Myklebust committed Jan 30, 2008
1 parent 49be109 commit f38bba4
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 86d61d8638ddf9cdf87df26c7fa69b2804425fbe
refs/heads/master: 52c4044d00fe703eb3fb18e0d8dfd1c196eb28be
48 changes: 48 additions & 0 deletions trunk/fs/lockd/clntlock.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,54 @@ struct nlm_wait {

static LIST_HEAD(nlm_blocked);

/**
* nlmclnt_init - Set up per-NFS mount point lockd data structures
* @server_name: server's hostname
* @server_address: server's network address
* @server_addrlen: length of server's address
* @protocol: transport protocol lockd should use
* @nfs_version: NFS protocol version for this mount point
*
* Returns pointer to an appropriate nlm_host struct,
* or an ERR_PTR value.
*/
struct nlm_host *nlmclnt_init(const char *server_name,
const struct sockaddr *server_address,
size_t server_addrlen,
unsigned short protocol, u32 nfs_version)
{
struct nlm_host *host;
u32 nlm_version = (nfs_version == 2) ? 1 : 4;
int status;

status = lockd_up(protocol);
if (status < 0)
return ERR_PTR(status);

host = nlmclnt_lookup_host((struct sockaddr_in *)server_address,
protocol, nlm_version,
server_name, strlen(server_name));
if (host == NULL) {
lockd_down();
return ERR_PTR(-ENOLCK);
}

return host;
}
EXPORT_SYMBOL_GPL(nlmclnt_init);

/**
* nlmclnt_done - Release resources allocated by nlmclnt_init()
* @host: nlm_host structure reserved by nlmclnt_init()
*
*/
void nlmclnt_done(struct nlm_host *host)
{
nlm_release_host(host);
lockd_down();
}
EXPORT_SYMBOL_GPL(nlmclnt_done);

/*
* Queue up a lock for blocking so that the GRANTED request can see it
*/
Expand Down
7 changes: 7 additions & 0 deletions trunk/include/linux/lockd/bind.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ extern struct nlmsvc_binding * nlmsvc_ops;
/*
* Functions exported by the lockd module
*/
extern struct nlm_host *nlmclnt_init(const char *server_name,
const struct sockaddr *server_address,
size_t server_addrlen,
unsigned short protocol,
u32 nfs_version);
extern void nlmclnt_done(struct nlm_host *host);

extern int nlmclnt_proc(struct inode *, int, struct file_lock *);
extern int lockd_up(int proto);
extern void lockd_down(void);
Expand Down

0 comments on commit f38bba4

Please sign in to comment.