2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #ifndef __CM_VNODEOPS_H_ENV__
11 #define __CM_VNODEOPS_H_ENV__ 1
13 extern unsigned int cm_mountRootGen;
15 /* parms for attribute setting call */
16 typedef struct cm_attr {
18 unsigned long clientModTime;
25 #define CM_ATTRMASK_CLIENTMODTIME 1 /* set if field is valid */
26 #define CM_ATTRMASK_LENGTH 2 /* field is valid */
27 #define CM_ATTRMASK_UNIXMODEBITS 4 /* field is valid */
28 #define CM_ATTRMASK_OWNER 8 /* field is valid */
29 #define CM_ATTRMASK_GROUP 0x10 /* field is valid */
31 /* type of rock for lookup's searches */
32 typedef struct cm_lookupSearch {
36 int LCfound, UCfound, NCfound;
43 typedef int (*cm_DirFuncp_t)(struct cm_scache *, struct cm_dirEntry *, void *,
44 osi_hyper_t *entryOffsetp);
48 extern unsigned char cm_foldUpper[];
52 extern int cm_NoneLower(char *s);
54 extern int cm_NoneUpper(char *s);
56 extern int cm_Is8Dot3(char *namep);
58 extern int cm_stricmp(const char *, const char *);
60 extern void cm_Gen8Dot3Name(struct cm_dirEntry *dep, char *shortName,
61 char **shortNameEndp);
63 extern long cm_ReadMountPoint(cm_scache_t *scp, cm_user_t *userp,
66 extern long cm_NameI(cm_scache_t *rootSCachep, char *pathp, long flags,
67 cm_user_t *userp, char *tidPathp, cm_req_t *reqp,
68 cm_scache_t **outScpp);
70 extern long cm_Lookup(cm_scache_t *dscp, char *namep, long flags,
71 cm_user_t *userp, cm_req_t *reqp, cm_scache_t **outpScpp);
73 extern void cm_TryBulkStat(cm_scache_t *dscp, osi_hyper_t *offsetp,
74 cm_user_t *userp, cm_req_t *reqp);
76 extern long cm_SetAttr(cm_scache_t *scp, cm_attr_t *attrp, cm_user_t *userp,
79 extern long cm_Create(cm_scache_t *scp, char *namep, long flags,
80 cm_attr_t *attrp, cm_scache_t **scpp, cm_user_t *userp, cm_req_t *reqp);
82 extern long cm_FSync(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp);
84 extern void cm_StatusFromAttr(struct AFSStoreStatus *statusp,
85 struct cm_scache *scp, struct cm_attr *attrp);
87 extern long cm_Unlink(cm_scache_t *dscp, char *namep, cm_user_t *userp,
90 extern long cm_ApplyDir(cm_scache_t *scp, cm_DirFuncp_t funcp, void *parmp,
91 osi_hyper_t *startOffsetp, cm_user_t *userp, cm_req_t *reqp,
92 cm_scache_t **retscp);
94 extern long cm_MakeDir(cm_scache_t *dscp, char *lastNamep, long flags,
95 cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp);
97 extern long cm_RemoveDir(cm_scache_t *dscp, char *lastNamep, cm_user_t *userp,
100 extern long cm_Rename(cm_scache_t *oldDscp, char *oldLastNamep,
101 cm_scache_t *newDscp, char *newLastNamep, cm_user_t *userp,
104 extern long cm_HandleLink(cm_scache_t *linkScp, struct cm_user *userp,
107 extern long cm_SymLink(cm_scache_t *dscp, char *namep, char *contentsp,
108 long flags, cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp);
110 extern char cm_sysName[100];
112 extern int cm_ExpandSysName(char *inp, char *outp, long outSize);
114 extern long cm_Open(cm_scache_t *scp, int type, cm_user_t *userp);
116 extern long cm_CheckOpen(cm_scache_t *scp, int openMode, int trunc,
117 cm_user_t *userp, cm_req_t *reqp);
120 * Combinations of file opening access bits for AFS.
121 * We don't insist on write rights to open the file with FILE_WRITE_ATTRIBUTES,
122 * because we want to enable the owner to set/clear the READONLY flag.
123 * The RPC will fail if you can't modify the attributes, anyway.
125 #define AFS_ACCESS_READ (FILE_GENERIC_READ & ~SYNCHRONIZE)
126 #define AFS_ACCESS_WRITE ((FILE_GENERIC_WRITE & ~(READ_CONTROL | SYNCHRONIZE)) \
127 & ~FILE_WRITE_ATTRIBUTES)
129 extern long cm_CheckNTOpen(cm_scache_t *scp, unsigned int desiredAccess,
130 unsigned int createDisp, cm_user_t *userp, cm_req_t *reqp);
132 extern long cm_CheckNTDelete(cm_scache_t *dscp, cm_scache_t *scp,
133 cm_user_t *userp, cm_req_t *reqp);
135 extern long cm_EvaluateSymLink(cm_scache_t *dscp, cm_scache_t *linkScp,
136 cm_scache_t **outScpp, cm_user_t *userp, cm_req_t *reqp);
138 extern long cm_Lock(cm_scache_t *scp, unsigned char LockType,
139 LARGE_INTEGER LOffset, LARGE_INTEGER LLength,
140 u_long Timeout, cm_user_t *userp, cm_req_t *reqp,
143 extern long cm_Unlock(cm_scache_t *scp, unsigned char LockType,
144 LARGE_INTEGER LOffset, LARGE_INTEGER LLength,
145 cm_user_t *userp, cm_req_t *reqp);
147 extern void cm_CheckLocks();
149 extern long cm_RetryLock(cm_file_lock_t *oldFileLock, int vcp_is_dead);
151 #endif /* __CM_VNODEOPS_H_ENV__ */