extern int cm_enableServerLocks;
+extern int cm_followBackupPath;
+
/* parms for attribute setting call */
typedef struct cm_attr {
int mask;
typedef int (*cm_DirFuncp_t)(struct cm_scache *, struct cm_dirEntry *, void *,
osi_hyper_t *entryOffsetp);
+/* Special path syntax for direct references to volumes
+
+ The syntax: @vol:<cellname>{%,#}<volume> can be used to refer to a
+ specific volume in a specific cell, where:
+
+ <cellname> : name of the cell
+ <volume> : volume name or ID
+ */
+#define CM_PREFIX_VOL "@vol:"
+#define CM_PREFIX_VOL_CCH 5
+
/* arrays */
extern unsigned char cm_foldUpper[];
extern void cm_Gen8Dot3Name(struct cm_dirEntry *dep, char *shortName,
char **shortNameEndp);
+#define cm_Gen8Dot3Name(dep,shortName,shortNameEndp) \
+cm_Gen8Dot3NameInt((dep)->name, &(dep)->fid, shortName, shortNameEndp)
+
+extern void cm_Gen8Dot3NameInt(const char * longname, cm_dirFid_t * pfid,
+ char *shortName, char **shortNameEndp);
+
extern long cm_ReadMountPoint(cm_scache_t *scp, cm_user_t *userp,
- cm_req_t *reqp);
+ cm_req_t *reqp);
+
+extern long cm_EvaluateVolumeReference(char * namep, long flags, cm_user_t * userp,
+ cm_req_t *reqp, cm_scache_t ** outpScpp);
#ifdef DEBUG_REFCOUNT
extern long cm_NameIDbg(cm_scache_t *rootSCachep, char *pathp, long flags,
#define AFS_ACCESS_READ (FILE_GENERIC_READ & ~SYNCHRONIZE)
#define AFS_ACCESS_WRITE ((FILE_GENERIC_WRITE & ~(READ_CONTROL | SYNCHRONIZE)) \
& ~FILE_WRITE_ATTRIBUTES)
+#define AFS_ACCESS_EXECUTE (FILE_GENERIC_EXECUTE & ~SYNCHRONIZE)
typedef struct cm_lock_data {
cm_key_t key;
extern long cm_EvaluateSymLink(cm_scache_t *dscp, cm_scache_t *linkScp,
cm_scache_t **outScpp, cm_user_t *userp, cm_req_t *reqp);
+extern long cm_FollowMountPoint(cm_scache_t *scp, cm_scache_t *dscp, cm_user_t *userp,
+ cm_req_t *reqp, cm_scache_t **outScpp);
+
+
extern long cm_Lock(cm_scache_t *scp, unsigned char sLockType,
LARGE_INTEGER LOffset, LARGE_INTEGER LLength, cm_key_t key,
int allowWait, cm_user_t *userp, cm_req_t *reqp,
extern void cm_ReleaseAllLocks(void);
+extern void cm_LockMarkSCacheLost(cm_scache_t * scp);
+
extern long cm_RetryLock(cm_file_lock_t *oldFileLock, int client_is_dead);
#define CM_SESSION_SMB 0xffff