/*
* 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;
#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,
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);
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);
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);
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,
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,
#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
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 */