From: David Woodhouse Date: Thu, 28 Aug 2008 14:29:54 +0000 (-0400) Subject: Fix handling of explicit uuid X-Git-Tag: nfs-utils-1-1-4~37 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=commitdiff_plain;h=0ae97c5b87a56870e74a74ae50aeb2ae0e496907 Fix handling of explicit uuid Fix a couple of bugs which show up if you try to explicitly set a 16-byte UUID when exporting a file system. First, exportfs cuts the first two bytes off the UUID and writes something invalid to etab. Second, mountd writes the _ascii_ form of the UUID to the kernel, instead of converting it to hex. Signed-off-by: David Woodhouse Signed-off-by: Steve Dickson --- diff --git a/support/nfs/exports.c b/support/nfs/exports.c index 525e5b1..334c08e 100644 --- a/support/nfs/exports.c +++ b/support/nfs/exports.c @@ -595,7 +595,7 @@ bad_option: if (opt[5]!='\0' && *oe == '\0') ep->e_flags |= NFSEXP_FSID; else if (valid_uuid(opt+5)) - ep->e_uuid = strdup(opt+7); + ep->e_uuid = strdup(opt+5); else { xlog(L_ERROR, "%s: %d: bad fsid \"%s\"\n", flname, flline, opt); diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index 609c6e3..2ebdd45 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -592,8 +592,10 @@ static int dump_to_cache(FILE *f, char *domain, char *path, struct exportent *ex qword_printhex(f, u, 16); } } else { + char u[16]; + get_uuid(NULL, exp->e_uuid, 16, u); qword_print(f, "uuid"); - qword_printhex(f, exp->e_uuid, 16); + qword_printhex(f, u, 16); } #endif }