correct magic vnode volumename parsing
authorDerrick Brashear <shadow@dementia.org>
Wed, 24 Feb 2010 05:41:48 +0000 (00:41 -0500)
committerDerrick Brashear <shadow@dementia.org>
Thu, 25 Feb 2010 05:07:19 +0000 (21:07 -0800)
if /afs/.:mount/cell:volume:vnode is passed in, don't pass the :vnode
into the volume id lookup

Change-Id: If877b467cd37f06dcb090c34560bf76f8e4b0d10
Reviewed-on: http://gerrit.openafs.org/1383
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/afs/VNOPS/afs_vnop_lookup.c

index be81ff3..1e314fa 100644 (file)
@@ -178,7 +178,12 @@ EvalMountData(char type, char *data, afs_uint32 states, afs_uint32 cellnum,
     /* Get the volume struct. Unless this volume name has ".readonly" or
      * ".backup" in it, this will get the volume struct for the RW volume.
      * The RO volume will be prefetched if requested (but not returned).
+     * Set up to use volname first.
      */
+    cpos = afs_strchr(volnamep, ':'); /* if vno present */
+    if (cpos)
+       *cpos = 0;
+    
     /*printf("Calling GetVolumeByName\n");*/
     tvp = afs_GetVolumeByName(volnamep, mtptCell, prefetch, areq, WRITE_LOCK);
 
@@ -207,6 +212,9 @@ EvalMountData(char type, char *data, afs_uint32 states, afs_uint32 cellnum,
        }
        osi_FreeSmallSpace(buf);
     }
+    /* done with volname */
+    if (cpos)
+       *cpos = ':';
 
     if (!tvp) {
        /*printf("Couldn't find the volume\n");*/