aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/cifsproto.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /fs/cifs/cifsproto.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'fs/cifs/cifsproto.h')
-rw-r--r--fs/cifs/cifsproto.h277
1 files changed, 163 insertions, 114 deletions
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h
index 1d60c655e3e0..8df28e925e5b 100644
--- a/fs/cifs/cifsproto.h
+++ b/fs/cifs/cifsproto.h
@@ -53,24 +53,37 @@ do { \
53 cFYI(1, "CIFS VFS: leaving %s (xid = %d) rc = %d", \ 53 cFYI(1, "CIFS VFS: leaving %s (xid = %d) rc = %d", \
54 __func__, curr_xid, (int)rc); \ 54 __func__, curr_xid, (int)rc); \
55} while (0) 55} while (0)
56extern int init_cifs_idmap(void);
57extern void exit_cifs_idmap(void);
58extern void cifs_destroy_idmaptrees(void);
56extern char *build_path_from_dentry(struct dentry *); 59extern char *build_path_from_dentry(struct dentry *);
57extern char *cifs_build_path_to_root(struct cifs_sb_info *cifs_sb); 60extern char *cifs_build_path_to_root(struct smb_vol *vol,
61 struct cifs_sb_info *cifs_sb,
62 struct cifs_tcon *tcon);
58extern char *build_wildcard_path_from_dentry(struct dentry *direntry); 63extern char *build_wildcard_path_from_dentry(struct dentry *direntry);
59extern char *cifs_compose_mount_options(const char *sb_mountdata, 64extern char *cifs_compose_mount_options(const char *sb_mountdata,
60 const char *fullpath, const struct dfs_info3_param *ref, 65 const char *fullpath, const struct dfs_info3_param *ref,
61 char **devname); 66 char **devname);
62/* extern void renew_parental_timestamps(struct dentry *direntry);*/ 67/* extern void renew_parental_timestamps(struct dentry *direntry);*/
63extern int SendReceive(const unsigned int /* xid */ , struct cifsSesInfo *, 68extern struct mid_q_entry *AllocMidQEntry(const struct smb_hdr *smb_buffer,
69 struct TCP_Server_Info *server);
70extern void DeleteMidQEntry(struct mid_q_entry *midEntry);
71extern int cifs_call_async(struct TCP_Server_Info *server, struct kvec *iov,
72 unsigned int nvec, mid_callback_t *callback,
73 void *cbdata, bool ignore_pend);
74extern int SendReceive(const unsigned int /* xid */ , struct cifs_ses *,
64 struct smb_hdr * /* input */ , 75 struct smb_hdr * /* input */ ,
65 struct smb_hdr * /* out */ , 76 struct smb_hdr * /* out */ ,
66 int * /* bytes returned */ , const int long_op); 77 int * /* bytes returned */ , const int long_op);
67extern int SendReceiveNoRsp(const unsigned int xid, struct cifsSesInfo *ses, 78extern int SendReceiveNoRsp(const unsigned int xid, struct cifs_ses *ses,
68 struct smb_hdr *in_buf, int flags); 79 struct smb_hdr *in_buf, int flags);
69extern int SendReceive2(const unsigned int /* xid */ , struct cifsSesInfo *, 80extern int cifs_check_receive(struct mid_q_entry *mid,
81 struct TCP_Server_Info *server, bool log_error);
82extern int SendReceive2(const unsigned int /* xid */ , struct cifs_ses *,
70 struct kvec *, int /* nvec to send */, 83 struct kvec *, int /* nvec to send */,
71 int * /* type of buf returned */ , const int flags); 84 int * /* type of buf returned */ , const int flags);
72extern int SendReceiveBlockingLock(const unsigned int xid, 85extern int SendReceiveBlockingLock(const unsigned int xid,
73 struct cifsTconInfo *ptcon, 86 struct cifs_tcon *ptcon,
74 struct smb_hdr *in_buf , 87 struct smb_hdr *in_buf ,
75 struct smb_hdr *out_buf, 88 struct smb_hdr *out_buf,
76 int *bytes_returned); 89 int *bytes_returned);
@@ -78,39 +91,39 @@ extern int checkSMB(struct smb_hdr *smb, __u16 mid, unsigned int length);
78extern bool is_valid_oplock_break(struct smb_hdr *smb, 91extern bool is_valid_oplock_break(struct smb_hdr *smb,
79 struct TCP_Server_Info *); 92 struct TCP_Server_Info *);
80extern bool is_size_safe_to_change(struct cifsInodeInfo *, __u64 eof); 93extern bool is_size_safe_to_change(struct cifsInodeInfo *, __u64 eof);
81extern struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *); 94extern void cifs_update_eof(struct cifsInodeInfo *cifsi, loff_t offset,
82#ifdef CONFIG_CIFS_EXPERIMENTAL 95 unsigned int bytes_written);
83extern struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *); 96extern struct cifsFileInfo *find_writable_file(struct cifsInodeInfo *, bool);
84#endif 97extern struct cifsFileInfo *find_readable_file(struct cifsInodeInfo *, bool);
85extern unsigned int smbCalcSize(struct smb_hdr *ptr); 98extern unsigned int smbCalcSize(struct smb_hdr *ptr);
86extern unsigned int smbCalcSize_LE(struct smb_hdr *ptr);
87extern int decode_negTokenInit(unsigned char *security_blob, int length, 99extern int decode_negTokenInit(unsigned char *security_blob, int length,
88 struct TCP_Server_Info *server); 100 struct TCP_Server_Info *server);
89extern int cifs_convert_address(struct sockaddr *dst, const char *src, int len); 101extern int cifs_convert_address(struct sockaddr *dst, const char *src, int len);
90extern int cifs_set_port(struct sockaddr *addr, const unsigned short int port); 102extern int cifs_set_port(struct sockaddr *addr, const unsigned short int port);
91extern int cifs_fill_sockaddr(struct sockaddr *dst, const char *src, int len, 103extern int cifs_fill_sockaddr(struct sockaddr *dst, const char *src, int len,
92 const unsigned short int port); 104 const unsigned short int port);
93extern int map_smb_to_linux_error(struct smb_hdr *smb, int logErr); 105extern int map_smb_to_linux_error(struct smb_hdr *smb, bool logErr);
94extern void header_assemble(struct smb_hdr *, char /* command */ , 106extern void header_assemble(struct smb_hdr *, char /* command */ ,
95 const struct cifsTconInfo *, int /* length of 107 const struct cifs_tcon *, int /* length of
96 fixed section (word count) in two byte units */); 108 fixed section (word count) in two byte units */);
97extern int small_smb_init_no_tc(const int smb_cmd, const int wct, 109extern int small_smb_init_no_tc(const int smb_cmd, const int wct,
98 struct cifsSesInfo *ses, 110 struct cifs_ses *ses,
99 void **request_buf); 111 void **request_buf);
100extern int CIFS_SessSetup(unsigned int xid, struct cifsSesInfo *ses, 112extern int CIFS_SessSetup(unsigned int xid, struct cifs_ses *ses,
101 const struct nls_table *nls_cp); 113 const struct nls_table *nls_cp);
102extern __u16 GetNextMid(struct TCP_Server_Info *server); 114extern __u16 GetNextMid(struct TCP_Server_Info *server);
103extern struct timespec cifs_NTtimeToUnix(__le64 utc_nanoseconds_since_1601); 115extern struct timespec cifs_NTtimeToUnix(__le64 utc_nanoseconds_since_1601);
104extern u64 cifs_UnixTimeToNT(struct timespec); 116extern u64 cifs_UnixTimeToNT(struct timespec);
105extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time, 117extern struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time,
106 int offset); 118 int offset);
119extern void cifs_set_oplock_level(struct cifsInodeInfo *cinode, __u32 oplock);
107 120
108extern struct cifsFileInfo *cifs_new_fileinfo(struct inode *newinode, 121extern struct cifsFileInfo *cifs_new_fileinfo(__u16 fileHandle,
109 __u16 fileHandle, struct file *file, 122 struct file *file, struct tcon_link *tlink,
110 struct vfsmount *mnt, unsigned int oflags); 123 __u32 oplock);
111extern int cifs_posix_open(char *full_path, struct inode **pinode, 124extern int cifs_posix_open(char *full_path, struct inode **pinode,
112 struct super_block *sb, 125 struct super_block *sb,
113 int mode, int oflags, 126 int mode, unsigned int f_flags,
114 __u32 *poplock, __u16 *pnetfid, int xid); 127 __u32 *poplock, __u16 *pnetfid, int xid);
115void cifs_fill_uniqueid(struct super_block *sb, struct cifs_fattr *fattr); 128void cifs_fill_uniqueid(struct super_block *sb, struct cifs_fattr *fattr);
116extern void cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, 129extern void cifs_unix_basic_to_fattr(struct cifs_fattr *fattr,
@@ -129,107 +142,117 @@ extern int cifs_get_file_info_unix(struct file *filp);
129extern int cifs_get_inode_info_unix(struct inode **pinode, 142extern int cifs_get_inode_info_unix(struct inode **pinode,
130 const unsigned char *search_path, 143 const unsigned char *search_path,
131 struct super_block *sb, int xid); 144 struct super_block *sb, int xid);
132extern void cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, 145extern int cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb,
133 struct cifs_fattr *fattr, struct inode *inode, 146 struct cifs_fattr *fattr, struct inode *inode,
134 const char *path, const __u16 *pfid); 147 const char *path, const __u16 *pfid);
135extern int mode_to_acl(struct inode *inode, const char *path, __u64); 148extern int mode_to_cifs_acl(struct inode *inode, const char *path, __u64);
149extern struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *, struct inode *,
150 const char *, u32 *);
151extern int set_cifs_acl(struct cifs_ntsd *, __u32, struct inode *,
152 const char *);
136 153
137extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, 154extern void cifs_setup_cifs_sb(struct smb_vol *pvolume_info,
138 const char *); 155 struct cifs_sb_info *cifs_sb);
139extern int cifs_umount(struct super_block *, struct cifs_sb_info *); 156extern int cifs_match_super(struct super_block *, void *);
157extern void cifs_cleanup_volume_info(struct smb_vol *pvolume_info);
158extern struct smb_vol *cifs_get_volume_info(char *mount_data,
159 const char *devname);
160extern int cifs_mount(struct cifs_sb_info *, struct smb_vol *);
161extern void cifs_umount(struct cifs_sb_info *);
140extern void cifs_dfs_release_automount_timer(void); 162extern void cifs_dfs_release_automount_timer(void);
141void cifs_proc_init(void); 163void cifs_proc_init(void);
142void cifs_proc_clean(void); 164void cifs_proc_clean(void);
143 165
144extern int cifs_negotiate_protocol(unsigned int xid, 166extern int cifs_negotiate_protocol(unsigned int xid,
145 struct cifsSesInfo *ses); 167 struct cifs_ses *ses);
146extern int cifs_setup_session(unsigned int xid, struct cifsSesInfo *ses, 168extern int cifs_setup_session(unsigned int xid, struct cifs_ses *ses,
147 struct nls_table *nls_info); 169 struct nls_table *nls_info);
148extern int CIFSSMBNegotiate(unsigned int xid, struct cifsSesInfo *ses); 170extern int CIFSSMBNegotiate(unsigned int xid, struct cifs_ses *ses);
149 171
150extern int CIFSTCon(unsigned int xid, struct cifsSesInfo *ses, 172extern int CIFSTCon(unsigned int xid, struct cifs_ses *ses,
151 const char *tree, struct cifsTconInfo *tcon, 173 const char *tree, struct cifs_tcon *tcon,
152 const struct nls_table *); 174 const struct nls_table *);
153 175
154extern int CIFSFindFirst(const int xid, struct cifsTconInfo *tcon, 176extern int CIFSFindFirst(const int xid, struct cifs_tcon *tcon,
155 const char *searchName, const struct nls_table *nls_codepage, 177 const char *searchName, const struct nls_table *nls_codepage,
156 __u16 *searchHandle, struct cifs_search_info *psrch_inf, 178 __u16 *searchHandle, struct cifs_search_info *psrch_inf,
157 int map, const char dirsep); 179 int map, const char dirsep);
158 180
159extern int CIFSFindNext(const int xid, struct cifsTconInfo *tcon, 181extern int CIFSFindNext(const int xid, struct cifs_tcon *tcon,
160 __u16 searchHandle, struct cifs_search_info *psrch_inf); 182 __u16 searchHandle, struct cifs_search_info *psrch_inf);
161 183
162extern int CIFSFindClose(const int, struct cifsTconInfo *tcon, 184extern int CIFSFindClose(const int, struct cifs_tcon *tcon,
163 const __u16 search_handle); 185 const __u16 search_handle);
164 186
165extern int CIFSSMBQFileInfo(const int xid, struct cifsTconInfo *tcon, 187extern int CIFSSMBQFileInfo(const int xid, struct cifs_tcon *tcon,
166 u16 netfid, FILE_ALL_INFO *pFindData); 188 u16 netfid, FILE_ALL_INFO *pFindData);
167extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, 189extern int CIFSSMBQPathInfo(const int xid, struct cifs_tcon *tcon,
168 const unsigned char *searchName, 190 const unsigned char *searchName,
169 FILE_ALL_INFO *findData, 191 FILE_ALL_INFO *findData,
170 int legacy /* whether to use old info level */, 192 int legacy /* whether to use old info level */,
171 const struct nls_table *nls_codepage, int remap); 193 const struct nls_table *nls_codepage, int remap);
172extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, 194extern int SMBQueryInformation(const int xid, struct cifs_tcon *tcon,
173 const unsigned char *searchName, 195 const unsigned char *searchName,
174 FILE_ALL_INFO *findData, 196 FILE_ALL_INFO *findData,
175 const struct nls_table *nls_codepage, int remap); 197 const struct nls_table *nls_codepage, int remap);
176 198
177extern int CIFSSMBUnixQFileInfo(const int xid, struct cifsTconInfo *tcon, 199extern int CIFSSMBUnixQFileInfo(const int xid, struct cifs_tcon *tcon,
178 u16 netfid, FILE_UNIX_BASIC_INFO *pFindData); 200 u16 netfid, FILE_UNIX_BASIC_INFO *pFindData);
179extern int CIFSSMBUnixQPathInfo(const int xid, 201extern int CIFSSMBUnixQPathInfo(const int xid,
180 struct cifsTconInfo *tcon, 202 struct cifs_tcon *tcon,
181 const unsigned char *searchName, 203 const unsigned char *searchName,
182 FILE_UNIX_BASIC_INFO *pFindData, 204 FILE_UNIX_BASIC_INFO *pFindData,
183 const struct nls_table *nls_codepage, int remap); 205 const struct nls_table *nls_codepage, int remap);
184 206
185extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, 207extern int CIFSGetDFSRefer(const int xid, struct cifs_ses *ses,
186 const unsigned char *searchName, 208 const unsigned char *searchName,
187 struct dfs_info3_param **target_nodes, 209 struct dfs_info3_param **target_nodes,
188 unsigned int *number_of_nodes_in_array, 210 unsigned int *number_of_nodes_in_array,
189 const struct nls_table *nls_codepage, int remap); 211 const struct nls_table *nls_codepage, int remap);
190 212
191extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, 213extern int get_dfs_path(int xid, struct cifs_ses *pSesInfo,
192 const char *old_path, 214 const char *old_path,
193 const struct nls_table *nls_codepage, 215 const struct nls_table *nls_codepage,
194 unsigned int *pnum_referrals, 216 unsigned int *pnum_referrals,
195 struct dfs_info3_param **preferrals, 217 struct dfs_info3_param **preferrals,
196 int remap); 218 int remap);
197extern void reset_cifs_unix_caps(int xid, struct cifsTconInfo *tcon, 219extern void reset_cifs_unix_caps(int xid, struct cifs_tcon *tcon,
198 struct super_block *sb, struct smb_vol *vol); 220 struct cifs_sb_info *cifs_sb,
199extern int CIFSSMBQFSInfo(const int xid, struct cifsTconInfo *tcon, 221 struct smb_vol *vol);
222extern int CIFSSMBQFSInfo(const int xid, struct cifs_tcon *tcon,
200 struct kstatfs *FSData); 223 struct kstatfs *FSData);
201extern int SMBOldQFSInfo(const int xid, struct cifsTconInfo *tcon, 224extern int SMBOldQFSInfo(const int xid, struct cifs_tcon *tcon,
202 struct kstatfs *FSData); 225 struct kstatfs *FSData);
203extern int CIFSSMBSetFSUnixInfo(const int xid, struct cifsTconInfo *tcon, 226extern int CIFSSMBSetFSUnixInfo(const int xid, struct cifs_tcon *tcon,
204 __u64 cap); 227 __u64 cap);
205 228
206extern int CIFSSMBQFSAttributeInfo(const int xid, 229extern int CIFSSMBQFSAttributeInfo(const int xid,
207 struct cifsTconInfo *tcon); 230 struct cifs_tcon *tcon);
208extern int CIFSSMBQFSDeviceInfo(const int xid, struct cifsTconInfo *tcon); 231extern int CIFSSMBQFSDeviceInfo(const int xid, struct cifs_tcon *tcon);
209extern int CIFSSMBQFSUnixInfo(const int xid, struct cifsTconInfo *tcon); 232extern int CIFSSMBQFSUnixInfo(const int xid, struct cifs_tcon *tcon);
210extern int CIFSSMBQFSPosixInfo(const int xid, struct cifsTconInfo *tcon, 233extern int CIFSSMBQFSPosixInfo(const int xid, struct cifs_tcon *tcon,
211 struct kstatfs *FSData); 234 struct kstatfs *FSData);
212 235
213extern int CIFSSMBSetPathInfo(const int xid, struct cifsTconInfo *tcon, 236extern int CIFSSMBSetPathInfo(const int xid, struct cifs_tcon *tcon,
214 const char *fileName, const FILE_BASIC_INFO *data, 237 const char *fileName, const FILE_BASIC_INFO *data,
215 const struct nls_table *nls_codepage, 238 const struct nls_table *nls_codepage,
216 int remap_special_chars); 239 int remap_special_chars);
217extern int CIFSSMBSetFileInfo(const int xid, struct cifsTconInfo *tcon, 240extern int CIFSSMBSetFileInfo(const int xid, struct cifs_tcon *tcon,
218 const FILE_BASIC_INFO *data, __u16 fid, 241 const FILE_BASIC_INFO *data, __u16 fid,
219 __u32 pid_of_opener); 242 __u32 pid_of_opener);
220extern int CIFSSMBSetFileDisposition(const int xid, struct cifsTconInfo *tcon, 243extern int CIFSSMBSetFileDisposition(const int xid, struct cifs_tcon *tcon,
221 bool delete_file, __u16 fid, __u32 pid_of_opener); 244 bool delete_file, __u16 fid, __u32 pid_of_opener);
222#if 0 245#if 0
223extern int CIFSSMBSetAttrLegacy(int xid, struct cifsTconInfo *tcon, 246extern int CIFSSMBSetAttrLegacy(int xid, struct cifs_tcon *tcon,
224 char *fileName, __u16 dos_attributes, 247 char *fileName, __u16 dos_attributes,
225 const struct nls_table *nls_codepage); 248 const struct nls_table *nls_codepage);
226#endif /* possibly unneeded function */ 249#endif /* possibly unneeded function */
227extern int CIFSSMBSetEOF(const int xid, struct cifsTconInfo *tcon, 250extern int CIFSSMBSetEOF(const int xid, struct cifs_tcon *tcon,
228 const char *fileName, __u64 size, 251 const char *fileName, __u64 size,
229 bool setAllocationSizeFlag, 252 bool setAllocationSizeFlag,
230 const struct nls_table *nls_codepage, 253 const struct nls_table *nls_codepage,
231 int remap_special_chars); 254 int remap_special_chars);
232extern int CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon, 255extern int CIFSSMBSetFileSize(const int xid, struct cifs_tcon *tcon,
233 __u64 size, __u16 fileHandle, __u32 opener_pid, 256 __u64 size, __u16 fileHandle, __u32 opener_pid,
234 bool AllocSizeFlag); 257 bool AllocSizeFlag);
235 258
@@ -243,169 +266,195 @@ struct cifs_unix_set_info_args {
243 dev_t device; 266 dev_t device;
244}; 267};
245 268
246extern int CIFSSMBUnixSetFileInfo(const int xid, struct cifsTconInfo *tcon, 269extern int CIFSSMBUnixSetFileInfo(const int xid, struct cifs_tcon *tcon,
247 const struct cifs_unix_set_info_args *args, 270 const struct cifs_unix_set_info_args *args,
248 u16 fid, u32 pid_of_opener); 271 u16 fid, u32 pid_of_opener);
249 272
250extern int CIFSSMBUnixSetPathInfo(const int xid, struct cifsTconInfo *pTcon, 273extern int CIFSSMBUnixSetPathInfo(const int xid, struct cifs_tcon *pTcon,
251 char *fileName, 274 char *fileName,
252 const struct cifs_unix_set_info_args *args, 275 const struct cifs_unix_set_info_args *args,
253 const struct nls_table *nls_codepage, 276 const struct nls_table *nls_codepage,
254 int remap_special_chars); 277 int remap_special_chars);
255 278
256extern int CIFSSMBMkDir(const int xid, struct cifsTconInfo *tcon, 279extern int CIFSSMBMkDir(const int xid, struct cifs_tcon *tcon,
257 const char *newName, 280 const char *newName,
258 const struct nls_table *nls_codepage, 281 const struct nls_table *nls_codepage,
259 int remap_special_chars); 282 int remap_special_chars);
260extern int CIFSSMBRmDir(const int xid, struct cifsTconInfo *tcon, 283extern int CIFSSMBRmDir(const int xid, struct cifs_tcon *tcon,
261 const char *name, const struct nls_table *nls_codepage, 284 const char *name, const struct nls_table *nls_codepage,
262 int remap_special_chars); 285 int remap_special_chars);
263extern int CIFSPOSIXDelFile(const int xid, struct cifsTconInfo *tcon, 286extern int CIFSPOSIXDelFile(const int xid, struct cifs_tcon *tcon,
264 const char *name, __u16 type, 287 const char *name, __u16 type,
265 const struct nls_table *nls_codepage, 288 const struct nls_table *nls_codepage,
266 int remap_special_chars); 289 int remap_special_chars);
267extern int CIFSSMBDelFile(const int xid, struct cifsTconInfo *tcon, 290extern int CIFSSMBDelFile(const int xid, struct cifs_tcon *tcon,
268 const char *name, 291 const char *name,
269 const struct nls_table *nls_codepage, 292 const struct nls_table *nls_codepage,
270 int remap_special_chars); 293 int remap_special_chars);
271extern int CIFSSMBRename(const int xid, struct cifsTconInfo *tcon, 294extern int CIFSSMBRename(const int xid, struct cifs_tcon *tcon,
272 const char *fromName, const char *toName, 295 const char *fromName, const char *toName,
273 const struct nls_table *nls_codepage, 296 const struct nls_table *nls_codepage,
274 int remap_special_chars); 297 int remap_special_chars);
275extern int CIFSSMBRenameOpenFile(const int xid, struct cifsTconInfo *pTcon, 298extern int CIFSSMBRenameOpenFile(const int xid, struct cifs_tcon *pTcon,
276 int netfid, const char *target_name, 299 int netfid, const char *target_name,
277 const struct nls_table *nls_codepage, 300 const struct nls_table *nls_codepage,
278 int remap_special_chars); 301 int remap_special_chars);
279extern int CIFSCreateHardLink(const int xid, 302extern int CIFSCreateHardLink(const int xid,
280 struct cifsTconInfo *tcon, 303 struct cifs_tcon *tcon,
281 const char *fromName, const char *toName, 304 const char *fromName, const char *toName,
282 const struct nls_table *nls_codepage, 305 const struct nls_table *nls_codepage,
283 int remap_special_chars); 306 int remap_special_chars);
284extern int CIFSUnixCreateHardLink(const int xid, 307extern int CIFSUnixCreateHardLink(const int xid,
285 struct cifsTconInfo *tcon, 308 struct cifs_tcon *tcon,
286 const char *fromName, const char *toName, 309 const char *fromName, const char *toName,
287 const struct nls_table *nls_codepage, 310 const struct nls_table *nls_codepage,
288 int remap_special_chars); 311 int remap_special_chars);
289extern int CIFSUnixCreateSymLink(const int xid, 312extern int CIFSUnixCreateSymLink(const int xid,
290 struct cifsTconInfo *tcon, 313 struct cifs_tcon *tcon,
291 const char *fromName, const char *toName, 314 const char *fromName, const char *toName,
292 const struct nls_table *nls_codepage); 315 const struct nls_table *nls_codepage);
293extern int CIFSSMBUnixQuerySymLink(const int xid, 316extern int CIFSSMBUnixQuerySymLink(const int xid,
294 struct cifsTconInfo *tcon, 317 struct cifs_tcon *tcon,
295 const unsigned char *searchName, char **syminfo, 318 const unsigned char *searchName, char **syminfo,
296 const struct nls_table *nls_codepage); 319 const struct nls_table *nls_codepage);
320#ifdef CONFIG_CIFS_SYMLINK_EXPERIMENTAL
297extern int CIFSSMBQueryReparseLinkInfo(const int xid, 321extern int CIFSSMBQueryReparseLinkInfo(const int xid,
298 struct cifsTconInfo *tcon, 322 struct cifs_tcon *tcon,
299 const unsigned char *searchName, 323 const unsigned char *searchName,
300 char *symlinkinfo, const int buflen, __u16 fid, 324 char *symlinkinfo, const int buflen, __u16 fid,
301 const struct nls_table *nls_codepage); 325 const struct nls_table *nls_codepage);
302 326#endif /* temporarily unused until cifs_symlink fixed */
303extern int CIFSSMBOpen(const int xid, struct cifsTconInfo *tcon, 327extern int CIFSSMBOpen(const int xid, struct cifs_tcon *tcon,
304 const char *fileName, const int disposition, 328 const char *fileName, const int disposition,
305 const int access_flags, const int omode, 329 const int access_flags, const int omode,
306 __u16 *netfid, int *pOplock, FILE_ALL_INFO *, 330 __u16 *netfid, int *pOplock, FILE_ALL_INFO *,
307 const struct nls_table *nls_codepage, int remap); 331 const struct nls_table *nls_codepage, int remap);
308extern int SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, 332extern int SMBLegacyOpen(const int xid, struct cifs_tcon *tcon,
309 const char *fileName, const int disposition, 333 const char *fileName, const int disposition,
310 const int access_flags, const int omode, 334 const int access_flags, const int omode,
311 __u16 *netfid, int *pOplock, FILE_ALL_INFO *, 335 __u16 *netfid, int *pOplock, FILE_ALL_INFO *,
312 const struct nls_table *nls_codepage, int remap); 336 const struct nls_table *nls_codepage, int remap);
313extern int CIFSPOSIXCreate(const int xid, struct cifsTconInfo *tcon, 337extern int CIFSPOSIXCreate(const int xid, struct cifs_tcon *tcon,
314 u32 posix_flags, __u64 mode, __u16 *netfid, 338 u32 posix_flags, __u64 mode, __u16 *netfid,
315 FILE_UNIX_BASIC_INFO *pRetData, 339 FILE_UNIX_BASIC_INFO *pRetData,
316 __u32 *pOplock, const char *name, 340 __u32 *pOplock, const char *name,
317 const struct nls_table *nls_codepage, int remap); 341 const struct nls_table *nls_codepage, int remap);
318extern int CIFSSMBClose(const int xid, struct cifsTconInfo *tcon, 342extern int CIFSSMBClose(const int xid, struct cifs_tcon *tcon,
319 const int smb_file_id); 343 const int smb_file_id);
320 344
321extern int CIFSSMBFlush(const int xid, struct cifsTconInfo *tcon, 345extern int CIFSSMBFlush(const int xid, struct cifs_tcon *tcon,
322 const int smb_file_id); 346 const int smb_file_id);
323 347
324extern int CIFSSMBRead(const int xid, struct cifsTconInfo *tcon, 348extern int CIFSSMBRead(const int xid, struct cifs_io_parms *io_parms,
325 const int netfid, unsigned int count, 349 unsigned int *nbytes, char **buf,
326 const __u64 lseek, unsigned int *nbytes, char **buf,
327 int *return_buf_type); 350 int *return_buf_type);
328extern int CIFSSMBWrite(const int xid, struct cifsTconInfo *tcon, 351extern int CIFSSMBWrite(const int xid, struct cifs_io_parms *io_parms,
329 const int netfid, const unsigned int count, 352 unsigned int *nbytes, const char *buf,
330 const __u64 lseek, unsigned int *nbytes, 353 const char __user *ubuf, const int long_op);
331 const char *buf, const char __user *ubuf, 354extern int CIFSSMBWrite2(const int xid, struct cifs_io_parms *io_parms,
355 unsigned int *nbytes, struct kvec *iov, const int nvec,
332 const int long_op); 356 const int long_op);
333extern int CIFSSMBWrite2(const int xid, struct cifsTconInfo *tcon, 357extern int CIFSGetSrvInodeNumber(const int xid, struct cifs_tcon *tcon,
334 const int netfid, const unsigned int count,
335 const __u64 offset, unsigned int *nbytes,
336 struct kvec *iov, const int nvec, const int long_op);
337extern int CIFSGetSrvInodeNumber(const int xid, struct cifsTconInfo *tcon,
338 const unsigned char *searchName, __u64 *inode_number, 358 const unsigned char *searchName, __u64 *inode_number,
339 const struct nls_table *nls_codepage, 359 const struct nls_table *nls_codepage,
340 int remap_special_chars); 360 int remap_special_chars);
341extern int cifsConvertToUCS(__le16 *target, const char *source, int maxlen,
342 const struct nls_table *cp, int mapChars);
343 361
344extern int CIFSSMBLock(const int xid, struct cifsTconInfo *tcon, 362extern int CIFSSMBLock(const int xid, struct cifs_tcon *tcon,
345 const __u16 netfid, const __u64 len, 363 const __u16 netfid, const __u64 len,
346 const __u64 offset, const __u32 numUnlock, 364 const __u64 offset, const __u32 numUnlock,
347 const __u32 numLock, const __u8 lockType, 365 const __u32 numLock, const __u8 lockType,
348 const bool waitFlag); 366 const bool waitFlag, const __u8 oplock_level);
349extern int CIFSSMBPosixLock(const int xid, struct cifsTconInfo *tcon, 367extern int CIFSSMBPosixLock(const int xid, struct cifs_tcon *tcon,
350 const __u16 smb_file_id, const int get_flag, 368 const __u16 smb_file_id, const int get_flag,
351 const __u64 len, struct file_lock *, 369 const __u64 len, struct file_lock *,
352 const __u16 lock_type, const bool waitFlag); 370 const __u16 lock_type, const bool waitFlag);
353extern int CIFSSMBTDis(const int xid, struct cifsTconInfo *tcon); 371extern int CIFSSMBTDis(const int xid, struct cifs_tcon *tcon);
354extern int CIFSSMBLogoff(const int xid, struct cifsSesInfo *ses); 372extern int CIFSSMBEcho(struct TCP_Server_Info *server);
373extern int CIFSSMBLogoff(const int xid, struct cifs_ses *ses);
355 374
356extern struct cifsSesInfo *sesInfoAlloc(void); 375extern struct cifs_ses *sesInfoAlloc(void);
357extern void sesInfoFree(struct cifsSesInfo *); 376extern void sesInfoFree(struct cifs_ses *);
358extern struct cifsTconInfo *tconInfoAlloc(void); 377extern struct cifs_tcon *tconInfoAlloc(void);
359extern void tconInfoFree(struct cifsTconInfo *); 378extern void tconInfoFree(struct cifs_tcon *);
360 379
361extern int cifs_sign_smb(struct smb_hdr *, struct TCP_Server_Info *, __u32 *); 380extern int cifs_sign_smb(struct smb_hdr *, struct TCP_Server_Info *, __u32 *);
362extern int cifs_sign_smb2(struct kvec *iov, int n_vec, struct TCP_Server_Info *, 381extern int cifs_sign_smb2(struct kvec *iov, int n_vec, struct TCP_Server_Info *,
363 __u32 *); 382 __u32 *);
364extern int cifs_verify_signature(struct smb_hdr *, 383extern int cifs_verify_signature(struct smb_hdr *,
365 const struct mac_key *mac_key, 384 struct TCP_Server_Info *server,
366 __u32 expected_sequence_number); 385 __u32 expected_sequence_number);
367extern int cifs_calculate_mac_key(struct mac_key *key, const char *rn, 386extern int SMBNTencrypt(unsigned char *, unsigned char *, unsigned char *);
368 const char *pass); 387extern int setup_ntlm_response(struct cifs_ses *);
369extern void CalcNTLMv2_response(const struct cifsSesInfo *, char *); 388extern int setup_ntlmv2_rsp(struct cifs_ses *, const struct nls_table *);
370extern void setup_ntlmv2_rsp(struct cifsSesInfo *, char *, 389extern int cifs_crypto_shash_allocate(struct TCP_Server_Info *);
371 const struct nls_table *); 390extern void cifs_crypto_shash_release(struct TCP_Server_Info *);
391extern int calc_seckey(struct cifs_ses *);
392
372#ifdef CONFIG_CIFS_WEAK_PW_HASH 393#ifdef CONFIG_CIFS_WEAK_PW_HASH
373extern void calc_lanman_hash(const char *password, const char *cryptkey, 394extern int calc_lanman_hash(const char *password, const char *cryptkey,
374 bool encrypt, char *lnm_session_key); 395 bool encrypt, char *lnm_session_key);
375#endif /* CIFS_WEAK_PW_HASH */ 396#endif /* CIFS_WEAK_PW_HASH */
397#ifdef CONFIG_CIFS_DNOTIFY_EXPERIMENTAL /* unused temporarily */
398extern int CIFSSMBNotify(const int xid, struct cifs_tcon *tcon,
399 const int notify_subdirs, const __u16 netfid,
400 __u32 filter, struct file *file, int multishot,
401 const struct nls_table *nls_codepage);
402#endif /* was needed for dnotify, and will be needed for inotify when VFS fix */
376extern int CIFSSMBCopy(int xid, 403extern int CIFSSMBCopy(int xid,
377 struct cifsTconInfo *source_tcon, 404 struct cifs_tcon *source_tcon,
378 const char *fromName, 405 const char *fromName,
379 const __u16 target_tid, 406 const __u16 target_tid,
380 const char *toName, const int flags, 407 const char *toName, const int flags,
381 const struct nls_table *nls_codepage, 408 const struct nls_table *nls_codepage,
382 int remap_special_chars); 409 int remap_special_chars);
383extern int CIFSSMBNotify(const int xid, struct cifsTconInfo *tcon, 410extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifs_tcon *tcon,
384 const int notify_subdirs, const __u16 netfid,
385 __u32 filter, struct file *file, int multishot,
386 const struct nls_table *nls_codepage);
387extern ssize_t CIFSSMBQAllEAs(const int xid, struct cifsTconInfo *tcon,
388 const unsigned char *searchName, 411 const unsigned char *searchName,
389 const unsigned char *ea_name, char *EAData, 412 const unsigned char *ea_name, char *EAData,
390 size_t bufsize, const struct nls_table *nls_codepage, 413 size_t bufsize, const struct nls_table *nls_codepage,
391 int remap_special_chars); 414 int remap_special_chars);
392extern int CIFSSMBSetEA(const int xid, struct cifsTconInfo *tcon, 415extern int CIFSSMBSetEA(const int xid, struct cifs_tcon *tcon,
393 const char *fileName, const char *ea_name, 416 const char *fileName, const char *ea_name,
394 const void *ea_value, const __u16 ea_value_len, 417 const void *ea_value, const __u16 ea_value_len,
395 const struct nls_table *nls_codepage, int remap_special_chars); 418 const struct nls_table *nls_codepage, int remap_special_chars);
396extern int CIFSSMBGetCIFSACL(const int xid, struct cifsTconInfo *tcon, 419extern int CIFSSMBGetCIFSACL(const int xid, struct cifs_tcon *tcon,
397 __u16 fid, struct cifs_ntsd **acl_inf, __u32 *buflen); 420 __u16 fid, struct cifs_ntsd **acl_inf, __u32 *buflen);
398extern int CIFSSMBSetCIFSACL(const int, struct cifsTconInfo *, __u16, 421extern int CIFSSMBSetCIFSACL(const int, struct cifs_tcon *, __u16,
399 struct cifs_ntsd *, __u32); 422 struct cifs_ntsd *, __u32);
400extern int CIFSSMBGetPosixACL(const int xid, struct cifsTconInfo *tcon, 423extern int CIFSSMBGetPosixACL(const int xid, struct cifs_tcon *tcon,
401 const unsigned char *searchName, 424 const unsigned char *searchName,
402 char *acl_inf, const int buflen, const int acl_type, 425 char *acl_inf, const int buflen, const int acl_type,
403 const struct nls_table *nls_codepage, int remap_special_chars); 426 const struct nls_table *nls_codepage, int remap_special_chars);
404extern int CIFSSMBSetPosixACL(const int xid, struct cifsTconInfo *tcon, 427extern int CIFSSMBSetPosixACL(const int xid, struct cifs_tcon *tcon,
405 const unsigned char *fileName, 428 const unsigned char *fileName,
406 const char *local_acl, const int buflen, const int acl_type, 429 const char *local_acl, const int buflen, const int acl_type,
407 const struct nls_table *nls_codepage, int remap_special_chars); 430 const struct nls_table *nls_codepage, int remap_special_chars);
408extern int CIFSGetExtAttr(const int xid, struct cifsTconInfo *tcon, 431extern int CIFSGetExtAttr(const int xid, struct cifs_tcon *tcon,
409 const int netfid, __u64 *pExtAttrBits, __u64 *pMask); 432 const int netfid, __u64 *pExtAttrBits, __u64 *pMask);
410extern void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb); 433extern void cifs_autodisable_serverino(struct cifs_sb_info *cifs_sb);
434extern bool CIFSCouldBeMFSymlink(const struct cifs_fattr *fattr);
435extern int CIFSCheckMFSymlink(struct cifs_fattr *fattr,
436 const unsigned char *path,
437 struct cifs_sb_info *cifs_sb, int xid);
438extern int mdfour(unsigned char *, unsigned char *, int);
439extern int E_md4hash(const unsigned char *passwd, unsigned char *p16);
440extern int SMBencrypt(unsigned char *passwd, const unsigned char *c8,
441 unsigned char *p24);
442
443/* asynchronous write support */
444struct cifs_writedata {
445 struct kref refcount;
446 enum writeback_sync_modes sync_mode;
447 struct work_struct work;
448 struct cifsFileInfo *cfile;
449 __u64 offset;
450 unsigned int bytes;
451 int result;
452 unsigned int nr_pages;
453 struct page *pages[1];
454};
455
456int cifs_async_writev(struct cifs_writedata *wdata);
457struct cifs_writedata *cifs_writedata_alloc(unsigned int nr_pages);
458void cifs_writedata_release(struct kref *refcount);
459
411#endif /* _CIFSPROTO_H */ 460#endif /* _CIFSPROTO_H */