]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
Windows: cm_SymLink export created cm_scache_t
authorJeffrey Altman <jaltman@your-file-system.com>
Fri, 2 Sep 2011 17:54:01 +0000 (13:54 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 15 Nov 2011 13:49:33 +0000 (05:49 -0800)
Permit the caller to request the cm_scache_t that represents
the created symlink or mount point object.

Reviewed-on: http://gerrit.openafs.org/5355
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
(cherry picked from commit 9b0cb614387403ff433cf39f84c13b626b1b9bdc)

Change-Id: I170059255e3bbc7e3ccbd59b66d7d8b11005a94f
Reviewed-on: http://gerrit.openafs.org/6031
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/WINNT/afsd/cm_ioctl.c
src/WINNT/afsd/cm_vnodeops.c
src/WINNT/afsd/cm_vnodeops.h

index 6221557ffe6fe4339e044a03a7a8b322451b2691..62b44cfebec4ad9b66c966de9f1f55533f50f575 100644 (file)
@@ -2055,7 +2055,7 @@ cm_IoctlCreateMountPoint(struct cm_ioctl *ioctlp, struct cm_user *userp, cm_scac
         tattr.unixModeBits = 0644;
         tattr.clientModTime = time(NULL);
 
-        code = cm_SymLink(dscp, leaf, mpInfo, 0, &tattr, userp, reqp);
+        code = cm_SymLink(dscp, leaf, mpInfo, 0, &tattr, userp, reqp, NULL);
     }
 
     if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
@@ -2124,7 +2124,7 @@ cm_IoctlSymlink(struct cm_ioctl *ioctlp, struct cm_user *userp, cm_scache_t *dsc
         tattr.mask = CM_ATTRMASK_UNIXMODEBITS;
         tattr.unixModeBits = 0755;
 
-        code = cm_SymLink(dscp, leaf, cp, 0, &tattr, userp, reqp);
+        code = cm_SymLink(dscp, leaf, cp, 0, &tattr, userp, reqp, NULL);
     }
 
     if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
index 1632ea01edb3a305887ff975e9432ecf6978da5a..904296313a51e553f341cb75094b4305cdcd5e2e 100644 (file)
@@ -3210,7 +3210,7 @@ long cm_Link(cm_scache_t *dscp, clientchar_t *cnamep, cm_scache_t *sscp, long fl
 }
 
 long cm_SymLink(cm_scache_t *dscp, clientchar_t *cnamep, fschar_t *contentsp, long flags,
-                cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp)
+                cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp, cm_scache_t **scpp)
 {
     cm_conn_t *connp;
     long code;
@@ -3226,6 +3226,9 @@ long cm_SymLink(cm_scache_t *dscp, clientchar_t *cnamep, fschar_t *contentsp, lo
     cm_dirOp_t dirop;
     fschar_t *fnamep = NULL;
 
+    if (scpp)
+        *scpp = NULL;
+
     /* Check for RO volume */
     if (dscp->flags & CM_SCACHEFLAG_RO)
         return CM_ERROR_READONLY;
@@ -3314,7 +3317,12 @@ long cm_SymLink(cm_scache_t *dscp, clientchar_t *cnamep, fschar_t *contentsp, lo
                                 userp, reqp, 0);
             }
             lock_ReleaseWrite(&scp->rw);
-            cm_ReleaseSCache(scp);
+
+            if (scpp) {
+                *scpp = scp;
+            } else {
+                cm_ReleaseSCache(scp);
+            }
         }
     }
 
index 70afb6ec4f442671c210f8d080f0bc1e237dfdb2..fcabb743848cb0eb8ad949f17ae88b4a6313c933 100644 (file)
@@ -142,7 +142,8 @@ extern long cm_Link(cm_scache_t *dscp, clientchar_t *namep, cm_scache_t *sscp,
                     long flags, cm_user_t *userp, cm_req_t *reqp);
 
 extern long cm_SymLink(cm_scache_t *dscp, clientchar_t *namep, fschar_t *contentsp,
-                       long flags, cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp);
+                       long flags, cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp,
+                       cm_scache_t **scpp);
 
 extern long cm_AssembleLink(cm_scache_t *linkScp, fschar_t *pathSuffixp,
                             cm_scache_t **newRootScpp, cm_space_t **newSpaceBufferp,