Added comments for libshare's NFS functions.

Some of the functions' purpose wasn't immediately obvious without
additional explanations. This commit adds these missing comments.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
Gunnar Beutner 2011-12-03 23:01:06 +01:00 committed by Brian Behlendorf
parent b9c59ec83a
commit 590338f63e
1 changed files with 57 additions and 1 deletions

View File

@ -48,6 +48,10 @@ typedef int (*nfs_shareopt_callback_t)(const char *opt, const char *value,
typedef int (*nfs_host_callback_t)(const char *sharepath, const char *host, typedef int (*nfs_host_callback_t)(const char *sharepath, const char *host,
const char *security, const char *access, void *cookie); const char *security, const char *access, void *cookie);
/**
* Invokes the specified callback function for each Solaris share option
* listed in the specified string.
*/
static int static int
foreach_nfs_shareopt(const char *shareopts, foreach_nfs_shareopt(const char *shareopts,
nfs_shareopt_callback_t callback, void *cookie) nfs_shareopt_callback_t callback, void *cookie)
@ -111,6 +115,11 @@ typedef struct nfs_host_cookie_s {
const char *security; const char *security;
} nfs_host_cookie_t; } nfs_host_cookie_t;
/**
* Helper function for foreach_nfs_host. This function checks whether the
* current share option is a host specification and invokes a callback
* function with information about the host.
*/
static int static int
foreach_nfs_host_cb(const char *opt, const char *value, void *pcookie) foreach_nfs_host_cb(const char *opt, const char *value, void *pcookie)
{ {
@ -164,6 +173,9 @@ foreach_nfs_host_cb(const char *opt, const char *value, void *pcookie)
return SA_OK; return SA_OK;
} }
/**
* Invokes a callback function for all NFS hosts that are set for a share.
*/
static int static int
foreach_nfs_host(sa_share_impl_t impl_share, nfs_host_callback_t callback, foreach_nfs_host(sa_share_impl_t impl_share, nfs_host_callback_t callback,
void *cookie) void *cookie)
@ -182,6 +194,9 @@ foreach_nfs_host(sa_share_impl_t impl_share, nfs_host_callback_t callback,
&udata); &udata);
} }
/**
* Converts a Solaris NFS host specification to its Linux equivalent.
*/
static int static int
get_linux_hostspec(const char *solaris_hostspec, char **plinux_hostspec) get_linux_hostspec(const char *solaris_hostspec, char **plinux_hostspec)
{ {
@ -206,6 +221,9 @@ get_linux_hostspec(const char *solaris_hostspec, char **plinux_hostspec)
return SA_OK; return SA_OK;
} }
/**
* Used internally by nfs_enable_share to enable sharing for a single host.
*/
static int static int
nfs_enable_share_one(const char *sharepath, const char *host, nfs_enable_share_one(const char *sharepath, const char *host,
const char *security, const char *access, void *pcookie) const char *security, const char *access, void *pcookie)
@ -266,6 +284,9 @@ nfs_enable_share_one(const char *sharepath, const char *host,
return SA_OK; return SA_OK;
} }
/**
* Adds a Linux share option to an array of NFS options.
*/
static int static int
add_linux_shareopt(char **plinux_opts, const char *key, const char *value) add_linux_shareopt(char **plinux_opts, const char *key, const char *value)
{ {
@ -298,6 +319,10 @@ add_linux_shareopt(char **plinux_opts, const char *key, const char *value)
return SA_OK; return SA_OK;
} }
/**
* Validates and converts a single Solaris share option to its Linux
* equivalent.
*/
static int static int
get_linux_shareopts_cb(const char *key, const char *value, void *cookie) get_linux_shareopts_cb(const char *key, const char *value, void *cookie)
{ {
@ -345,6 +370,10 @@ get_linux_shareopts_cb(const char *key, const char *value, void *cookie)
return SA_OK; return SA_OK;
} }
/**
* Takes a string containing Solaris share options (e.g. "sync,no_acl") and
* converts them to a NULL-terminated array of Linux NFS options.
*/
static int static int
get_linux_shareopts(const char *shareopts, char **plinux_opts) get_linux_shareopts(const char *shareopts, char **plinux_opts)
{ {
@ -369,6 +398,9 @@ get_linux_shareopts(const char *shareopts, char **plinux_opts)
return rc; return rc;
} }
/**
* Enables NFS sharing for the specified share.
*/
static int static int
nfs_enable_share(sa_share_impl_t impl_share) nfs_enable_share(sa_share_impl_t impl_share)
{ {
@ -396,6 +428,9 @@ nfs_enable_share(sa_share_impl_t impl_share)
return rc; return rc;
} }
/**
* Used internally by nfs_disable_share to disable sharing for a single host.
*/
static int static int
nfs_disable_share_one(const char *sharepath, const char *host, nfs_disable_share_one(const char *sharepath, const char *host,
const char *security, const char *access, void *cookie) const char *security, const char *access, void *cookie)
@ -439,6 +474,9 @@ nfs_disable_share_one(const char *sharepath, const char *host,
return SA_OK; return SA_OK;
} }
/**
* Disables NFS sharing for the specified share.
*/
static int static int
nfs_disable_share(sa_share_impl_t impl_share) nfs_disable_share(sa_share_impl_t impl_share)
{ {
@ -453,6 +491,9 @@ nfs_disable_share(sa_share_impl_t impl_share)
return foreach_nfs_host(impl_share, nfs_disable_share_one, NULL); return foreach_nfs_host(impl_share, nfs_disable_share_one, NULL);
} }
/**
* Checks whether the specified NFS share options are syntactically correct.
*/
static int static int
nfs_validate_shareopts(const char *shareopts) nfs_validate_shareopts(const char *shareopts)
{ {
@ -469,6 +510,9 @@ nfs_validate_shareopts(const char *shareopts)
return SA_OK; return SA_OK;
} }
/**
* Checks whether a share is currently active.
*/
static boolean_t static boolean_t
is_share_active(sa_share_impl_t impl_share) is_share_active(sa_share_impl_t impl_share)
{ {
@ -527,6 +571,12 @@ is_share_active(sa_share_impl_t impl_share)
return B_FALSE; return B_FALSE;
} }
/**
* Called to update a share's options. A share's options might be out of
* date if the share was loaded from disk (i.e. /etc/dfs/sharetab) and the
* "sharenfs" dataset property has changed in the meantime. This function
* also takes care of re-enabling the share if necessary.
*/
static int static int
nfs_update_shareopts(sa_share_impl_t impl_share, const char *resource, nfs_update_shareopts(sa_share_impl_t impl_share, const char *resource,
const char *shareopts) const char *shareopts)
@ -564,7 +614,10 @@ nfs_update_shareopts(sa_share_impl_t impl_share, const char *resource,
return SA_OK; return SA_OK;
} }
/**
* Clears a share's NFS options. Used by libshare to
* clean up shares that are about to be free()'d.
*/
static void static void
nfs_clear_shareopts(sa_share_impl_t impl_share) nfs_clear_shareopts(sa_share_impl_t impl_share)
{ {
@ -650,6 +703,9 @@ nfs_check_exportfs(void)
exit(0); exit(0);
} }
/**
* Initializes the NFS functionality of libshare.
*/
void void
libshare_nfs_init(void) libshare_nfs_init(void)
{ {