From: Trond Myklebust <Trond.Myklebust@netapp.com>
The fedfs ldap server will specify a ttl for its entries.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This is a refactoring change only. There should be no change in
behavior.
Original patch had updates to utils/mountd/junctions.c, which no
longer exists. These are not included here.
Create a macro for the default cache TTL, which is used in several
places besides the export cache.
Make e_ttl unsigned.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
} nfs_export;
#define HASH_TABLE_SIZE 1021
} nfs_export;
#define HASH_TABLE_SIZE 1021
+#define DEFAULT_TTL (30 * 60)
typedef struct _exp_hash_entry {
nfs_export * p_first;
typedef struct _exp_hash_entry {
nfs_export * p_first;
char * e_fslocdata;
char * e_uuid;
struct sec_entry e_secinfo[SECFLAVOR_COUNT+1];
char * e_fslocdata;
char * e_uuid;
struct sec_entry e_secinfo[SECFLAVOR_COUNT+1];
ee->e_nsquids = 0;
ee->e_nsqgids = 0;
ee->e_uuid = NULL;
ee->e_nsquids = 0;
ee->e_nsqgids = 0;
ee->e_uuid = NULL;
+ ee->e_ttl = DEFAULT_TTL;
qword_print(f, "nfsd");
qword_print(f, ipaddr);
qword_print(f, "nfsd");
qword_print(f, ipaddr);
- qword_printint(f, time(0)+30*60);
+ qword_printuint(f, time(0) + DEFAULT_TTL);
if (use_ipaddr)
qword_print(f, ipaddr);
else if (client)
if (use_ipaddr)
qword_print(f, ipaddr);
else if (client)
}
}
qword_printuint(f, uid);
}
}
qword_printuint(f, uid);
- qword_printuint(f, time(0)+30*60);
+ qword_printuint(f, time(0) + DEFAULT_TTL);
if (rv >= 0) {
qword_printuint(f, ngroups);
for (i=0; i<ngroups; i++)
if (rv >= 0) {
qword_printuint(f, ngroups);
for (i=0; i<ngroups; i++)
{
qword_print(f, domain);
qword_print(f, path);
{
qword_print(f, domain);
qword_print(f, path);
- qword_printint(f, time(0)+30*60);
if (exp) {
int different_fs = strcmp(path, exp->e_path) != 0;
int flag_mask = different_fs ? ~NFSEXP_FSID : ~0;
if (exp) {
int different_fs = strcmp(path, exp->e_path) != 0;
int flag_mask = different_fs ? ~NFSEXP_FSID : ~0;
+ qword_printuint(f, time(0) + exp->e_ttl);
qword_printint(f, exp->e_flags & flag_mask);
qword_printint(f, exp->e_anonuid);
qword_printint(f, exp->e_anongid);
qword_printint(f, exp->e_flags & flag_mask);
qword_printint(f, exp->e_anonuid);
qword_printint(f, exp->e_anongid);
qword_print(f, "uuid");
qword_printhex(f, u, 16);
}
qword_print(f, "uuid");
qword_printhex(f, u, 16);
}
+ } else
+ qword_printuint(f, time(0) + DEFAULT_TTL);
/*
* Give IP->domain and domain+path->options to kernel
/*
* Give IP->domain and domain+path->options to kernel
- * % echo nfsd $IP $[now+30*60] $domain > /proc/net/rpc/auth.unix.ip/channel
- * % echo $domain $path $[now+30*60] $options $anonuid $anongid $fsid > /proc/net/rpc/nfsd.export/channel
+ * % echo nfsd $IP $[now+DEFAULT_TTL] $domain > /proc/net/rpc/auth.unix.ip/channel
+ * % echo $domain $path $[now+DEFAULT_TTL] $options $anonuid $anongid $fsid > /proc/net/rpc/nfsd.export/channel
*/
static int cache_export_ent(char *domain, struct exportent *exp, char *path)
*/
static int cache_export_ent(char *domain, struct exportent *exp, char *path)
qword_print(f, "nfsd");
qword_print(f,
host_ntop(get_addrlist(exp->m_client, 0), buf, sizeof(buf)));
qword_print(f, "nfsd");
qword_print(f,
host_ntop(get_addrlist(exp->m_client, 0), buf, sizeof(buf)));
- qword_printint(f, time(0)+30*60);
+ qword_printuint(f, time(0) + exp->m_export.e_ttl);
qword_print(f, exp->m_client->m_hostname);
err = qword_eol(f);
qword_print(f, exp->m_client->m_hostname);
err = qword_eol(f);