From af218dee6c517f4636a18c681bff6f1212a7d9c0 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Wed, 21 Dec 2011 22:00:12 -0500 Subject: [PATCH] afsd: Parse cacheinfo during argument parsing Currently we parse cacheinfo in afsd_run, when the client is initialized and started. Parsing cacheinfo can change afsd_cacheMountDir, however, which may be of interest to afsd.o users; in particular, libuafs exposes this via uafs_MountDir(). This means that if a mount dir is not explicitly specified in the libcmd arguments to afsd, a libuafs-using program will see the mountpoint as the empty string if it is queried after afsd_parse but before afsd_run. For afsd.fuse, this causes the cryptic error message: fuse: bad mount point `': No such file or directory since the mountpoint is the empty string if it is not specified explicitly on the command line. To fix this, move cacheinfo parsing to effectively near the end of afsd_parse, so the mountpoint is calculated in afsd_parse(). Change-Id: I058f2c7c2f0cc21db21c4b1d38ff63b9e9ed1562 Reviewed-on: http://gerrit.openafs.org/6400 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/afsd/afsd.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/afsd/afsd.c b/src/afsd/afsd.c index 91d6006..4c96d9c 100644 --- a/src/afsd/afsd.c +++ b/src/afsd/afsd.c @@ -1913,6 +1913,12 @@ mainproc(struct cmd_syndesc *as, void *arock) /* -rxmaxfrags */ rxmaxfrags = atoi(as->parms[38].items->data); } + + /* parse cacheinfo file if this is a diskcache */ + if (ParseCacheInfoFile()) { + exit(1); + } + return 0; } @@ -1949,11 +1955,6 @@ afsd_run(void) printf("%s: My home cell is '%s'\n", rn, LclCellName); } - /* parse cacheinfo file if this is a diskcache */ - if (ParseCacheInfoFile()) { - exit(1); - } - if (!enable_nomount) { if (afsd_check_mount(rn, afsd_cacheMountDir)) { return -1; -- 1.9.4