Windows: Enforce Share Access
[openafs.git] / src / WINNT / afsd / cm_vnodeops.h
index 8fcd51f..fd2275a 100644 (file)
@@ -1,14 +1,14 @@
 /*
  * Copyright 2000, International Business Machines Corporation and others.
  * All Rights Reserved.
- * 
+ *
  * This software has been released under the terms of the IBM Public
  * License.  For details, see the LICENSE file in the top-level source
  * directory or online at http://www.openafs.org/dl/license10.html
  */
 
-#ifndef __CM_VNODEOPS_H_ENV__
-#define __CM_VNODEOPS_H_ENV__ 1
+#ifndef OPENAFS_WINNT_AFSD_CM_VNODEOPS_H
+#define OPENAFS_WINNT_AFSD_CM_VNODEOPS_H 1
 
 extern unsigned int cm_mountRootGen;
 
@@ -97,7 +97,7 @@ extern long cm_Lookup(cm_scache_t *dscp, clientchar_t *namep, long flags,
 #endif
 
 extern long cm_LookupInternal(cm_scache_t *dscp, clientchar_t *namep, long flags,
-                              cm_user_t *userp, cm_req_t *reqp, 
+                              cm_user_t *userp, cm_req_t *reqp,
                               cm_scache_t **outpScpp);
 
 extern afs_int32 cm_TryBulkStat(cm_scache_t *dscp, osi_hyper_t *offsetp,
@@ -110,7 +110,7 @@ extern long cm_Create(cm_scache_t *scp, clientchar_t *namep, long flags,
                       cm_attr_t *attrp, cm_scache_t **scpp,
                       cm_user_t *userp, cm_req_t *reqp);
 
-extern long cm_FSync(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
+extern long cm_FSync(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp, afs_uint32 locked);
 
 extern void cm_StatusFromAttr(struct AFSStoreStatus *statusp,
                               struct cm_scache *scp, struct cm_attr *attrp);
@@ -120,11 +120,12 @@ extern long cm_Unlink(cm_scache_t *dscp, fschar_t *fnamep,
                       cm_user_t *userp, cm_req_t *reqp);
 
 extern long cm_ApplyDir(cm_scache_t *scp, cm_DirFuncp_t funcp, void *parmp,
-                        osi_hyper_t *startOffsetp, cm_user_t *userp, cm_req_t *reqp, 
+                        osi_hyper_t *startOffsetp, cm_user_t *userp, cm_req_t *reqp,
                         cm_scache_t **retscp);
 
 extern long cm_MakeDir(cm_scache_t *dscp, clientchar_t *lastNamep, 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);
 
 extern long cm_RemoveDir(cm_scache_t *dscp, fschar_t *lastNamep, clientchar_t *originalNamep,
                          cm_user_t *userp, cm_req_t *reqp);
@@ -141,13 +142,14 @@ 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,
                             cm_user_t *userp, cm_req_t *reqp);
 
-extern int cm_ExpandSysName(clientchar_t *inp, clientchar_t *outp, long outSizeCch,
+extern int cm_ExpandSysName(cm_req_t *reqp, clientchar_t *inp, clientchar_t *outp, long outSizeCch,
                             unsigned int sysNameIndex);
 
 extern long cm_Open(cm_scache_t *scp, int type, cm_user_t *userp);
@@ -172,11 +174,16 @@ typedef struct cm_lock_data {
     LARGE_INTEGER LOffset, LLength;
 } cm_lock_data_t;
 
-extern long cm_CheckNTOpen(cm_scache_t *scp, unsigned int desiredAccess,
-                           unsigned int createDisp, cm_user_t *userp,
-                           cm_req_t *reqp, cm_lock_data_t ** ldpp);
+extern long cm_CheckNTOpen(cm_scache_t *scp,
+                           unsigned int desiredAccess,
+                           unsigned int shareAccess,
+                           unsigned int createDisp,
+                           afs_offs_t process_id,
+                           afs_offs_t handle_id,
+                           cm_user_t *userp, cm_req_t *reqp,
+                           cm_lock_data_t ** ldpp);
 
-extern long cm_CheckNTOpenDone(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp, 
+extern long cm_CheckNTOpenDone(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp,
                               cm_lock_data_t ** ldpp);
 
 extern long cm_CheckNTDelete(cm_scache_t *dscp, cm_scache_t *scp,
@@ -195,21 +202,22 @@ extern long cm_Lock(cm_scache_t *scp, unsigned char sLockType,
                     int allowWait, cm_user_t *userp, cm_req_t *reqp,
                     cm_file_lock_t **lockpp);
 
-#define CM_UNLOCK_BY_FID       0x0001
-
 extern long cm_UnlockByKey(cm_scache_t * scp,
                            cm_key_t key,
-                           int flags,
+                           afs_uint32 flags,
                            cm_user_t * userp,
                            cm_req_t * reqp);
 
+#define CM_UNLOCK_FLAG_BY_FID          0x0001
+#define CM_UNLOCK_FLAG_MATCH_RANGE      0x0002
+
 extern long cm_Unlock(cm_scache_t *scp, unsigned char sLockType,
                       LARGE_INTEGER LOffset, LARGE_INTEGER LLength, cm_key_t key,
-                      cm_user_t *userp, cm_req_t *reqp);
+                      afs_uint32 flags, cm_user_t *userp, cm_req_t *reqp);
 
-extern long cm_LockCheckRead(cm_scache_t *scp, 
-                             LARGE_INTEGER LOffset, 
-                             LARGE_INTEGER LLength, 
+extern long cm_LockCheckRead(cm_scache_t *scp,
+                             LARGE_INTEGER LOffset,
+                             LARGE_INTEGER LLength,
                              cm_key_t key);
 
 extern long cm_LockCheckWrite(cm_scache_t *scp,
@@ -230,9 +238,11 @@ extern long cm_RetryLock(cm_file_lock_t *oldFileLock, int client_is_dead);
 #define CM_SESSION_CMINT    0xfffd
 #define CM_SESSION_RESERVED 0xfff0
 
-extern cm_key_t cm_GenerateKey(unsigned int session, unsigned long process_id, unsigned int file_id);
+extern cm_key_t cm_GenerateKey(afs_uint16 session_id, afs_offs_t process_id, afs_uint64 file_id);
+
+extern int cm_KeyEquals(cm_key_t * k1, cm_key_t * k2, int flags);
 
-#define MAX_SYMLINK_COUNT 16
+#define MAX_SYMLINK_COUNT 64
 
 /* make this big enough so that one buffer of dir pages won't overflow.  We'll
  * check anyway, but we want to minimize the chance that we have to leave stuff
@@ -251,7 +261,7 @@ typedef struct cm_bulkStat {
     AFSCallBack callbacks[CM_BULKMAX];
 } cm_bulkStat_t;
 
-extern afs_int32 cm_TryBulkStatRPC(cm_scache_t *dscp, cm_bulkStat_t *bbp, 
+extern afs_int32 cm_TryBulkStatRPC(cm_scache_t *dscp, cm_bulkStat_t *bbp,
                                    cm_user_t *userp, cm_req_t *reqp);
 
-#endif /*  __CM_VNODEOPS_H_ENV__ */
+#endif /*  OPENAFS_WINNT_AFSD_CM_VNODEOPS_H */