else if (client)
qword_print(f, *client?client:"DEFAULT");
qword_eol(f);
- xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, *client?client: "DEFAULT");
+ xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, client?client: "DEFAULT");
if (client) free(client);
free(he);
if (cache == NULL)
blkid_get_cache(&cache, NULL);
- blkid_probe_all_new(cache);
-
if (stat(path, &stb) != 0)
return 0;
devname = blkid_devno_to_devname(stb.st_dev);
qword_print(f, found_path);
qword_eol(f);
out:
- free(found_path);
- free(he);
+ if (found_path)
+ free(found_path);
+ if (he)
+ free(he);
free(dom);
xlog(D_CALL, "nfsd_fh: found %p path %s", found, found ? found->e_path : NULL);
return;
qword_print(f, path);
qword_printint(f, time(0)+30*60);
if (exp) {
- qword_printint(f, exp->e_flags);
+ int different_fs = strcmp(path, exp->e_path) != 0;
+
+ if (different_fs)
+ qword_printint(f, exp->e_flags & ~NFSEXP_FSID);
+ else
+ qword_printint(f, exp->e_flags);
qword_printint(f, exp->e_anonuid);
qword_printint(f, exp->e_anongid);
qword_printint(f, exp->e_fsid);
write_fsloc(f, exp, path);
write_secinfo(f, exp);
#if USE_BLKID
- if (exp->e_uuid == NULL) {
+ if (exp->e_uuid == NULL || different_fs) {
char u[16];
if (get_uuid(path, NULL, 16, u)) {
qword_print(f, "uuid");
qword_printhex(f, u, 16);
}
- } else if (exp->e_uuid) {
+ } else {
qword_print(f, "uuid");
qword_printhex(f, exp->e_uuid, 16);
}
}
/* If one is a CROSSMOUNT, then prefer the longest path */
if (((found->m_export.e_flags & NFSEXP_CROSSMOUNT) ||
- (found->m_export.e_flags & NFSEXP_CROSSMOUNT)) &&
+ (exp->m_export.e_flags & NFSEXP_CROSSMOUNT)) &&
strlen(found->m_export.e_path) !=
- strlen(found->m_export.e_path)) {
+ strlen(exp->m_export.e_path)) {
if (strlen(exp->m_export.e_path) >
strlen(found->m_export.e_path)) {